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