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();
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 6
0
 /**
  * @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;
 }
Esempio n. 7
0
 /**
  * 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;
 }