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