- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/helper/filter.php
- Класс: BitrixTasksHelperFilter
- Вызов: Filter::getListFilterFieldData
private function getListFilterFieldData($row): array
{
$filter = [];
$rowId = $row['id'];
$field = $this->getFilterFieldData($rowId, []);
switch ($rowId)
{
case 'STATUS':
if (!empty($field))
{
$filter['REAL_STATUS'] = $field;
}
break;
case 'PROBLEM':
switch ($field)
{
case CounterType::TYPE_WO_DEADLINE:
$filter['DEADLINE'] = '';
break;
case CounterType::TYPE_EXPIRED:
if ($this->getGroupId() > 0)
{
$filter['MEMBER'] = $this->getUserId();
}
$filter['<=DEADLINE'] = CounterDeadline::getExpiredTime();
$filter['IS_MUTED'] = 'N';
$filter['REAL_STATUS'] = [Status::PENDING, Status::IN_PROGRESS];
break;
case CounterType::TYPE_EXPIRED_CANDIDATES:
$filter['>=DEADLINE'] = CounterDeadline::getExpiredTime();
$filter['<=DEADLINE'] = CounterDeadline::getExpiredSoonTime();
break;
case CounterType::TYPE_WAIT_CTRL:
$filter['REAL_STATUS'] = Status::SUPPOSEDLY_COMPLETED;
$filter['!RESPONSIBLE_ID'] = $this->getUserId();
$filter['=CREATED_BY'] = $this->getUserId();
break;
case CounterType::TYPE_NEW:
$filter['VIEWED'] = 0;
$filter['VIEWED_BY'] = $this->getUserId();
break;
case CounterType::TYPE_DEFERRED:
$filter['REAL_STATUS'] = Status::DEFERRED;
break;
case CounterType::TYPE_NEW_COMMENTS:
if ($this->getGroupId() > 0)
{
$filter['MEMBER'] = $this->getUserId();
}
$filter['WITH_NEW_COMMENTS'] = 'Y';
$filter['IS_MUTED'] = 'N';
break;
case CounterType::TYPE_PROJECT_EXPIRED:
$filter['PROJECT_EXPIRED'] = 'Y';
break;
case CounterType::TYPE_PROJECT_NEW_COMMENTS:
$filter['PROJECT_NEW_COMMENTS'] = 'Y';
break;
default:
break;
}
break;
case 'ROLEID':
switch ($field)
{
case 'view_role_responsible':
$filter['=RESPONSIBLE_ID'] = $this->getUserId();
break;
case 'view_role_originator':
$filter['=CREATED_BY'] = $this->getUserId();
$filter['!REFERENCE:RESPONSIBLE_ID'] = 'CREATED_BY';
break;
case 'view_role_accomplice':
$filter['=ACCOMPLICE'] = $this->getUserId();
break;
case 'view_role_auditor':
$filter['=AUDITOR'] = $this->getUserId();
break;
default:
if (!$this->getGroupId())
{
$filter['MEMBER'] = $this->getUserId();
}
break;
}
break;
case 'PARAMS':
if ($field)
{
foreach ($field as $item)
{
switch ($item)
{
case 'FAVORITE':
$filter['FAVORITE'] = 'Y';
break;
case 'MARKED':
$filter['!MARK'] = false;
break;
case 'OVERDUED':
$filter['OVERDUED'] = 'Y';
break;
case 'IN_REPORT':
$filter['ADD_IN_REPORT'] = 'Y';
break;
case 'SUBORDINATE':
// Don't set SUBORDINATE_TASKS for admin, it will cause all tasks to be showed
if (!User::isSuper())
{
$filter['SUBORDINATE_TASKS'] = 'Y';
}
break;
case 'ANY_TASK':
$filter['::REMOVE-MEMBER'] = true; // hack
break;
}
}
}
break;
default:
if ($field)
{
$filter[$rowId] = $field;
}
break;
}
return $filter;
}