Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / drydock / query / DrydockLeaseSearchEngine.php
blob7e89336fabacc8d04e6151f5f32fafb4f6379c8e
1 <?php
3 final class DrydockLeaseSearchEngine
4 extends PhabricatorApplicationSearchEngine {
6 private $resource;
8 public function setResource($resource) {
9 $this->resource = $resource;
10 return $this;
13 public function getResource() {
14 return $this->resource;
17 public function getResultTypeDescription() {
18 return pht('Drydock Leases');
21 public function getApplicationClassName() {
22 return 'PhabricatorDrydockApplication';
25 public function newQuery() {
26 $query = new DrydockLeaseQuery();
28 $resource = $this->getResource();
29 if ($resource) {
30 $query->withResourcePHIDs(array($resource->getPHID()));
33 return $query;
36 protected function buildQueryFromParameters(array $map) {
37 $query = $this->newQuery();
39 if ($map['statuses']) {
40 $query->withStatuses($map['statuses']);
43 if ($map['ownerPHIDs']) {
44 $query->withOwnerPHIDs($map['ownerPHIDs']);
47 if ($map['resourcePHIDs']) {
48 $query->withResourcePHIDs($map['resourcePHIDs']);
51 return $query;
54 protected function buildCustomSearchFields() {
55 return array(
56 id(new PhabricatorSearchCheckboxesField())
57 ->setLabel(pht('Statuses'))
58 ->setKey('statuses')
59 ->setOptions(DrydockLeaseStatus::getStatusMap()),
60 id(new PhabricatorPHIDsSearchField())
61 ->setLabel(pht('Owners'))
62 ->setKey('ownerPHIDs')
63 ->setAliases(array('owner', 'owners', 'ownerPHID'))
64 ->setDescription(pht('Search leases by owner.')),
65 id(new PhabricatorPHIDsSearchField())
66 ->setLabel(pht('Resources'))
67 ->setKey('resourcePHIDs')
68 ->setAliases(array('resorucePHID', 'resource', 'resources'))
69 ->setDescription(pht('Search leases by resource.')),
73 protected function getURI($path) {
74 $resource = $this->getResource();
75 if ($resource) {
76 $id = $resource->getID();
77 return "/drydock/resource/{$id}/leases/".$path;
78 } else {
79 return '/drydock/lease/'.$path;
83 protected function getBuiltinQueryNames() {
84 return array(
85 'active' => pht('Active Leases'),
86 'all' => pht('All Leases'),
90 public function buildSavedQueryFromBuiltin($query_key) {
91 $query = $this->newSavedQuery();
92 $query->setQueryKey($query_key);
94 switch ($query_key) {
95 case 'active':
96 return $query->setParameter(
97 'statuses',
98 array(
99 DrydockLeaseStatus::STATUS_PENDING,
100 DrydockLeaseStatus::STATUS_ACQUIRED,
101 DrydockLeaseStatus::STATUS_ACTIVE,
103 case 'all':
104 return $query;
107 return parent::buildSavedQueryFromBuiltin($query_key);
110 protected function renderResultList(
111 array $leases,
112 PhabricatorSavedQuery $saved,
113 array $handles) {
115 $list = id(new DrydockLeaseListView())
116 ->setUser($this->requireViewer())
117 ->setLeases($leases);
119 return id(new PhabricatorApplicationSearchResultView())
120 ->setContent($list);