public function findFirstSubmilestoneTracker(Planning_Milestone $milestone) { $children = $this->hierarchy_factory->getChildren($milestone->getTrackerId()); if (!$children) { return null; } $milestone_backlog_trackers = $milestone->getPlanning()->getBacklogTrackers(); foreach ($milestone_backlog_trackers as $milestone_backlog_tracker) { foreach ($children as $tracker) { $planning = $this->planning_factory->getPlanningByPlanningTracker($tracker); if (!$planning) { continue; } $planning_backlog_trackers = $planning->getBacklogTrackers(); foreach ($planning_backlog_trackers as $planning_backlog_tracker) { if ($milestone_backlog_tracker == $planning_backlog_tracker) { return $tracker; } $backlog_tracker_ancestors = $this->hierarchy_factory->getAllParents($planning_backlog_tracker); if (in_array($milestone_backlog_tracker, $backlog_tracker_ancestors)) { return $tracker; } } } } }
private function getFirstChildBacklogTracker(Planning_Milestone $milestone) { $backlog_tracker_children = $milestone->getPlanning()->getPlanningTracker()->getChildren(); if ($backlog_tracker_children) { $first_child_tracker = current($backlog_tracker_children); $first_child_planning = $this->planning_factory->getPlanningByPlanningTracker($first_child_tracker); if ($first_child_planning) { return $first_child_planning->getBacklogTrackers(); } } return null; }
public function createKanban() { $kanban_name = $this->request->get('kanban-name'); $tracker_id = $this->request->get('tracker-kanban'); $tracker = $this->tracker_factory->getTrackerById($tracker_id); $user = $this->request->getCurrentUser(); $hierarchy = new Tracker_Hierarchy(); if (!$user->isAdmin($this->group_id)) { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('global', 'perm_denied')); return; } if ($this->kanban_manager->doesKanbanExistForTracker($tracker)) { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_agiledashboard', 'kanban_tracker_used')); $this->redirectToHome(); return; } try { $hierarchy->getLevel($tracker_id); $is_in_hierarchy = true; } catch (Tracker_Hierarchy_NotInHierarchyException $exeption) { $is_in_hierarchy = false; } if ((count($this->planning_factory->getPlanningsByBacklogTracker($tracker)) > 0 || count($this->planning_factory->getPlanningByPlanningTracker($tracker)) > 0) && !$is_in_hierarchy) { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_agiledashboard', 'tracker_used_in_scrum')); $this->redirectToHome(); return; } if ($this->kanban_manager->createKanban($kanban_name, $tracker_id)) { $GLOBALS['Response']->addFeedback(Feedback::INFO, $GLOBALS['Language']->getText('plugin_agiledashboard', 'kanban_created', array($kanban_name))); } else { $GLOBALS['Response']->addFeedback(Feedback::ERROR, $GLOBALS['Language']->getText('plugin_agiledashboard', 'kanban_creation_error', array($kanban_name))); } $this->redirectToHome(); }
/** * Create a Milestone corresponding to given artifact * * @param Tracker_Artifact $artifact * * @return Planning_ArtifactMilestone */ public function getMilestoneFromArtifact(Tracker_Artifact $artifact, TreeNode $planned_artifacts = null) { $tracker = $artifact->getTracker(); $planning = $this->planning_factory->getPlanningByPlanningTracker($tracker); if (!$planning) { return null; } return new Planning_ArtifactMilestone($tracker->getProject(), $planning, $artifact, $planned_artifacts); }
/** @return Tracker[] */ private function keepsTrackersUntilThereIsNoPlanning(array $list_of_trackers) { $trackers = array(); foreach ($list_of_trackers as $tracker) { if (!$this->planning_factory->getPlanningByPlanningTracker($tracker)) { break; } $trackers[] = $tracker; } return $trackers; }
/** * @param Tracker $tracker * @return \Tracker */ private function getSwimlineTracker(Tracker $tracker) { //TODO This file should be in agile dashboard and the generic part of the cardwall in plugin/tracker @(include_once dirname(__FILE__) . '/../../../agiledashboard/include/Planning/PlanningFactory.class.php'); if (class_exists('PlanningFactory')) { $planning_factory = new PlanningFactory(new PlanningDao(), $this->tracker_factory); if ($planning = $planning_factory->getPlanningByPlanningTracker($tracker)) { return $planning->getBacklogTracker(); } } return $tracker; }
/** * Create a Milestone corresponding to given artifact * * @param Tracker_Artifact $artifact * * @return Planning_ArtifactMilestone */ public function getMilestoneFromArtifact(Tracker_Artifact $artifact) { $tracker = $artifact->getTracker(); $planning = $this->planning_factory->getPlanningByPlanningTracker($tracker); return new Planning_ArtifactMilestone($tracker->getProject(), $planning, $artifact); }
private function isTrackerUsedInScrum(Tracker $tracker) { return count($this->planning_factory->getPlanningsByBacklogTracker($tracker)) > 0 || count($this->planning_factory->getPlanningByPlanningTracker($tracker)) > 0; }