- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
- Класс: BitrixTasksRestControllersTask
- Вызов: Task::listAction
public function listAction(
array $filter = [],
array $select = [],
array $group = [],
array $order = [],
array $params = [],
PageNavigation $pageNavigation = null
): ?EngineResponseDataTypePage
{
if (!$this->checkOrderKeys($order))
{
$this->addError(new Error(GetMessage('TASKS_FAILED_WRONG_ORDER_FIELD')));
return null;
}
$preparedSelect = $this->prepareSelect($select);
$preparedFilter = $this->prepareFilter($filter, $select, $params);
$navParams = $this->prepareNavParams($pageNavigation, $params);
$getListParams = [
'select' => $preparedSelect,
'legacyFilter' => ($preparedFilter ?: []),
'order' => ($order ?: []),
'group' => ($group ?: []),
'NAV_PARAMS' => $navParams,
];
$params['PUBLIC_MODE'] = 'Y'; // VERY VERY BAD HACK! DONT REPEAT IT !
$params['USE_MINIMAL_SELECT_LEGACY'] = 'N'; // VERY VERY BAD HACK! DONT REPEAT IT !
$params['RETURN_ACCESS'] = ($params['RETURN_ACCESS'] ?? 'N'); // VERY VERY BAD HACK! DONT REPEAT IT !.. too late
$params['DISTINCT'] = true;
try
{
$result = ManagerTask::getList($this->getCurrentUser()->getId(), $getListParams, $params);
}
catch (Exception $exception)
{
$this->addError(new Error($exception->getMessage()));
return null;
}
$tasks = array_values($result['DATA']);
$tasks = $this->fillGroupInfo($tasks, $params);
$tasks = $this->fillUserInfo($tasks);
if (array_key_exists('WITH_RESULT_INFO', $params))
{
$tasks = $this->fillResultInfo($tasks);
}
if (array_key_exists('WITH_TIMER_INFO', $params))
{
$tasks = $this->fillWithTimerInfo($tasks);
}
if (array_key_exists('WITH_PARSED_DESCRIPTION', $params))
{
$tasks = $this->fillWithParsedDescription($tasks);
}
if (in_array('COUNTERS', $select, true))
{
$tasks = $this->fillCounterInfo($tasks);
}
if (in_array('TAGS', $select, true))
{
$tasks = $this->fillWithTags($tasks);
}
foreach ($tasks as &$task)
{
if (array_key_exists('STATUS', $task))
{
$task['SUB_STATUS'] = $task['STATUS'];
$task['STATUS'] = $task['REAL_STATUS'];
unset($task['REAL_STATUS']);
}
if (isset($task['DESCRIPTION']))
{
$task['DESCRIPTION'] = htmlspecialchars_decode($task['DESCRIPTION'], ENT_QUOTES);
}
$this->formatDateFieldsForOutput($task);
$task = $this->convertKeysToCamelCase($task);
}
unset($task);
return new EngineResponseDataTypePage(
'tasks',
$tasks,
static function() use ($result) {
return $result['AUX']['OBJ_RES']->NavRecordCount;
}
);
}