• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/helper/filter.php
  • Класс: BitrixTasksHelperFilter
  • Вызов: Filter::processMainFilter
private function processMainFilter(): array
{
	$filter = [];

	$this->getDefaultRoleId();

	$groupId = (int)$this->getGroupId();
	if ($groupId > 0)
	{
		$filter['GROUP_ID'] = $groupId;
	}
	else if ($this->isFilterEmpty())
	{
		$filter['::SUBFILTER-ROLEID']['MEMBER'] = $this->getUserId();

		return $filter;
	}

	if ($this->getFilterFieldData('FIND') && !FilterLimit::isLimitExceeded())
	{
		$value = SearchIndex::prepareStringToSearch($this->getFilterFieldData('FIND'));
		if ($value !== '')
		{
			$filter['::SUBFILTER-FULL_SEARCH_INDEX']['*FULL_SEARCH_INDEX'] = $value;
		}
	}

	$filters = $this->getFilters();
	foreach ($filters as $fieldId => $filterRow)
	{
		if (array_key_exists('uf', $filterRow))
		{
			continue;
		}

		$rawFilter = [];
		switch ($filterRow['type'])
		{
			default:
				if ($field = $this->getFilterFieldData($filterRow['id']))
				{
					$rawFilter[$filterRow['id']] = $field;
				}
				break;

			case 'date':
				$rawFilter = $this->getDateFilterFieldData($filterRow);
				break;

			case 'number':
				$rawFilter = $this->getNumberFilterFieldData($filterRow);
				break;

			case 'list':
				$rawFilter = $this->getListFilterFieldData($filterRow);
				break;

			case 'dest_selector':
			case 'entity_selector':
				$rawFilter = $this->getSelectorFilterFieldData($filterRow);
				break;

			case 'string':
				if ($field = $this->getFilterFieldData($filterRow['id']))
				{
					$rawFilter["%{$filterRow['id']}"] = $field;
				}
				break;
		}

		if ($rawFilter)
		{
			$filter["::SUBFILTER-{$fieldId}"] = $rawFilter;
		}
	}

	$filter = $this->postProcessMainFilter($filter);

	return $filter;
}