- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Integration/UI/EntitySelector/RecentProvider.php
- Класс: BitrixImV2IntegrationUIEntitySelectorRecentProvider
- Вызов: RecentProvider::getChatIdsWithDate
private function getChatIdsWithDate(): array
{
$result = [];
$query = ChatTable::query()
->setSelect(['ID', 'RECENT_DATE_UPDATE' => 'RECENT.DATE_UPDATE', 'DATE_CREATE'])
->setLimit(self::LIMIT)
->registerRuntimeField(
new Reference(
'RECENT',
RecentTable::class,
Join::on('this.ID', 'ref.ITEM_CID')->where('ref.USER_ID', $this->getContext()->getUserId()),
['join_type' => Join::TYPE_LEFT]
)
)
->where($this->getRecentFilter())
->whereIn('TYPE', [Chat::IM_TYPE_CHAT, Chat::IM_TYPE_OPEN])
;
if (isset($this->preparedSearchString))
{
$query
->whereMatch('INDEX.SEARCH_TITLE', $this->preparedSearchString)
->setOrder(['RECENT.DATE_UPDATE' => 'DESC', 'DATE_CREATE' => 'DESC'])
;
}
elseif (isset($this->chatIds) && !empty($this->chatIds))
{
$query->whereIn('ID', $this->chatIds);
}
else
{
return [];
}
$raw = $query->fetchAll();
foreach ($raw as $row)
{
$dialogId = 'chat' . $row['ID'];
$result[$dialogId] = [
'DIALOG_ID' => $dialogId,
'DATE_UPDATE' => $row['RECENT_DATE_UPDATE'],
'DATE_CREATE' => $row['DATE_CREATE'],
];
}
return $result;
}