- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/project/provider.php
- Класс: BitrixTasksInternalsProjectProvider
- Вызов: Provider::getQueryWithFilter
public function getQueryWithFilter(Query $query, array $filter, string $presetId): Query
{
$filterValues = $filter;
if (array_key_exists('ID', $filterValues))
{
$ids = (is_array($filterValues['ID']) ? $filterValues['ID'] : [$filterValues['ID']]);
$ids = array_map('intval', $ids);
$ids = array_filter($ids);
if (!empty($ids))
{
count($ids) > 1
? $query->whereIn('ID', $ids)
: $query->where('ID', $ids[0])
;
}
unset($filterValues['ID']);
}
if ($presetId)
{
$filterId = $this->getFilterId();
$presets = $this->getPresets();
if (array_key_exists($presetId, $presets))
{
$filterOptions = new Options($filterId, $presets);
$filterSettings = (
$filterOptions->getFilterSettings($presetId)
?? $filterOptions->getDefaultPresets()[$presetId]
);
$filterValues = array_merge(
$filterValues,
Options::fetchFieldValuesFromFilterSettings($filterSettings, [], $this->getFilterSourceFields())
);
}
}
return $this->addQueryFilter($query, $filterValues);
}