• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/taskservice.php
  • Класс: BitrixTasksScrumServiceTaskService
  • Вызов: TaskService::getItemsDynamicData
public function getItemsDynamicData(int $groupId, array $taskIds, $itemsData): array
{
	foreach ($taskIds as $taskId)
	{
		$itemsData[$taskId]['tags'] = [];
	}

	$tags = [];
	$queryObject = LabelTable::getList([
		'select' => [
			'*',
			'TASK_' => 'TASKS',
		],
		'filter' => [
			'=TASK_ID' => $taskIds,
		],
	]);

	while ($tag = $queryObject->fetch())
	{
		if (in_array($tag['TASK_ID'], $taskIds))
		{
			if (!is_array($tags[$tag['TASK_ID']] ?? null))
			{
				$tags[$tag['TASK_ID']] = [];
			}
			$tags[$tag['TASK_ID']][] = $tag['NAME'];
		}
	}
	foreach ($tags as $taskId => $tagList)
	{
		$itemsData[$taskId]['tags'] = $tagList;
	}

	foreach ($taskIds as $taskId)
	{
		$itemsData[$taskId]['allowedActions'] = $this->getAllowedTaskActions($taskId);
		$itemsData[$taskId]['isLinkedTask'] = $this->isLinkedTask($taskId) ? 'Y' : 'N';
	}

	// todo
	foreach ($this->getSubTasksInfo($groupId, $taskIds) as $taskId => $subTasksInfo)
	{
		$subTasks = [];
		$completedSubTasks = [];
		foreach ($subTasksInfo as $subTaskInfo)
		{
			if ($subTaskInfo['completed'] === 'Y')
			{
				$completedSubTasks[$subTaskInfo['sourceId']] = $subTaskInfo;
			}
			else
			{
				$subTasks[$subTaskInfo['sourceId']] = $subTaskInfo;
			}
		}

		$itemsData[$taskId]['isParentTask'] = ($subTasks ? 'Y' : 'N');
		$itemsData[$taskId]['subTasksCount'] = count($subTasks);
		$itemsData[$taskId]['subTasksInfo'] = $subTasks;
		$itemsData[$taskId]['completedSubTasksInfo'] = $completedSubTasks;
	}

	$checkListCounts = $this->getChecklistCounts($taskIds);
	foreach ($checkListCounts as $taskId => $checkListCount)
	{
		$itemsData[$taskId]['checkListComplete'] = (int) ($checkListCount['complete'] ?? null);
		$itemsData[$taskId]['checkListAll'] = (
			(int) ($checkListCount['complete'] ?? null)
			+ (int) ($checkListCount['progress'] ?? null)
		);
	}

	$tasksCounters = $this->getTasksCounters($taskIds);
	foreach ($tasksCounters as $taskId => $taskCounter)
	{
		$itemsData[$taskId]['taskCounter'] = $taskCounter;
	}

	return $itemsData;
}