• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/handlers.php
  • Класс: CIntranetEventHandlers
  • Вызов: CIntranetEventHandlers::OnAfterUserUpdate
static function OnAfterUserUpdate(&$fields)
{
	if(array_key_exists('UF_DEPARTMENT', $fields))
	{
		if(
			is_array(self::$userDepartmentCache[$fields['ID']])
			&& (
				array_diff($fields['UF_DEPARTMENT'], self::$userDepartmentCache[$fields['ID']])
				|| count($fields['UF_DEPARTMENT']) !== count(self::$userDepartmentCache[$fields['ID']])
			)
		)
		{
			$event = new Event("intranet", "onEmployeeDepartmentsChanged", array(
				'userId' => $fields['ID'],
				'oldDepartmentList' => self::$userDepartmentCache[$fields['ID']],
				'newDepartmentList' => $fields['UF_DEPARTMENT']
			));
			$event->send();

			if (defined('BX_COMP_MANAGED_CACHE'))
			{
				global $CACHE_MANAGER;

				$CACHE_MANAGER->ClearByTag('intranet_department_structure');
			}
		}

		if (
			$fields['ID'] > 0
			&& isset($fields['UF_DEPARTMENT'])
			&& is_array($fields['UF_DEPARTMENT'])
			&& !empty($fields['UF_DEPARTMENT'][0])
			&& isset($fields['ACTIVE'])
			&& $fields['ACTIVE'] === 'Y'
			&& (
				!isset($fields['EXTERNAL_AUTH_ID'])
				|| !in_array($fields['EXTERNAL_AUTH_ID'], BitrixMainUserTable::getExternalUserTypes())
			)
			&& (
				!is_array(self::$userDepartmentCache[$fields['ID']])
				|| !self::$userDepartmentCache[$fields['ID']][0]
				|| self::$userActiveCache === 'N'
			)
			&& !defined('INTR_SKIP_EVENT_ADD')
			&& !IsModuleInstalled('bitrix24')
		)
		{
			CIntranetNotify::NewUserMessage($fields['ID']);
		}
	}
}