- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/task.php
- Класс: CTasks
- Вызов: CTasks::runRestMethod
static function runRestMethod($executiveUserId, $methodName, $args, $navigation)
{
CTaskAssert::assert($methodName === 'getlist');
// Force & limit NAV_PARAMS (in 4th argument)
while (count($args) < 4)
{
$args[] = [];
} // All params in CTasks::GetList() by default are empty arrays
$arParams = &$args[3];
if ($navigation['iNumPage'] > 1)
{
$arParams['NAV_PARAMS'] = [
'nPageSize' => CTaskRestService::TASKS_LIMIT_PAGE_SIZE,
'iNumPage' => (int)$navigation['iNumPage'],
];
}
elseif (isset($arParams['NAV_PARAMS']))
{
if (isset($arParams['NAV_PARAMS']['nPageTop']))
{
$arParams['NAV_PARAMS']['nPageTop'] = min(CTaskRestService::TASKS_LIMIT_TOP_COUNT,
(int)$arParams['NAV_PARAMS']['nPageTop']);
}
if (isset($arParams['NAV_PARAMS']['nPageSize']))
{
$arParams['NAV_PARAMS']['nPageSize'] = min(CTaskRestService::TASKS_LIMIT_PAGE_SIZE,
(int)$arParams['NAV_PARAMS']['nPageSize']);
}
if (
(!isset($arParams['NAV_PARAMS']['nPageTop']))
&& (!isset($arParams['NAV_PARAMS']['nPageSize']))
)
{
$arParams['NAV_PARAMS'] = [
'nPageSize' => CTaskRestService::TASKS_LIMIT_PAGE_SIZE,
'iNumPage' => 1,
];
}
}
else
{
$arParams['NAV_PARAMS'] = [
'nPageSize' => CTaskRestService::TASKS_LIMIT_PAGE_SIZE,
'iNumPage' => 1,
];
}
// Check and parse params
$argsParsed = CTaskRestService::_parseRestParams('ctasks', $methodName, $args);
$arParams['USER_ID'] = $executiveUserId;
// TODO: remove this hack (needs for select tasks with GROUP_ID === NULL or 0)
if (isset($argsParsed[1]))
{
$arFilter = $argsParsed[1];
foreach ($arFilter as $key => $value)
{
if (($key === 'GROUP_ID') && ($value == 0))
{
$argsParsed[1]['META:GROUP_ID_IS_NULL_OR_ZERO'] = 1;
unset($argsParsed[1][$key]);
break;
}
}
if (
isset($argsParsed[1]['ID'])
&& is_array($argsParsed[1]['ID'])
&& empty($argsParsed[1]['ID'])
)
{
$argsParsed[1]['ID'] = -1;
}
}
$rsTasks = call_user_func_array(['self', 'getlist'], $argsParsed);
$arTasks = [];
while ($arTask = $rsTasks->fetch())
{
$arTasks[] = $arTask;
}
return ([$arTasks, $rsTasks]);
}