• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Delete/DeleteService.php
  • Класс: BitrixImV2MessageDeleteDeleteService
  • Вызов: DeleteService::updateRecent
private function updateRecent(): void
{
	if ($this->chatLastMessage && (int)$this->chatLastMessage['ID'] !== $this->message->getId())
	{
		$update = [
			'DATE_MESSAGE' => $this->chatLastMessage['DATE_CREATE'],
			'DATE_UPDATE' => $this->chatLastMessage['DATE_CREATE'],
			'ITEM_MID' => $this->chatLastMessage['ID'] ?? 0,
		];

		if ($this->chat instanceof ChatPrivateChat || $this->chat->getType() === Chat::IM_TYPE_PRIVATE)
		{
			$userId = $this->getContext()->getUserId();
			$opponentId = $this->chat->getCompanion($userId)->getId();
			RecentTable::updateByFilter(
				[
					'=USER_ID' => $userId,
					'=ITEM_TYPE' => Chat::IM_TYPE_PRIVATE,
					'=ITEM_ID' => $opponentId
				],
				$update
			);
			RecentTable::updateByFilter(
				[
					'=USER_ID' => $opponentId,
					'=ITEM_TYPE' => Chat::IM_TYPE_PRIVATE,
					'=ITEM_ID' => $userId
				],
				$update
			);
		}
		else
		{
			RecentTable::updateByFilter(
				['=ITEM_TYPE' => $this->chat->getType(), '=ITEM_ID' => $this->chat->getId()],
				$update
			);
		}
	}
}