• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/Configuration/EventHandler.php
  • Класс: BitrixImConfigurationEventHandler
  • Вызов: EventHandler::onAfterUserUpdate
static function onAfterUserUpdate($fields): void
{
	if (
		!isset($fields['UF_DEPARTMENT'])
		|| !Loader::includeModule('intranet')
		|| !Manager::isSettingsMigrated()
	)
	{
		return;
	}

	$userId = (int)$fields['ID'];

	if (!is_array($fields['UF_DEPARTMENT']))
	{
		$departmentId = $fields['UF_DEPARTMENT'];
		if (!is_numeric($departmentId))
		{
			return;
		}

		$accessCodes = self::findAllAccessCodes((int)$departmentId);

		$topDepartmentId = Department::getTopDepartmentId();
		$baseAccessCode = $topDepartmentId ? 'DR' . $topDepartmentId : 'AU';

		$accessCodes = !empty($accessCodes) ? $accessCodes : [$baseAccessCode];

		$presetId = self::getTopSortGroupIdByAccessCodes($accessCodes);

		self::updateUserGroups($presetId, $userId);

		return;
	}

	if (!$fields['UF_DEPARTMENT'][0])
	{
		return;
	}

	$presetId = self::findTopSortPresetId($fields['UF_DEPARTMENT']);
	self::updateUserGroups($presetId, $userId);
}