- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/NotifyChat.php
- Класс: BitrixImV2ChatNotifyChat
- Вызов: NotifyChat::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());
}
$blockedExternalAuthId = BitrixImModelUserTable::filterExternalUserTypes(['replica']);
$res = BitrixImModelUserTable::getById($params['AUTHOR_ID']);
if (
!($userData = $res->fetch())
|| $userData['ACTIVE'] == 'N'
|| in_array($userData['EXTERNAL_AUTH_ID'], $blockedExternalAuthId, true)
)
{
return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
}
$chat = new static($params);
$chat->save();
if ($chat->getChatId() <= 0)
{
return $result->addError(new ChatError(ChatError::CREATION_ERROR));
}
BitrixImModelRelationTable::add([
'CHAT_ID' => $chat->getChatId(),
'MESSAGE_TYPE' => IM_MESSAGE_SYSTEM,
'USER_ID' => $params['AUTHOR_ID'],
]);
return $result->setResult([
'CHAT_ID' => $chat->getChatId(),
'CHAT' => $chat,
]);
}