• Модуль: 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)];
}