• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_history.php
  • Класс: CIMHistory
  • Вызов: CIMHistory::HideAllChatMessage
function HideAllChatMessage($chatId)
{
	global $DB;
	$chatId = intval($chatId);

	$limitById = '';
	$ar = CIMChat::GetRelationById($chatId, $this->user_id, true, false);
	if ($ar && $ar['START_ID'] > 0)
	{
		$limitById = 'AND M.ID >= '.intval($ar['START_ID']);
	}

	$strSql ="
		SELECT
			MAX(M.ID)+1 MAX_ID,
			R1.ID R1_ID
		FROM b_im_relation R1
		INNER JOIN b_im_message M ON M.CHAT_ID = R1.CHAT_ID
		WHERE
			R1.CHAT_ID = ".$chatId."
			AND R1.USER_ID = ".$this->user_id."
			".$limitById."
		GROUP BY M.CHAT_ID, R1.ID
	";
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($arRes = $dbRes->Fetch()) { $strSql = "UPDATE b_im_relation SET START_ID = ".intval($arRes['MAX_ID'])." WHERE ID = ".intval($arRes['R1_ID']); $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $counterService = new IMV2MessageCounterService($this->user_id); $counterService->deleteByChatId((int)$arRes['CHAT_ID']); $chatType = $ar ? $ar['MESSAGE_TYPE'] : IM_MESSAGE_CHAT; $primaryKey = ['USER_ID' => $this->user_id, 'ITEM_TYPE' => $chatType, 'ITEM_ID' => $chatId]; IMModelRecentTable::update($primaryKey, ['ITEM_MID' => 0]); } return true; }