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