• Модуль: 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; }