- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/GeneralChat.php
- Класс: BitrixImV2ChatGeneralChat
- Вызов: GeneralChat::add
public function add(array $params, ?Context $context = null): Result
{
$result = new Result;
$generalChatResult = self::find();
if ($generalChatResult->hasResult())
{
$generalChat = new GeneralChat(['ID' => $generalChatResult->getResult()['ID']]);
return $result->setResult([
'CHAT_ID' => $generalChat->getChatId(),
'CHAT' => $generalChat,
]);
}
$params = [
'TYPE' => self::IM_TYPE_OPEN,
'ENTITY_TYPE' => self::ENTITY_TYPE_GENERAL,
'COLOR' => 'AZURE',
'TITLE' => Loc::getMessage('IM_CHAT_GENERAL_TITLE'),
'DESCRIPTION' => Loc::getMessage('IM_CHAT_GENERAL_DESCRIPTION'),
'AUTHOR_ID' => 0
];
$chat = new static($params);
$chat->setExtranet(false);
$chat->save();
if (!$chat->getChatId())
{
return $result->addError(new ChatError(ChatError::CREATION_ERROR));
}
$chat->sendBanner();
$adminIds = [];
if (Loader::includeModule('bitrix24'))
{
$adminIds = CBitrix24::getAllAdminId();
}
foreach ($this->getUsersForInstall() as $user)
{
$relation = new Relation();
$relation->setChatId($chat->getChatId());
$relation->setUserId((int)$user['ID']);
$relation->setManager(in_array((int)$user['ID'], $adminIds, true));
$relation->setMessageType(self::IM_TYPE_OPEN);
$relation->setStatus(IM_STATUS_READ);
$relation->save();
}
$chat->addIndex();
self::linkGeneralChat($chat->getChatId());
$result->setResult([
'CHAT_ID' => $chat->getChatId(),
'CHAT' => $chat,
]);
self::cleanGeneralChatCache(self::ID_CACHE_ID);
self::cleanGeneralChatCache(self::MANAGERS_CACHE_ID);
self::cleanCache($chat->getChatId());
return $result;
}