- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat.php
- Класс: BitrixImV2Chat
- Вызов: Chat::sendMessageUsersAdd
protected function sendMessageUsersAdd(array $usersToAdd, bool $skipRecent = false): void
{
if (empty($usersToAdd))
{
return;
}
$currentUserId = $this->getContext()->getUserId();
$userCodes = [];
foreach ($usersToAdd as $userId)
{
$userCodes[] = "[USER={$userId}][/USER]";
}
$userCodesString = implode(', ', $userCodes);
$addsOnlyHimself = count($usersToAdd) === 1 && (isset($usersToAdd[$currentUserId]) || $currentUserId === 0);
if ($addsOnlyHimself)
{
$userIdToAdd = current($usersToAdd);
$userToAdd = ImV2EntityUserUser::getInstance($userIdToAdd);
$messageText = Loc::getMessage("IM_CHAT_SELF_JOIN_{$userToAdd->getGender()}", ['#USER_NAME#' => $userCodesString]);
}
elseif ($currentUserId === 0 && count($usersToAdd) > 1)
{
$messageText = Loc::getMessage('IM_CHAT_SELF_JOIN', ['#USERS_NAME#' => $userCodesString]);
}
else
{
$currentUser = ImV2EntityUserUser::getInstance($currentUserId);
$messageText = Loc::getMessage(
"IM_CHAT_JOIN_{$currentUser->getGender()}",
[
'#USER_1_NAME#' => htmlspecialcharsback($currentUser->getName()),
'#USER_2_NAME#' => $userCodesString
]
);
}
CIMChat::AddMessage([
"TO_CHAT_ID" => $this->getId(),
"MESSAGE" => $messageText,
"FROM_USER_ID" => $currentUserId,
"SYSTEM" => 'Y',
"RECENT_ADD" => $skipRecent ? 'N' : 'Y',
"PARAMS" => [
"CODE" => 'CHAT_JOIN',
"NOTIFY" => $this->getEntityType() === self::ENTITY_TYPE_LINE? 'Y': 'N',
],
"PUSH" => 'N',
"SKIP_USER_CHECK" => 'Y',
]);
}