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