- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/NotifyChat.php
- Класс: BitrixImV2ChatNotifyChat
- Вызов: NotifyChat::find
static function find(array $params = [], ?Context $context = null): Result
{
$result = new Result;
if (empty($params['TO_USER_ID']))
{
$context = $context ?? Locator::getContext();
$params['TO_USER_ID'] = $context->getUserId();
}
$params['TO_USER_ID'] = (int)$params['TO_USER_ID'];
if ($params['TO_USER_ID'] <= 0)
{
return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
}
$blockedExternalAuthId = BitrixImModelUserTable::filterExternalUserTypes(['replica']);
$res = BitrixImModelUserTable::getById($params['TO_USER_ID']);
if (
!($userData = $res->fetch())
|| $userData['ACTIVE'] == 'N'
|| in_array($userData['EXTERNAL_AUTH_ID'], $blockedExternalAuthId, true)
)
{
return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
}
$connection = BitrixMainApplication::getConnection();
$res = $connection->query("
SELECT *
FROM b_im_chat
WHERE AUTHOR_ID = " . $params['TO_USER_ID'] . " AND TYPE = '" . self::IM_TYPE_SYSTEM . "'
ORDER BY ID ASC
");
if ($row = $res->fetch())
{
$result->setResult([
'ID' => (int)$row['ID'],
'TYPE' => $row['TYPE'],
'ENTITY_TYPE' => $row['ENTITY_TYPE'],
'ENTITY_ID' => $row['ENTITY_ID'],
]);
}
return $result;
}