[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |