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