[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/herald/query/ -> HeraldTranscriptSearchEngine.php (source)

   1  <?php
   2  
   3  final class HeraldTranscriptSearchEngine
   4    extends PhabricatorApplicationSearchEngine {
   5  
   6    public function getResultTypeDescription() {
   7      return pht('Herald Transcripts');
   8    }
   9  
  10    public function getApplicationClassName() {
  11      return 'PhabricatorHeraldApplication';
  12    }
  13  
  14    public function buildSavedQueryFromRequest(AphrontRequest $request) {
  15      $saved = new PhabricatorSavedQuery();
  16  
  17      $object_monograms = $request->getStrList('objectMonograms');
  18      $saved->setParameter('objectMonograms', $object_monograms);
  19  
  20      $ids = $request->getStrList('ids');
  21      foreach ($ids as $key => $id) {
  22        if (!$id || !is_numeric($id)) {
  23          unset($ids[$key]);
  24        } else {
  25          $ids[$key] = $id;
  26        }
  27      }
  28      $saved->setParameter('ids', $ids);
  29  
  30      return $saved;
  31    }
  32  
  33    public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
  34      $query = id(new HeraldTranscriptQuery());
  35  
  36      $object_monograms = $saved->getParameter('objectMonograms');
  37      if ($object_monograms) {
  38        $objects = id(new PhabricatorObjectQuery())
  39          ->setViewer($this->requireViewer())
  40          ->withNames($object_monograms)
  41          ->execute();
  42        $query->withObjectPHIDs(mpull($objects, 'getPHID'));
  43      }
  44  
  45      $ids = $saved->getParameter('ids');
  46      if ($ids) {
  47        $query->withIDs($ids);
  48      }
  49  
  50      return $query;
  51    }
  52  
  53    public function buildSearchForm(
  54      AphrontFormView $form,
  55      PhabricatorSavedQuery $saved) {
  56  
  57      $object_monograms = $saved->getParameter('objectMonograms', array());
  58      $ids = $saved->getParameter('ids', array());
  59  
  60      $form
  61        ->appendChild(
  62          id(new AphrontFormTextControl())
  63            ->setName('objectMonograms')
  64            ->setLabel(pht('Object Monograms'))
  65            ->setValue(implode(', ', $object_monograms)))
  66        ->appendChild(
  67          id(new AphrontFormTextControl())
  68            ->setName('ids')
  69            ->setLabel(pht('Transcript IDs'))
  70            ->setValue(implode(', ', $ids)));
  71    }
  72  
  73    protected function getURI($path) {
  74      return '/herald/transcript/'.$path;
  75    }
  76  
  77    public function getBuiltinQueryNames() {
  78      return array(
  79        'all' => pht('All'),
  80      );
  81    }
  82  
  83    public function buildSavedQueryFromBuiltin($query_key) {
  84      $query = $this->newSavedQuery();
  85      $query->setQueryKey($query_key);
  86  
  87      $viewer_phid = $this->requireViewer()->getPHID();
  88  
  89      switch ($query_key) {
  90        case 'all':
  91          return $query;
  92      }
  93  
  94      return parent::buildSavedQueryFromBuiltin($query_key);
  95    }
  96  
  97    protected function getRequiredHandlePHIDsForResultList(
  98      array $transcripts,
  99      PhabricatorSavedQuery $query) {
 100      return mpull($transcripts, 'getObjectPHID');
 101    }
 102  
 103    protected function renderResultList(
 104      array $transcripts,
 105      PhabricatorSavedQuery $query,
 106      array $handles) {
 107      assert_instances_of($transcripts, 'HeraldTranscript');
 108  
 109      $viewer = $this->requireViewer();
 110  
 111      $list = new PHUIObjectItemListView();
 112      foreach ($transcripts as $xscript) {
 113        $view_href = phutil_tag(
 114          'a',
 115          array(
 116            'href' => '/herald/transcript/'.$xscript->getID().'/',
 117          ),
 118          pht('View Full Transcript'));
 119  
 120        $item = new PHUIObjectItemView();
 121        $item->setObjectName($xscript->getID());
 122        $item->setHeader($view_href);
 123        if ($xscript->getDryRun()) {
 124          $item->addAttribute(pht('Dry Run'));
 125        }
 126        $item->addAttribute($handles[$xscript->getObjectPHID()]->renderLink());
 127        $item->addAttribute(
 128          number_format((int)(1000 * $xscript->getDuration())).' ms');
 129        $item->addIcon(
 130          'none',
 131          phabricator_datetime($xscript->getTime(), $viewer));
 132  
 133        $list->addItem($item);
 134      }
 135  
 136      return $list;
 137    }
 138  
 139  }


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