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