private function makeRelationTree($fromTaskId, array $relations, array $taskData) { if (is_array($relations[$fromTaskId]) && !empty($relations[$fromTaskId])) { foreach ($relations[$fromTaskId] as $taskId => $relation) { if (!isset($this->taskPool[$taskId])) { $taskItem = \CTaskItem::constructWithPreloadedData($this->userId, $taskData[$taskId]); $taskItem->setCalendar($this->calendar); } else { $taskItem = $this->taskPool[$taskId]; } // no deal with tasks with no created date, skip the subtree if ((string) $taskItem['CREATED_DATE'] == '') { continue; } if (!$taskItem->isActionAllowed(\CTaskItem::ACTION_CHANGE_DEADLINE)) { continue; } else { $this->taskPool[$taskId] = $taskItem; $this->relations[$fromTaskId][$taskId] = $relation; $this->makeRelationTree($taskId, $relations, $taskData); } } } }