• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/GroupChat.php
  • Класс: BitrixImV2ChatGroupChat
  • Вызов: GroupChat::add
public function add(array $params, ?Context $context = null): Result
{
	$result = new Result;

	$paramsResult = $this->prepareParams($params);
	if ($paramsResult->isSuccess())
	{
		$params = $paramsResult->getResult();
	}
	else
	{
		return $result->addErrors($paramsResult->getErrors());
	}

	$chat = new static($params);
	$chat->setExtranet($chat->checkIsExtranet())->setContext($context);
	$chat->save();

	if (!$chat->getChatId())
	{
		return $result->addError(new ChatError(ChatError::CREATION_ERROR));
	}

	$chat->addUsersToRelation([$chat->getAuthorId()], $params['MANAGERS'] ?? [], false);
	$chat->sendGreetingMessage($this->getContext()->getUserId());
	$chat->sendBanner($this->getContext()->getUserId());

	$usersToInvite = $chat->filterUsersToAdd($chat->getUserIds());
	$addedUsers = $usersToInvite;
	$addedUsers[$chat->getAuthorId()] = $chat->getAuthorId();

	$chat->addUsersToRelation($usersToInvite, $params['MANAGERS'] ?? [], false);
	$chat->sendMessageUsersAdd($usersToInvite);
	$chat->sendEventUsersAdd($addedUsers);
	$chat->sendDescriptionMessage();
	$chat->addIndex();

	$result->setResult([
		'CHAT_ID' => $chat->getChatId(),
		'CHAT' => $chat,
	]);

	self::cleanCache($chat->getChatId());

	return $result;
}