- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
- Класс: Bitrix\Tasks\Rest\Controllers\Task
- Вызов: Task::getAction
public function getAction(\CTaskItem $task, array $select = [], array $params = []): array
{
if (!empty($select))
{
$select[] = 'FAVORITE';
}
$params['select'] = $this->prepareSelect($select);
try
{
$row = $task->getData(false, $params);
}
catch (TasksException $e)
{
return [];
}
if (array_key_exists('STATUS', $row))
{
$row['STATUS'] = $row['REAL_STATUS'];
unset($row['REAL_STATUS']);
}
if (array_key_exists('DESCRIPTION', $row))
{
$row['DESCRIPTION'] = htmlspecialchars_decode($row['DESCRIPTION'] ?? '', ENT_QUOTES);
}
$row = $this->fillGroupInfo([$row], $params)[0];
$row = $this->fillUserInfo([$row])[0];
if (array_key_exists('WITH_RESULT_INFO', $params))
{
$row = $this->fillResultInfo([$row])[0];
}
if (array_key_exists('WITH_TIMER_INFO', $params))
{
$row = $this->fillWithTimerInfo([$row])[0];
}
if (in_array('COUNTERS', $select, true))
{
$row = $this->fillCounterInfo([$row])[0];
}
if (in_array('RELATED_TASKS', $select, true))
{
$row = $this->fillWithRelatedTasks([$row])[0];
}
if (in_array('SUB_TASKS', $select, true))
{
$row = $this->fillWithSubTasks([$row])[0];
}
if (in_array('TAGS', $select, true))
{
$row = $this->fillWithTags([$row])[0];
}
if (
array_key_exists('WITH_FILES_INFO', $params)
&& in_array(Disk\UserField::getMainSysUFCode(), $select, true)
)
{
$row = $this->fillWithFilesInfo([$row])[0];
}
if (
array_key_exists('WITH_CRM_INFO', $params)
&& in_array(CRM\UserField::getMainSysUFCode(), $select, true)
)
{
$row = $this->fillWithCrmInfo([$row])[0];
}
if (
array_key_exists('WITH_PARENT_TASK_INFO', $params)
&& in_array('PARENT_ID', $select, true)
)
{
$row = $this->fillWithParentTaskInfo([$row])[0];
}
if (array_key_exists('WITH_PARSED_DESCRIPTION', $params))
{
$row = $this->fillWithParsedDescription([$row])[0];
}
$this->formatDateFieldsForOutput($row);
if (in_array('NEW_COMMENTS_COUNT', $params['select'], true))
{
$taskId = $task->getId();
$userId = $this->getCurrentUser()->getId();
$newComments = Counter::getInstance((int)$userId)->getCommentsCount([$taskId]);
$row['NEW_COMMENTS_COUNT'] = $newComments[$taskId];
}
$action = $this->getAccessAction($task);
$row['action'] = $action['allowedActions'][$this->getCurrentUser()->getId()];
if (isset($params['GET_TASK_LIMIT_EXCEEDED']) && $params['GET_TASK_LIMIT_EXCEEDED'])
{
$row['TASK_LIMIT_EXCEEDED'] = TaskLimit::isLimitExceeded();
}
if (isset($row['CHECKLIST']))
{
$canAdd = TaskCheckListFacade::isActionAllowed(
$task->getId(),
null,
$this->getCurrentUser()->getId(),
TaskCheckListFacade::ACTION_ADD
);
$row['CHECKLIST'] = $this->fillActionsForCheckListItems(
$task->getId(),
$row['CHECKLIST'],
$canAdd
);
$objectTreeStructure = $this->buildTreeStructure($row['CHECKLIST']);
$objectTreeStructure = $this->fillTreeInfo($objectTreeStructure);
$row['CHECK_LIST_TREE'] = $objectTreeStructure->toTreeArray();
$row['CHECK_LIST_CAN_ADD'] = $canAdd;
}
return ['task' => $this->convertKeysToCamelCase($row)];
}