3namespace Bitrix\Im\V2\Message;
5use Bitrix\Im\Model\MessageTable;
6use Bitrix\Im\V2\Common\ContextCustomer;
7use Bitrix\Im\V2\Message;
8use Bitrix\Im\V2\MessageCollection;
9use Bitrix\Im\V2\Result;
10use Bitrix\Im\V2\Service\Context;
21 $this->message = $message;
28 $messageId = $this->message->getMessageId() ?? 0;
29 $chat = $this->message->getChat();
31 $startId = $chat->getStartId();
37 $idsBefore = MessageTable::query()
40 ->where(
'ID',
'>=', $startId)
41 ->where(
'CHAT_ID', $chat->getChatId())
42 ->setOrder([
'DATE_CREATE' =>
'DESC',
'ID' =>
'DESC'])
47 $idsAfter = MessageTable::query()
50 ->where(
'CHAT_ID', $chat->getChatId())
51 ->setOrder([
'DATE_CREATE' =>
'ASC',
'ID' =>
'ASC'])
59 $ids = array_merge($idsBefore, $targetMessage, $idsAfter);
71 $ormCollection = MessageTable::query()->whereIn(
'ID', $ids)->setSelect(
$select)->fetchCollection();
78 MessageTable::deleteBatch([
'=CHAT_ID' => $chatId]);
80 $readService->deleteByChatId($chatId);
87 $wasFilteredByTariffRestrictions = $rest[
'tariffRestrictions'][
'isHistoryLimitExceeded'] ??
false;
88 $rest[
'hasPrevPage'] =
89 $this->getCountHigherMessages(
$messages, $this->message->getId() ?? 0) >= $range
90 && !$wasFilteredByTariffRestrictions
92 $lastSelectedId = $this->getLastSelectedId(
$messages);
93 $lastMessageIdInChat = $this->message->getChat()->getLastMessageId();
94 $rest[
'hasNextPage'] = $lastSelectedId > 0 && $lastMessageIdInChat > 0 && $lastSelectedId < $lastMessageIdInChat;
114 private function getLastSelectedId(MessageCollection
$messages): int
125 return self::MAX_MESSAGES_COUNT_FOR_MULTIPLE_ACTIONS;
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getMultipleActionMessageLimit()
getMessageContext(int $range, array $select=[])
const MAX_MESSAGES_COUNT_FOR_MULTIPLE_ACTIONS
static deleteByChatId(int $chatId, int $userId)
__construct(Message $message)
fillContextPaginationData(array $rest, MessageCollection $messages, int $range)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)