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