- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat.php
- Класс: BitrixImV2Chat
- Вызов: Chat::find
static function find(array $params, ?Context $context = null): Result
{
$result = new Result;
if ($params['CHAT_ID'] <= 0)
{
return $result->addError(new ChatError(ChatError::WRONG_PARAMETER));
}
$connection = BitrixMainApplication::getConnection();
$context = $context ?? Locator::getContext();
if ($context->getUserId() == 0)
{
$res = $connection->query("
SELECT
C.ID CHAT_ID,
C.PARENT_ID CHAT_PARENT_ID,
C.PARENT_MID CHAT_PARENT_MID,
C.TITLE CHAT_TITLE,
C.AUTHOR_ID CHAT_AUTHOR_ID,
C.TYPE CHAT_TYPE,
C.AVATAR CHAT_AVATAR,
C.COLOR CHAT_COLOR,
C.ENTITY_TYPE CHAT_ENTITY_TYPE,
C.ENTITY_ID CHAT_ENTITY_ID,
C.ENTITY_DATA_1 CHAT_ENTITY_DATA_1,
C.ENTITY_DATA_2 CHAT_ENTITY_DATA_2,
C.ENTITY_DATA_3 CHAT_ENTITY_DATA_3,
C.EXTRANET CHAT_EXTRANET,
C.PREV_MESSAGE_ID CHAT_PREV_MESSAGE_ID,
'1' RID,
'Y' IS_MANAGER
FROM b_im_chat C
WHERE C.ID = ".(int)$params['CHAT_ID']."
");
}
else
{
if (empty($params['FROM_USER_ID']))
{
$params['FROM_USER_ID'] = $context->getUserId();
}
$params['FROM_USER_ID'] = (int)$params['FROM_USER_ID'];
if ($params['FROM_USER_ID'] <= 0)
{
return $result->addError(new ChatError(ChatError::WRONG_SENDER));
}
$res = $connection->query("
SELECT
C.ID CHAT_ID,
C.PARENT_ID CHAT_PARENT_ID,
C.PARENT_MID CHAT_PARENT_MID,
C.TITLE CHAT_TITLE,
C.AUTHOR_ID CHAT_AUTHOR_ID,
C.TYPE CHAT_TYPE,
C.AVATAR CHAT_AVATAR,
C.COLOR CHAT_COLOR,
C.ENTITY_TYPE CHAT_ENTITY_TYPE,
C.ENTITY_ID CHAT_ENTITY_ID,
C.ENTITY_DATA_1 CHAT_ENTITY_DATA_1,
C.ENTITY_DATA_2 CHAT_ENTITY_DATA_2,
C.ENTITY_DATA_3 CHAT_ENTITY_DATA_3,
C.EXTRANET CHAT_EXTRANET,
C.PREV_MESSAGE_ID CHAT_PREV_MESSAGE_ID,
R.USER_ID RID,
R.MANAGER IS_MANAGER
FROM b_im_chat C
LEFT JOIN b_im_relation R
ON R.CHAT_ID = C.ID
AND R.USER_ID = ".$params['FROM_USER_ID']."
WHERE C.ID = ".(int)$params['CHAT_ID']."
");
}
if ($row = $res->fetch())
{
$result->setResult([
'ID' => (int)$row['CHAT_ID'],
'TYPE' => $row['CHAT_TYPE'],
'ENTITY_TYPE' => $row['CHAT_ENTITY_TYPE'],
'ENTITY_ID' => $row['CHAT_ENTITY_ID'],
/*'RELATIONS' => [
(int)$row['RID'] => [
'CHAT_ID' => (int)$row['CHAT_ID'],
'USER_ID' => (int)$row['RID'],
'IS_MANAGER' => $row['IS_MANAGER'],
]
]*/
]);
}
return $result;
}