- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasklistctrl.php
- Класс: CTaskListCtrl
- Вызов: CTaskListCtrl::getFilterFor
static function getFilterFor($userId, $userRoleId, $taskCategoryId)
{
$subfilterIndex = 0;
$arFilter = array(
'::LOGIC' => 'AND'
);
switch ($userRoleId)
{
case CTaskListState::VIEW_ROLE_RESPONSIBLE:
$arFilter['RESPONSIBLE_ID'] = $userId;
break;
case CTaskListState::VIEW_ROLE_ACCOMPLICE:
$arFilter['ACCOMPLICE'] = $userId;
break;
case CTaskListState::VIEW_ROLE_AUDITOR:
$arFilter['AUDITOR'] = $userId;
break;
case CTaskListState::VIEW_ROLE_ORIGINATOR:
$arFilter['CREATED_BY'] = $userId;
$arFilter['!REFERENCE:RESPONSIBLE_ID'] = 'CREATED_BY';
break;
}
switch ($taskCategoryId)
{
case CTaskListState::VIEW_TASK_CATEGORY_COMPLETED:
$arFilter['REAL_STATUS'] = [
Status::COMPLETED,
Status::SUPPOSEDLY_COMPLETED,
Status::DECLINED,
];
break;
case CTaskListState::VIEW_TASK_CATEGORY_WAIT_CTRL:
$arFilter['REAL_STATUS'] = Status::SUPPOSEDLY_COMPLETED;
break;
case CTaskListState::VIEW_TASK_CATEGORY_NEW:
$arFilter['VIEWED'] = 0;
$arFilter['VIEWED_BY'] = $userId;
break;
case CTaskListState::VIEW_TASK_CATEGORY_ALL:
break;
case CTaskListState::VIEW_TASK_CATEGORY_IN_PROGRESS:
$arFilter['REAL_STATUS'] = array(
Status::NEW,
Status::PENDING,
Status::IN_PROGRESS,
);
break;
case CTaskListState::VIEW_TASK_CATEGORY_EXPIRED:
$arFilter['STATUS'] = MetaStatus::EXPIRED;
break;
case CTaskListState::VIEW_TASK_CATEGORY_EXPIRED_CANDIDATES:
$arFilter['>=DEADLINE'] = CounterDeadline::getExpiredTime();
$arFilter[' 'OR',
'VIEWED' => 0,
' CounterDeadline::getExpiredSoonTime()
// to be expired soon, it's includes already expired tasks too
);
break;
case CTaskListState::VIEW_ROLE_AUDITOR:
case CTaskListState::VIEW_ROLE_ORIGINATOR:
// selects only expired tasks
$arFilter['STATUS'] = MetaStatus::EXPIRED;
break;
}
break;
case CTaskListState::VIEW_TASK_CATEGORY_WO_DEADLINE:
$arFilter['!REAL_STATUS'] = [
Status::DECLINED,
Status::SUPPOSEDLY_COMPLETED,
Status::COMPLETED,
];
$arFilter['DEADLINE'] = '';
// if($userRoleId == CTaskListState::VIEW_ROLE_RESPONSIBLE)
// {
// $arFilter['!CREATED_BY'] = $userId;
// }
break;
default:
CTaskAssert::logError('[0x9a0abea0] Unknown $taskCategoryId = ' . $taskCategoryId);
break;
}
return ($arFilter);
}