• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/handlers.php
  • Класс: CIntranetEventHandlers
  • Вызов: CIntranetEventHandlers::OnBeforeProlog
static function OnBeforeProlog()
{
	$conditionList = array();
	if (BitrixMainModuleManager::isModuleInstalled('sale'))
	{
		$conditionList[] = array(
			'PATTERN' => 'EXTERNAL_AUTH_ID',
			'VALUE' => "WHEN %s = 'saleanonymous' THEN 'sale'"
		);
	}
	if (BitrixMainModuleManager::isModuleInstalled('imconnector'))
	{
		$conditionList[] = array(
			'PATTERN' => 'EXTERNAL_AUTH_ID',
			'VALUE' => "WHEN %s = 'imconnector' THEN 'imconnector'"
		);
	}
	if (BitrixMainModuleManager::isModuleInstalled('im'))
	{
		$conditionList[] = array(
			'PATTERN' => 'EXTERNAL_AUTH_ID',
			'VALUE' => "WHEN %s = 'bot' THEN 'bot'"
		);
	}
	if (BitrixMainModuleManager::isModuleInstalled('mail'))
	{
		$conditionList[] = array(
			'PATTERN' => 'EXTERNAL_AUTH_ID',
			'VALUE' => "WHEN %s = 'email' THEN 'email'"
		);
	}
	if (BitrixMainModuleManager::isModuleInstalled('extranet'))
	{
		$conditionList[] = array(
			'PATTERN' => 'UF_DEPARTMENT',
			'VALUE' => "WHEN %s = 'a:0:{}' THEN 'extranet'"
		);
		$conditionList[] = array(
			'PATTERN' => 'UF_DEPARTMENT',
			'VALUE' => "WHEN %s IS NULL THEN 'extranet'"
		);
	}

	$condition = "CASE ";
	$patternList = array();

	foreach($conditionList as $conditionFields)
	{
		$condition .= ' '.$conditionFields['VALUE'].' ';
		$patternList[] = $conditionFields['PATTERN'];
	}
	$condition .= "ELSE 'employee' END";

	BitrixMainUserTable::getEntity()->addField(
		new BitrixMainEntityExpressionField('USER_TYPE',
			$condition,
			$patternList
		)
	);
}