- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/elapseditem.php
- Класс: CTaskElapsedItem
- Вызов: CTaskElapsedItem::runRestMethod
static function runRestMethod($executiveUserId, $methodName, $args, $navigation)
{
static $arManifest = null;
static $arMethodsMetaInfo = null;
if ($arManifest === null)
{
$arManifest = self::getManifest();
$arMethodsMetaInfo = $arManifest['REST: available methods'];
}
// Check and parse params
CTaskAssert::assert(isset($arMethodsMetaInfo[$methodName]));
$arMethodMetaInfo = $arMethodsMetaInfo[$methodName];
$argsParsed = CTaskRestService::_parseRestParams('ctaskelapseditem', $methodName, $args);
$runAs = $methodName;
if(isset($arMethodsMetaInfo[$methodName]['runAs']) && (string) $arMethodsMetaInfo[$methodName]['runAs'] != '')
{
$runAs = $arMethodsMetaInfo[$methodName]['runAs'];
}
$returnValue = null;
$navData = null;
if (isset($arMethodMetaInfo['staticMethod']) && $arMethodMetaInfo['staticMethod'])
{
if ($methodName === 'add')
{
$taskId = $argsParsed[0];
$arFields = $argsParsed[1];
$oTaskItem = CTaskItem::getInstance($taskId, $executiveUserId); // taskId in $argsParsed[0]
$oItem = self::add($oTaskItem, $arFields);
$returnValue = $oItem->getId();
}
elseif ($methodName === 'getlist')
{
$taskId = $argsParsed[0];
$order = ($argsParsed[1] ?? []);
$filter = ($argsParsed[2] ?? []);
$select = ($argsParsed[3] ?? []);
$navParams = $argsParsed[4]['NAV_PARAMS'];
$byTaskId = false;
if (count($argsParsed) > 0 && $taskId !== 0)
{
$taskItem = CTaskItem::getInstance($taskId, $executiveUserId);
if ($taskItem->getData())
{
$byTaskId = true;
$filter = array_merge($filter, array('TASK_ID' => $taskId));
}
}
if (isset($navParams))
{
if (isset($navParams['nPageSize']))
{
$navParams['nPageSize'] = min(CTaskRestService::TASKS_LIMIT_PAGE_SIZE, (int)$navParams['nPageSize']);
}
else
{
$navParams['nPageSize'] = CTaskRestService::TASKS_LIMIT_PAGE_SIZE;
}
if (isset($navParams['iNumPage']))
{
$numPage = (int)$navParams['iNumPage'];
$numPage = ($numPage > 0? ($numPage - 1) * $navParams['nPageSize'] : 0);
$navParams['iNumPage'] = $numPage;
}
else
{
$navParams['iNumPage'] = 0;
}
}
else
{
$navParams = array(
'nPageSize' => ($byTaskId? 0 : CTaskRestService::TASKS_LIMIT_PAGE_SIZE),
'iNumPage' => 0
);
}
$params = array(
'NAV_PARAMS' => $navParams,
'count_total' => true
);
[$elapsedItems, $navData] = self::getList($order, $filter, $select, $params);
$returnValue = $elapsedItems;
}
else
{
$returnValue = call_user_func_array(array('self', $runAs), $argsParsed);
}
}
else
{
$taskId = array_shift($argsParsed);
$itemId = array_shift($argsParsed);
$oTaskItem = CTaskItem::getInstance($taskId, $executiveUserId);
$obElapsed = new self($oTaskItem, $itemId);
if ($methodName === 'get')
{
$returnValue = $obElapsed->getData();
}
else
{
$returnValue = call_user_func_array(array($obElapsed, $runAs), $argsParsed);
}
}
return array($returnValue, $navData);
}