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

	$userId = intval($userId);

	if ($this->user_id == $userId)
	{
		return false;
	}

	$strSql ="
		SELECT
			MAX(M.ID)+1 MAX_ID,
			M.CHAT_ID,
			R1.ID R1_ID,
			R1.START_ID R1_START_ID,
			R2.ID R2_ID,
			R2.START_ID R2_START_ID
		FROM b_im_relation R1
		INNER JOIN b_im_relation R2 on R2.CHAT_ID = R1.CHAT_ID
		INNER JOIN b_im_message M ON M.ID >= R1.START_ID AND M.CHAT_ID = R1.CHAT_ID
		WHERE
			R1.USER_ID = ".$this->user_id."
		AND R2.USER_ID = ".$userId."
		AND R1.MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'
		GROUP BY M.CHAT_ID, R1.ID, R1.START_ID, R2.ID, R2.START_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']); $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $counterService = new IMV2MessageCounterService($this->user_id); $counterService->deleteByChatId((int)$arRes['CHAT_ID']); if ($arRes['MAX_ID'] >= $arRes['R2_START_ID'] && $arRes['R2_START_ID'] > 0) { $messages = IMModelMessageTable::getList(array( 'select' => array('ID'), 'filter' => array( ' $arRes['R2_START_ID'], '=CHAT_ID' => $arRes['CHAT_ID'], ), )); while ($messageInfo = $messages->fetch()) { IMModelMessageTable::delete($messageInfo['ID']); } } $primaryKey = ['USER_ID' => $this->user_id, 'ITEM_TYPE' => IM_MESSAGE_PRIVATE, 'ITEM_ID' => $userId]; IMModelRecentTable::update($primaryKey, ['ITEM_MID' => 0]); } return true; }