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