- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_message.php
- Класс: CIMMessage
- Вызов: CIMMessage::SetUnReadMessage
public function SetUnReadMessage($fromUserId, $lastId)
{
global $DB;
$fromUserId = intval($fromUserId);
if ($fromUserId <= 0)
return false;
$lastId = intval($lastId);
if (intval($lastId) <= 0)
return false;
/*$result = BitrixImV2EntityUserUser::getInstance($this->user_id)
->getChatWith($fromUserId)
?->unreadToMessage(new BitrixImV2Message($lastId))
;
return $result?->isSuccess() ?? false;*/
$strSql = "
SELECT M.CHAT_ID
FROM b_im_relation RF
INNER JOIN b_im_relation RT on RF.CHAT_ID = RT.CHAT_ID
INNER JOIN b_im_message M ON M.ID = ".$lastId." AND M.CHAT_ID = RT.CHAT_ID
WHERE RT.USER_ID = ".$this->user_id."
and RF.USER_ID = ".$fromUserId."
and RT.MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'
GROUP BY M.CHAT_ID";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($arRes = $dbRes->Fetch())
{
$relation = self::SetLastIdForUnread($arRes['CHAT_ID'], $this->user_id, $lastId);
if ($relation)
{
BitrixMainApplication::getConnection()->query(
"UPDATE b_im_recent SET DATE_UPDATE = NOW() WHERE USER_ID = ".$this->user_id." AND ITEM_CID = ".intval($arRes['CHAT_ID'])
);
CIMMessenger::SpeedFileDelete($this->user_id, IM_SPEED_MESSAGE);
if (CModule::IncludeModule("pull"))
{
BitrixPullEvent::add($this->user_id, Array(
'module_id' => 'im',
'command' => 'unreadMessage',
'expiry' => 3600,
'params' => Array(
'dialogId' => $fromUserId,
'chatId' => intval($arRes['CHAT_ID']),
'userId' => $fromUserId,
'date' => new BitrixMainTypeDateTime(),
'counter' => (int)$relation['COUNTER'],
'muted' => false,
'unread' => BitrixImRecent::isUnread($this->user_id, IM_MESSAGE_PRIVATE, $fromUserId),
'unreadTo' => $lastId,
),
'push' => Array('badge' => 'Y'),
'extra' => BitrixImCommon::getPullExtra()
));
BitrixPullEvent::add($fromUserId, Array(
'module_id' => 'im',
'command' => 'unreadMessageOpponent',
'expiry' => 3600,
'params' => Array(
'dialogId' => $this->user_id,
'chatId' => intval($arRes['CHAT_ID']),
'userId' => $this->user_id,
'chatMessageStatus' => $relation['CHAT_MESSAGE_STATUS'],
'unreadTo' => $lastId,
),
'extra' => BitrixImCommon::getPullExtra()
));
}
return true;
}
}
return false;
}