[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/harbormaster/query/ -> HarbormasterBuildPlanSearchEngine.php (source)

   1  <?php
   2  
   3  final class HarbormasterBuildPlanSearchEngine
   4    extends PhabricatorApplicationSearchEngine {
   5  
   6    public function getResultTypeDescription() {
   7      return pht('Harbormaster Build Plans');
   8    }
   9  
  10    public function getApplicationClassName() {
  11      return 'PhabricatorHarbormasterApplication';
  12    }
  13  
  14    public function buildSavedQueryFromRequest(AphrontRequest $request) {
  15      $saved = new PhabricatorSavedQuery();
  16  
  17      $saved->setParameter(
  18        'status',
  19        $this->readListFromRequest($request, 'status'));
  20  
  21      return $saved;
  22    }
  23  
  24    public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
  25      $query = id(new HarbormasterBuildPlanQuery());
  26  
  27      $status = $saved->getParameter('status', array());
  28      if ($status) {
  29        $query->withStatuses($status);
  30      }
  31  
  32      return $query;
  33    }
  34  
  35    public function buildSearchForm(
  36      AphrontFormView $form,
  37      PhabricatorSavedQuery $saved_query) {
  38  
  39      $status = $saved_query->getParameter('status', array());
  40  
  41      $form
  42        ->appendChild(
  43          id(new AphrontFormCheckboxControl())
  44            ->setLabel('Status')
  45            ->addCheckbox(
  46              'status[]',
  47              HarbormasterBuildPlan::STATUS_ACTIVE,
  48              pht('Active'),
  49              in_array(HarbormasterBuildPlan::STATUS_ACTIVE, $status))
  50            ->addCheckbox(
  51              'status[]',
  52              HarbormasterBuildPlan::STATUS_DISABLED,
  53              pht('Disabled'),
  54              in_array(HarbormasterBuildPlan::STATUS_DISABLED, $status)));
  55    }
  56  
  57    protected function getURI($path) {
  58      return '/harbormaster/plan/'.$path;
  59    }
  60  
  61    public function getBuiltinQueryNames() {
  62      return array(
  63        'active' => pht('Active Plans'),
  64        'all' => pht('All Plans'),
  65      );
  66    }
  67  
  68    public function buildSavedQueryFromBuiltin($query_key) {
  69      $query = $this->newSavedQuery();
  70      $query->setQueryKey($query_key);
  71  
  72      switch ($query_key) {
  73        case 'active':
  74          return $query->setParameter(
  75            'status',
  76            array(
  77              HarbormasterBuildPlan::STATUS_ACTIVE,
  78            ));
  79        case 'all':
  80          return $query;
  81      }
  82  
  83      return parent::buildSavedQueryFromBuiltin($query_key);
  84    }
  85  
  86    protected function renderResultList(
  87      array $plans,
  88      PhabricatorSavedQuery $query,
  89      array $handles) {
  90      assert_instances_of($plans, 'HarbormasterBuildPlan');
  91  
  92      $viewer = $this->requireViewer();
  93  
  94      $list = new PHUIObjectItemListView();
  95      foreach ($plans as $plan) {
  96        $id = $plan->getID();
  97  
  98        $item = id(new PHUIObjectItemView())
  99          ->setObjectName(pht('Plan %d', $plan->getID()))
 100          ->setHeader($plan->getName());
 101  
 102        if ($plan->isDisabled()) {
 103          $item->setDisabled(true);
 104        }
 105  
 106        $item->setHref($this->getApplicationURI("plan/{$id}/"));
 107  
 108        $list->addItem($item);
 109      }
 110  
 111      return $list;
 112    }
 113  
 114  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1