• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskitem.php
  • Класс: CTaskItem
  • Вызов: CTaskItem::getManifest
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
					)
				)
			)
		),
	));
}