public function getMilestonePlanningPresenter(PFUser $user, Planning_ArtifactMilestone $milestone, Tracker $submilestone_tracker)
 {
     $redirect_paremeter = new Planning_MilestoneRedirectParameter();
     $backlog_strategy = $this->strategy_factory->getBacklogStrategy($milestone);
     $redirect_to_self = $redirect_paremeter->getPlanningRedirectToSelf($milestone, AgileDashboard_Milestone_Pane_Planning_PlanningPaneInfo::IDENTIFIER);
     $backlog_collection = $this->collection_factory->getUnplannedOpenCollection($user, $milestone, $backlog_strategy, $redirect_to_self);
     $submilestone_collection = $this->getSubmilestoneCollection($user, $milestone, $submilestone_tracker, $redirect_to_self);
     return new AgileDashboard_Milestone_Pane_Planning_PlanningPresenter($backlog_collection, $submilestone_collection, $milestone, $backlog_collection->getParentItemName(), $submilestone_collection->getName(), $submilestone_collection->getSubmitNewUrlLinkedToMilestone($milestone), $submilestone_collection->canCreateNew($user), $this->canPlan($user, $milestone), $redirect_to_self, $backlog_strategy->getTrackersWithoutInitialEffort());
 }
 /**
  * Get the backlog items that can be planned in a top-milestone of a given project
  */
 public function get(PFUser $user, Project $project, $limit, $offset)
 {
     if (!$this->limitValueIsAcceptable($limit)) {
         throw new RestException(406, 'Maximum value for limit exceeded');
     }
     $top_milestone = $this->milestone_factory->getVirtualTopMilestone($user, $project);
     $strategy = $this->backlog_strategy_factory->getSelfBacklogStrategy($top_milestone, $limit, $offset);
     $backlog_items = $this->backlog_item_collection_factory->getUnplannedOpenCollection($user, $top_milestone, $strategy, false);
     $backlog_item_representations = array();
     $backlog_item_representation_factory = new BacklogItemRepresentationFactory();
     foreach ($backlog_items as $backlog_item) {
         $backlog_item_representations[] = $backlog_item_representation_factory->createBacklogItemRepresentation($backlog_item);
     }
     $this->sendAllowHeaders();
     $this->sendPaginationHeaders($limit, $offset, $backlog_items->getTotalAvaialableSize());
     return $backlog_item_representations;
 }
 private function getMilestoneBacklogItems(PFUser $user, $milestone, $strategy)
 {
     return $this->backlog_item_collection_factory->getUnplannedOpenCollection($user, $milestone, $strategy, false);
 }