• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/ui/filter.php
  • Класс: BitrixTasksUiFilter
  • Вызов: Filter::fillFilter
static function fillFilter(array $filter = array())
{
	$grid = static::getGrid();
	$gridFilter = static::getFilter();
	$search = $grid->GetFilter($gridFilter);
	if (!isset($search['FILTER_APPLIED']))
	{
		$search = array();
	}
	if (!empty($search))
	{
		foreach ($gridFilter as $key => $item)
		{
			//fill filter by type
			if ($item['type'] == 'date')
			{
				if (isset($search[$key . '_from']) && $search[$key . '_from']!='')
				{
					$filter['>='.$key] = $search[$key . '_from'] . ' 00:00:00';
				}
				if (isset($search[$key . '_to']) && $search[$key . '_to']!='')
				{
					$filter['<='.$key] = $search[$key . '_to'] . ' 23:59:00';
				}
			}
			elseif ($item['type'] == 'number')
			{
				if (isset($search[$key . '_from']) && $search[$key . '_from'] != '')
				{
					$filter['>'.$key] = $search[$key . '_from'];
				}
				if (isset($search[$key . '_to']) && $search[$key . '_to'] != '')
				{
					$filter['<'.$key] = $search[$key . '_to'];
				}
				if (
					isset($filter['>'.$key]) && isset($filter['<'.$key]) &&
					$filter['>'.$key] == $filter['<'.$key]
				)
				{
					$filter[$key] = $filter['<'.$key];
					unset($filter['>'.$key], $filter['<'.$key]);
				}
			}
			elseif (isset($search[$key]))
			{
				if (substr($search[$key], 0, 1) == '@')
				{
					$search[$key] = explode(',', substr($search[$key], 1));
				}

				if (isset($gridFilter[$key]['flt_key']))
				{
					$filter[$gridFilter[$key]['flt_key']] = $search[$key];
				}
				else
				{
					$filter[$key] = $search[$key];
				}
			}
		}
		//search index
		if (isset($search['FIND']) && trim($search['FIND']) != '')
		{
			$filter['*%SEARCH_INDEX'] = trim($search['FIND']);
		}
	}

	// counters
	if (isset($filter['PROBLEM']))
	{
		$deadline = new DateTime;

		$filter['REAL_STATUS'] = array(
			CTasks::STATE_NEW,
			CTasks::STATE_PENDING,
			CTasks::STATE_IN_PROGRESS
		);

		switch ($filter['PROBLEM'])
		{
			case 'NEW':
				$filter['REAL_STATUS'] = CTasks::STATE_NEW;
				$filter['!REFERENCE:RESPONSIBLE_ID'] = 'CREATED_BY';
				break;
			case 'WO_DEADLINE':
				$filter['=DEADLINE'] = '';
				$filter['!REFERENCE:RESPONSIBLE_ID'] = 'CREATED_BY';
				break;
			case 'EXPIRED':
				$filter['DEADLINE'] = $deadline;
				$filter['add('+' . (24 - date('G')) . ' hours');
				break;
		}
	}

	return $filter;
}