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