static function onRestServiceBuildDescription()
{
if (!self::$inited)
{
self::_init();
}
$arFunctionsMap = [
CRestUtil::EVENTS => [
'OnTaskAdd' => ['tasks', 'OnTaskAdd', ['CTaskRestService', 'onEventFilter']],
'OnTaskUpdate' => ['tasks', 'OnTaskUpdate', ['CTaskRestService', 'onEventFilter']],
'OnTaskDelete' => ['tasks', 'OnTaskDelete', ['CTaskRestService', 'onEventFilter']],
// task comments
'OnTaskCommentAdd' => ['tasks', 'OnAfterCommentAdd', ['CTaskCommentItem', 'onEventFilter']],
'OnTaskCommentUpdate' => ['tasks', 'OnAfterCommentUpdate', ['CTaskCommentItem', 'onEventFilter']],
'OnTaskCommentDelete' => ['tasks', 'OnAfterCommentDelete', ['CTaskCommentItem', 'onEventFilter']],
],
CRestUtil::PLACEMENTS => [
self::PLACEMENT_TASK_TOP_MENU => [],
self::PLACEMENT_TASK_LIST_CONTEXT_MENU => [],
self::PLACEMENT_TASK_VIEW_MODE => [],
self::PLACEMENT_TASK_VIEW_TAB => [
'options' => [
'groupId' => 'string',
]
],
self::PLACEMENT_TASK_VIEW_SIDEBAR => [
'options' => [
'groupId' => 'string',
]
],
self::PLACEMENT_TASK_VIEW_TOP_PANEL => [],
self::PLACEMENT_TASK_VIEW_MENU_ADD => [],
]
];
foreach (self::$arAllowedMethods as $className => $arMethods)
{
$aliasClassName = null;
if (isset(self::$arClassAliases[$className]))
{
$aliasClassName = self::$arClassAliases[$className];
}
foreach ($arMethods as $methodName)
{
$aliasMethodName = null;
if (isset(self::$arMethodsMetaInfo[$className][$methodName]['alias']))
{
$aliasMethodName = self::$arMethodsMetaInfo[$className][$methodName]['alias'];
}
$transitMethodName = $className.self::delimiter.$methodName;
$arPublicNames = ['task.'.$className.'.'.$methodName];
if ($aliasMethodName !== null)
{
$arPublicNames[] = 'task.'.$className.'.'.$aliasMethodName;
}
// Is class alias exists?
if ($aliasClassName !== null)
{
$arPublicNames[] = 'task.'.$aliasClassName.'.'.$methodName;
if ($aliasMethodName !== null)
{
$arPublicNames[] = 'task.'.$aliasClassName.'.'.$aliasMethodName;
}
}
foreach ($arPublicNames as $publicMethodName)
{
$arFunctionsMap[$publicMethodName] = ['CTaskRestService', $transitMethodName];
}
}
}
// additional routing rules, for "subclasses"
foreach (self::$allowedSpecialClasses as $className => $subclass)
{
$methods = self::$arMethodsMetaInfo[$className];
if (is_array($methods))
{
foreach ($methods as $methodName => $methodDesc)
{
// query like "task.item.userfield.add"
$publicMethodName = implode(
'.',
[
'task',
$subclass['publicParentClassName'],
$subclass['publicClassName'],
$methodName
]
);
// goes to "BitrixTasksRestItemUserField::add()"
$transitMethodName = implode(self::delimiter, [$className, $methodName]);
$arFunctionsMap[$publicMethodName] = ['CTaskRestService', $transitMethodName];
}
}
}
return [
self::SCOPE_NAME_NORMAL => $arFunctionsMap,
self::SCOPE_NAME_EXTENDED => [
'tasks_extended.meta.setAnyStatus' => ['CTaskRestService', 'tasks_extended_meta_setAnyStatus'],
'tasks_extended.meta.occurInLogsAs' => ['CTaskRestService', 'tasks_extended_meta_occurInLogsAs']
]
];
}