/** * @return array[] */ public function milestoneSelectOptions($valueField = 'id', $status = null, $sort = 'ASC') { $options = []; $milestones = Milestone::where('project_id = ?')->setParameter(0, $this->id)->orderBy('display_order', $sort); if ($status !== null) { $milestones->andWhere('status = ?')->setParameter(1, $status); } foreach ($milestones->execute()->fetchAll() as $milestone) { $options[] = ['label' => $milestone['name'], 'value' => $milestone[$valueField]]; } return $options; }
/** * Show milestone. * * @param string $slug */ public function showAction($slug) { list($openQuery, $startedQuery, $closedQuery) = $this->getTicketCountQueries(); $milestone = Milestone::where('project_id = :project_id')->andWhere('slug = :slug')->addSelect("({$openQuery}) AS open_tickets")->addSelect("({$startedQuery}) AS started_tickets")->addSelect("({$closedQuery}) AS closed_tickets")->setParameter('project_id', $this->currentProject['id'])->setParameter('slug', $slug)->setParameter('open_count_is_closed', false, 'boolean')->setParameter('closed_count_is_closed', false, 'boolean')->fetch(); $this->addCrumb($milestone['name'], $this->generateUrl('milestone', ['slug' => $milestone['slug']])); return $this->respondTo(function ($format) use($milestone) { if ($format == 'html') { return $this->render('roadmap/show.phtml', ['milestone' => $milestone]); } elseif ($format == 'json') { return $this->jsonResponse($milestone); } }); }