- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/integrations/ui/entityselector/chatprovider.php
- Класс: BitrixImOpenlinesIntegrationsUIEntitySelectorChatProvider
- Вызов: ChatProvider::getChatIdsWithDates
private function getChatIdsWithDates(): array
{
if (!Loader::includeModule('im'))
{
return [];
}
if (User::getCurrent()->isExtranet())
{
return [];
}
$result = [];
$query = ChatTable::query()
->setSelect(['ID', 'RECENT_DATE_UPDATE' => 'RECENT.DATE_UPDATE'])
->setLimit(self::LIMIT)
->registerRuntimeField(
new Reference(
'RECENT',
RecentTable::class,
Join::on('this.ID', 'ref.ITEM_CID')->where('ref.USER_ID', User::getCurrent()->getId()),
['join_type' => Join::TYPE_INNER]
)
)
;
if (isset($this->preparedSearchString))
{
$query
->registerRuntimeField(
new Reference(
'OL_INDEX',
ChatIndexTable::class,
Join::on('this.ID', 'ref.CHAT_ID'),
['join_type' => Join::TYPE_INNER]
)
)
->whereMatch('OL_INDEX.SEARCH_TITLE', $this->preparedSearchString)
->setOrder(['RECENT.DATE_UPDATE' => 'ASC'])
;
}
elseif (isset($this->chatIds) && !empty($this->chatIds))
{
$query->whereIn('ID', $this->chatIds);
}
else
{
return [];
}
$raw = $query->fetchAll();
foreach ($raw as $row)
{
$result[(int)$row['ID']] = $row['RECENT_DATE_UPDATE'];
}
return $result;
}