• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Delete/DeleteService.php
  • Класс: BitrixImV2MessageDeleteDeleteService
  • Вызов: DeleteService::getChatPreviousMessages
private function getChatPreviousMessages(): ?array
{
	$lastChatMessageId = $this->chat->getLastMessageId();
	$prevChatMessageId = $this->chat->getPrevMessageId();

	if (
		!in_array(
			$this->message->getId(),
			[
				$lastChatMessageId,
				$prevChatMessageId,
				0
			],
			true
		)
	)
	{
		return $this->message->toArray();
	}

	$lastMessages = MessageTable::query()
		->setSelect(['ID', 'DATE_CREATE', 'MESSAGE'])
		->addFilter('CHAT_ID', $this->chat->getChatId())
		->setOrder(['ID' => 'DESC'])
		->setLimit(3)
		->fetchAll();

	$this->chatPrevMessageId = (int)($lastMessages[2]['ID'] ?? 0);
	$nullMessage = ['ID' => 0, 'DATE_CREATE' => (new DateTime()), 'MESSAGE' => ''];
	if ($this->message->getId() === $lastChatMessageId)
	{
		$this->needUpdateRecent = true;
		$this->chatLastMessage = $lastMessages[1] ?? $nullMessage;
	}
	else
	{
		$this->chatLastMessage = $lastMessages[0] ?? $nullMessage;
	}

	return $this->chatLastMessage;
}