- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/integration/intranet/user.php
- Класс: BitrixImIntegrationIntranetUser
- Вызов: User::onInviteAccepted
static function onInviteAccepted(array $params): bool
{
if (!BitrixMainModuleManager::isModuleInstalled('intranet'))
{
return true;
}
$userData = $params['user_fields'];
if (in_array($userData['EXTERNAL_AUTH_ID'], BitrixMainUserTable::getExternalUserTypes()))
{
return true;
}
if ($userData['LAST_LOGIN'])
{
return true;
}
$userId = (int)$userData['ID'];
if ($userData['LAST_ACTIVITY_DATE'])
{
return true;
}
if (!self::isEmployee($userId))
{
return false;
}
CUser::SetLastActivityDate($userId);
CIMContactList::SetRecent(Array('ENTITY_ID' => $userId));
$userCount = BitrixMainUserTable::getActiveUsersCount();
if ($userCount > self::INVITE_MAX_USER_NOTIFY)
{
self::sendInviteEvent([
'ID' => $userId,
'INVITED' => false
]);
if (!CIMChat::GetGeneralChatAutoMessageStatus(CIMChat::GENERAL_MESSAGE_TYPE_JOIN))
{
return false;
}
return self::sendMessageToGeneralChat($userId, [
"MESSAGE" => Loc::getMessage('IM_INT_USR_JOIN_GENERAL_2'),
"PARAMS" => [
"CODE" => 'USER_JOIN_GENERAL',
]
]);
}
self::sendInviteEvent([
'ID' => $userId,
'INVITED' => false
]);
$orm = BitrixMainUserTable::getList([
'select' => ['ID'],
'filter' => [
'=ACTIVE' => 'Y',
'=IS_REAL_USER' => 'Y',
'!=UF_DEPARTMENT' => false
]
]);
while($row = $orm->fetch())
{
if ($row['ID'] == $userId)
{
continue;
}
$viewCommonUsers = (bool)CIMSettings::GetSetting(CIMSettings::SETTINGS, 'viewCommonUsers', $row['ID']);
if (!$viewCommonUsers)
{
continue;
}
CIMMessage::Add([
"TO_USER_ID" => $row['ID'],
"FROM_USER_ID" => $userId,
"MESSAGE" => Loc::getMessage('IM_INT_USR_JOIN_2'),
"SYSTEM" => 'Y',
"RECENT_SKIP_AUTHOR" => 'Y',
"MESSAGE_OUT" => IM_MAIL_SKIP,
"PARAMS" => [
"CODE" => 'USER_JOIN',
],
]);
}
return true;
}