• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/MessageCollection.php
  • Класс: BitrixImV2MessageCollection
  • Вызов: MessageCollection::processFilters
static function processFilters(Query $query, array $filter, array $order): void
{
	if (isset($filter['CHAT_ID']))
	{
		$query->where('CHAT_ID', $filter['CHAT_ID']);
	}

	if (isset($filter['SEARCH_MESSAGE']) && mb_strlen($filter['SEARCH_MESSAGE']) > 2)
	{
		$query->whereLike('MESSAGE', "%{$filter['SEARCH_MESSAGE']}%");
	}

	if (isset($filter['START_ID']) && (int)$filter['START_ID'] > 0)
	{
		$query->where('ID', '>=', $filter['START_ID']);
	}

	if (isset($filter['LAST_ID']))
	{
		$operator = $order['ID'] === 'DESC' ? '<' : '>';
		$query->where('ID', $operator, $filter['LAST_ID']);
	}

	if (isset($filter['DATE_FROM']))
	{
		$query->where('DATE_CREATE', '>=', $filter['DATE_FROM']);
	}

	if (isset($filter['DATE_TO']))
	{
		$query->where('DATE_CREATE', '<=', $filter['DATE_TO']);
	}

	if (isset($filter['DATE']))
	{
		$query->where('DATE_CREATE', '>=', $filter['DATE']);

		$to = clone $filter['DATE'];
		$to->add('1 DAY');

		$query->where('DATE_CREATE', '<=', $to);
	}
}