[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/search/controller/ -> PhabricatorSearchSelectController.php (source)

   1  <?php
   2  
   3  final class PhabricatorSearchSelectController
   4    extends PhabricatorSearchBaseController {
   5  
   6    private $type;
   7  
   8    public function willProcessRequest(array $data) {
   9      $this->type = $data['type'];
  10    }
  11  
  12    public function processRequest() {
  13      $request = $this->getRequest();
  14      $user = $request->getUser();
  15  
  16      $query = new PhabricatorSavedQuery();
  17      $query_str = $request->getStr('query');
  18  
  19      $query->setEngineClassName('PhabricatorSearchApplicationSearchEngine');
  20      $query->setParameter('query', $query_str);
  21      $query->setParameter('types', array($this->type));
  22  
  23      $status_open = PhabricatorSearchRelationship::RELATIONSHIP_OPEN;
  24  
  25      switch ($request->getStr('filter')) {
  26        case 'assigned':
  27          $query->setParameter('ownerPHIDs', array($user->getPHID()));
  28          $query->setParameter('statuses', array($status_open));
  29          break;
  30        case 'created';
  31          $query->setParameter('authorPHIDs', array($user->getPHID()));
  32          // TODO - if / when we allow pholio mocks to be archived, etc
  33          // update this
  34          if ($this->type != PholioMockPHIDType::TYPECONST) {
  35            $query->setParameter('statuses', array($status_open));
  36          }
  37          break;
  38        case 'open':
  39          $query->setParameter('statuses', array($status_open));
  40          break;
  41      }
  42  
  43      $query->setParameter('excludePHIDs', array($request->getStr('exclude')));
  44  
  45      $results = id(new PhabricatorSearchDocumentQuery())
  46        ->setViewer($user)
  47        ->withSavedQuery($query)
  48        ->setOffset(0)
  49        ->setLimit(100)
  50        ->execute();
  51  
  52      $phids = array_fill_keys(mpull($results, 'getPHID'), true);
  53      $phids += $this->queryObjectNames($query_str);
  54  
  55      $phids = array_keys($phids);
  56      $handles = $this->loadViewerHandles($phids);
  57  
  58      $data = array();
  59      foreach ($handles as $handle) {
  60        $view = new PhabricatorHandleObjectSelectorDataView($handle);
  61        $data[] = $view->renderData();
  62      }
  63  
  64      return id(new AphrontAjaxResponse())->setContent($data);
  65    }
  66  
  67    private function queryObjectNames($query) {
  68      $viewer = $this->getRequest()->getUser();
  69  
  70      $objects = id(new PhabricatorObjectQuery())
  71        ->setViewer($viewer)
  72        ->withTypes(array($this->type))
  73        ->withNames(array($query))
  74        ->execute();
  75  
  76      return mpull($objects, 'getPHID');
  77    }
  78  
  79  }


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