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