static function getManifest()
{
static $arWritableTaskDataKeys = null;
static $arReadableTaskDataKeys = null;
static $arFilterableTaskDataKeys = null;
static $arDateKeys = null;
static $arSortableTaskDataKeys = null;
if ($arReadableTaskDataKeys === null)
{
$arCTasksManifest = CTasks::getManifest();
$arSortableTaskDataKeys = $arCTasksManifest['REST: sortable task data fields'];
$arFilterableTaskDataKeys = $arCTasksManifest['REST: filterable task data fields'];
$arDateKeys = $arCTasksManifest['REST: date fields'];
// mix up user fields, only reading, writing and selecting are supported for them
$userFields = array_keys(static::getEntityUserFields());
if(!empty($userFields))
{
$arWritableTaskDataKeys = array_merge($arCTasksManifest['REST: writable task data fields'], $userFields);
$arReadableTaskDataKeys = array_merge($arCTasksManifest['REST: readable task data fields'], $userFields);
}
}
$listMethodData = array(
'staticMethod' => true,
'mandatoryParamsCount' => 0,
'params' => array(
array(
'description' => 'arOrder',
'type' => 'array',
'allowedKeys' => $arSortableTaskDataKeys,
),
array(
'description' => 'arFilter',
'type' => 'array',
'allowedKeys' => $arFilterableTaskDataKeys,
'allowedKeyPrefixes' => array(
'=', '!=', '%', '!%', '?', '><',
'!><', '>=', '>', '<', '<=', '!'
)
),
array(
'description' => 'arParams',
'type' => 'array',
'allowedKeys' => array('NAV_PARAMS', 'LOAD_TAGS')
),
array(
'description' => 'arSelect',
'type' => 'array',
)
),
'allowedKeysInReturnValue' => array_merge(
$arReadableTaskDataKeys,
array('ALLOWED_ACTIONS', 'TAGS')
),
'collectionInReturnValue' => true
);
$favoriteParameters = array('AFFECT_CHILDREN');
return(array(
'Manifest version' => '1.2',
'Warning' => 'don't rely on format of this manifest, it can be changed without any notification',
'REST: shortname alias to class' => 'item',
'REST: writable task data fields' => $arWritableTaskDataKeys,
'REST: readable task data fields' => $arReadableTaskDataKeys,
'REST: filterable task data fields' => $arFilterableTaskDataKeys,
'REST: date fields' => $arDateKeys,
'REST: available methods' => array(
'getmanifest' => array(
'staticMethod' => true,
'params' => array()
),
'getlist' => $listMethodData, // temporal fix: implement method aliasing later
'list' => $listMethodData, // temporal fix: implement method aliasing later
'add' => array(
'staticMethod' => true,
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'arNewTaskData',
'type' => 'array',
'allowedKeys' => $arWritableTaskDataKeys
)
)
),
'getexecutiveuserid' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'getdata' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'isReturnEscapedData',
'type' => 'boolean',
'defaultValue' => false
)
),
'allowedKeysInReturnValue' => $arReadableTaskDataKeys
),
'getdescription' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'format',
'type' => 'integer'
)
)
),
'getfiles' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
),
'runAs' => 'getattachmentids'
),
'addfile' => array(
'mandatoryParamsCount' => 3,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'fileParameters',
'type' => 'array',
'allowedKeys' => array('NAME', 'CONTENT')
)
),
),
'deletefile' => array(
'mandatoryParamsCount' => 2,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'fileId',
'type' => 'integer'
),
),
),
'gettags' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'getdependson' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'getallowedtaskactions' => array(
'alias' => 'getallowedactions',
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'getallowedtaskactionsasstrings' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'isactionallowed' => array(
'mandatoryParamsCount' => 2,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'actionId',
'type' => 'integer'
),
array(
'description' => 'userId',
'type' => 'integer'
)
)
),
'delete' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'delegate' => array(
'mandatoryParamsCount' => 2,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'userId',
'type' => 'integer'
)
)
),
'startexecution' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'pauseexecution' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'defer' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'complete' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'update' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'arNewTaskData',
'type' => 'array',
'allowedKeys' => $arWritableTaskDataKeys
)
)
),
'renew' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'approve' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'disapprove' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
)
)
),
'addtofavorite' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'parameters',
'type' => 'array',
'allowedKeys' => $favoriteParameters
)
)
),
'deletefromfavorite' => array(
'mandatoryParamsCount' => 1,
'params' => array(
array(
'description' => 'taskId',
'type' => 'integer'
),
array(
'description' => 'parameters',
'type' => 'array',
'allowedKeys' => $favoriteParameters
)
)
)
),
));
}