- Модуль: 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);
}