3 final class DrydockLeaseSearchEngine
4 extends PhabricatorApplicationSearchEngine
{
8 public function setResource($resource) {
9 $this->resource = $resource;
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();
30 $query->withResourcePHIDs(array($resource->getPHID()));
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']);
54 protected function buildCustomSearchFields() {
56 id(new PhabricatorSearchCheckboxesField())
57 ->setLabel(pht('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();
76 $id = $resource->getID();
77 return "/drydock/resource/{$id}/leases/".$path;
79 return '/drydock/lease/'.$path;
83 protected function getBuiltinQueryNames() {
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);
96 return $query->setParameter(
99 DrydockLeaseStatus
::STATUS_PENDING
,
100 DrydockLeaseStatus
::STATUS_ACQUIRED
,
101 DrydockLeaseStatus
::STATUS_ACTIVE
,
107 return parent
::buildSavedQueryFromBuiltin($query_key);
110 protected function renderResultList(
112 PhabricatorSavedQuery
$saved,
115 $list = id(new DrydockLeaseListView())
116 ->setUser($this->requireViewer())
117 ->setLeases($leases);
119 return id(new PhabricatorApplicationSearchResultView())