3namespace Bitrix\Im\V2\Message;
5use Bitrix\Im\Model\LastMessageTable;
6use Bitrix\Im\V2\Message;
13 private array $chatIds;
14 private ?
array $lastMessages =
null;
18 $this->chatIds = $chatIds;
28 LastMessageTable::merge(
30 'USER_ID' =>
$message->getAuthorId(),
33 'DATE_CREATE' =>
$message->getDateCreate(),
37 'DATE_CREATE' =>
$message->getDateCreate(),
39 [
'CHAT_ID',
'USER_ID']
42 static::deleteExtra(
$message->getChatId());
49 return $this->lastMessages[$chatId][
'USERS'] ?? [];
52 protected function fill(): void
54 if (isset($this->lastMessages))
59 $this->lastMessages = [];
61 if (empty($this->chatIds))
66 $raw = LastMessageTable::query()
67 ->setSelect([
'USER_ID',
'CHAT_ID',
'MESSAGE_ID',
'DATE_CREATE'])
68 ->whereIn(
'CHAT_ID', $this->chatIds)
69 ->setOrder([
'DATE_CREATE' =>
'DESC'])
73 foreach ($raw as $row)
75 $chatId = (int)$row[
'CHAT_ID'];
76 if (
count($this->lastMessages[$chatId][
'USERS'] ?? []) < self::COUNT_OF_LAST_USERS)
78 $this->lastMessages[$chatId][
'USERS'][] = (int)$row[
'USER_ID'];
85 $extraIds = LastMessageTable::query()
87 ->where(
'CHAT_ID', $chatId)
88 ->setOrder([
'DATE_CREATE' =>
'DESC'])
89 ->setLimit(self::LIMIT_DELETE_BATCH)
90 ->setOffset(self::COUNT_OF_LAST_USERS)
100 LastMessageTable::deleteByFilter([
'=ID' => $extraIds]);
getUsersByChatId(int $chatId)
__construct(array $chatIds)
static deleteExtra(int $chatId)
static insert(Message $message)
const COUNT_OF_LAST_USERS
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"