[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class ReleephRequestSearchEngine 4 extends PhabricatorApplicationSearchEngine { 5 6 private $branch; 7 private $baseURI; 8 9 public function getResultTypeDescription() { 10 return pht('Releeph Pull Requests'); 11 } 12 13 public function setBranch(ReleephBranch $branch) { 14 $this->branch = $branch; 15 return $this; 16 } 17 18 public function getBranch() { 19 return $this->branch; 20 } 21 22 public function setBaseURI($base_uri) { 23 $this->baseURI = $base_uri; 24 return $this; 25 } 26 27 public function buildSavedQueryFromRequest(AphrontRequest $request) { 28 $saved = new PhabricatorSavedQuery(); 29 30 $saved->setParameter('status', $request->getStr('status')); 31 $saved->setParameter('severity', $request->getStr('severity')); 32 $saved->setParameter( 33 'requestorPHIDs', 34 $this->readUsersFromRequest($request, 'requestors')); 35 36 return $saved; 37 } 38 39 public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { 40 $query = id(new ReleephRequestQuery()) 41 ->withBranchIDs(array($this->getBranch()->getID())); 42 43 $status = $saved->getParameter('status'); 44 $status = idx($this->getStatusValues(), $status); 45 if ($status) { 46 $query->withStatus($status); 47 } 48 49 $severity = $saved->getParameter('severity'); 50 if ($severity) { 51 $query->withSeverities(array($severity)); 52 } 53 54 $requestor_phids = $saved->getParameter('requestorPHIDs'); 55 if ($requestor_phids) { 56 $query->withRequestorPHIDs($requestor_phids); 57 } 58 59 return $query; 60 } 61 62 public function buildSearchForm( 63 AphrontFormView $form, 64 PhabricatorSavedQuery $saved_query) { 65 66 $phids = $saved_query->getParameter('requestorPHIDs', array()); 67 $requestor_handles = id(new PhabricatorHandleQuery()) 68 ->setViewer($this->requireViewer()) 69 ->withPHIDs($phids) 70 ->execute(); 71 72 $form 73 ->appendChild( 74 id(new AphrontFormSelectControl()) 75 ->setName('status') 76 ->setLabel(pht('Status')) 77 ->setValue($saved_query->getParameter('status')) 78 ->setOptions($this->getStatusOptions())) 79 ->appendChild( 80 id(new AphrontFormSelectControl()) 81 ->setName('severity') 82 ->setLabel(pht('Severity')) 83 ->setValue($saved_query->getParameter('severity')) 84 ->setOptions($this->getSeverityOptions())) 85 ->appendChild( 86 id(new AphrontFormTokenizerControl()) 87 ->setDatasource(new PhabricatorPeopleDatasource()) 88 ->setName('requestors') 89 ->setLabel(pht('Requestors')) 90 ->setValue($requestor_handles)); 91 } 92 93 protected function getURI($path) { 94 return $this->baseURI.$path; 95 } 96 97 public function getBuiltinQueryNames() { 98 $names = array( 99 'open' => pht('Open Requests'), 100 'all' => pht('All Requests'), 101 ); 102 103 if ($this->requireViewer()->isLoggedIn()) { 104 $names['requested'] = pht('Requested'); 105 } 106 107 return $names; 108 } 109 110 public function buildSavedQueryFromBuiltin($query_key) { 111 112 $query = $this->newSavedQuery(); 113 $query->setQueryKey($query_key); 114 115 switch ($query_key) { 116 case 'open': 117 return $query->setParameter('status', 'open'); 118 case 'all': 119 return $query; 120 case 'requested': 121 return $query->setParameter( 122 'requestorPHIDs', 123 array($this->requireViewer()->getPHID())); 124 } 125 126 return parent::buildSavedQueryFromBuiltin($query_key); 127 } 128 129 private function getStatusOptions() { 130 return array( 131 '' => pht('(All Requests)'), 132 'open' => pht('Open Requests'), 133 'requested' => pht('Pull Requested'), 134 'needs-pull' => pht('Needs Pull'), 135 'rejected' => pht('Rejected'), 136 'abandoned' => pht('Abandoned'), 137 'pulled' => pht('Pulled'), 138 'needs-revert' => pht('Needs Revert'), 139 'reverted' => pht('Reverted'), 140 ); 141 } 142 143 private function getStatusValues() { 144 return array( 145 'open' => ReleephRequestQuery::STATUS_OPEN, 146 'requested' => ReleephRequestQuery::STATUS_REQUESTED, 147 'needs-pull' => ReleephRequestQuery::STATUS_NEEDS_PULL, 148 'rejected' => ReleephRequestQuery::STATUS_REJECTED, 149 'abandoned' => ReleephRequestQuery::STATUS_ABANDONED, 150 'pulled' => ReleephRequestQuery::STATUS_PULLED, 151 'needs-revert' => ReleephRequestQuery::STATUS_NEEDS_REVERT, 152 'reverted' => ReleephRequestQuery::STATUS_REVERTED, 153 ); 154 } 155 156 private function getSeverityOptions() { 157 if (ReleephDefaultFieldSelector::isFacebook()) { 158 return array( 159 '' => pht('(All Severities)'), 160 11 => 'HOTFIX', 161 12 => 'PIGGYBACK', 162 13 => 'RELEASE', 163 14 => 'DAILY', 164 15 => 'PARKING', 165 ); 166 } else { 167 return array( 168 '' => pht('(All Severities)'), 169 ReleephSeverityFieldSpecification::HOTFIX => pht('Hotfix'), 170 ReleephSeverityFieldSpecification::RELEASE => pht('Release'), 171 ); 172 } 173 } 174 175 }
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 |