• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/Configuration/EventHandler.php
  • Класс: BitrixImConfigurationEventHandler
  • Вызов: EventHandler::onAfterUserAdd
static function onAfterUserAdd($fields): void
{
	// failed registration or settings were not converted
	if (
		$fields['RESULT'] === false
		|| !Manager::isSettingsMigrated()
	)
	{
		return;
	}

	$externalAuthId = $fields['EXTERNAL_AUTH_ID'] ?? null;
	if (in_array($externalAuthId, UserTable::getExternalUserTypes(), true))
	{
		return;
	}

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

	// there are no departments in BUS
	if (!isset($fields['UF_DEPARTMENT']) || !Loader::includeModule('intranet'))
	{
		self::setGroup($userId, Configuration::getDefaultPresetId());

		return;
	}

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

		if (!is_numeric($departmentId))
		{
			self::setGroup($userId, Configuration::getDefaultPresetId());

			return;
		}

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

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

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

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

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

		return;
	}

	// no department selected
	if (!$fields['UF_DEPARTMENT'][0])
	{
		self::setGroup($userId, Configuration::getDefaultPresetId());

		return;
	}

	$presetId = self::findTopSortPresetId($fields['UF_DEPARTMENT']);

	self::setGroup($userId, $presetId);
}