Path: blob/master/src/applications/drydock/query/DrydockLeaseSearchEngine.php
12256 views
<?php12final class DrydockLeaseSearchEngine3extends PhabricatorApplicationSearchEngine {45private $resource;67public function setResource($resource) {8$this->resource = $resource;9return $this;10}1112public function getResource() {13return $this->resource;14}1516public function getResultTypeDescription() {17return pht('Drydock Leases');18}1920public function getApplicationClassName() {21return 'PhabricatorDrydockApplication';22}2324public function newQuery() {25$query = new DrydockLeaseQuery();2627$resource = $this->getResource();28if ($resource) {29$query->withResourcePHIDs(array($resource->getPHID()));30}3132return $query;33}3435protected function buildQueryFromParameters(array $map) {36$query = $this->newQuery();3738if ($map['statuses']) {39$query->withStatuses($map['statuses']);40}4142if ($map['ownerPHIDs']) {43$query->withOwnerPHIDs($map['ownerPHIDs']);44}4546if ($map['resourcePHIDs']) {47$query->withResourcePHIDs($map['resourcePHIDs']);48}4950return $query;51}5253protected function buildCustomSearchFields() {54return array(55id(new PhabricatorSearchCheckboxesField())56->setLabel(pht('Statuses'))57->setKey('statuses')58->setOptions(DrydockLeaseStatus::getStatusMap()),59id(new PhabricatorPHIDsSearchField())60->setLabel(pht('Owners'))61->setKey('ownerPHIDs')62->setAliases(array('owner', 'owners', 'ownerPHID'))63->setDescription(pht('Search leases by owner.')),64id(new PhabricatorPHIDsSearchField())65->setLabel(pht('Resources'))66->setKey('resourcePHIDs')67->setAliases(array('resorucePHID', 'resource', 'resources'))68->setDescription(pht('Search leases by resource.')),69);70}7172protected function getURI($path) {73$resource = $this->getResource();74if ($resource) {75$id = $resource->getID();76return "/drydock/resource/{$id}/leases/".$path;77} else {78return '/drydock/lease/'.$path;79}80}8182protected function getBuiltinQueryNames() {83return array(84'active' => pht('Active Leases'),85'all' => pht('All Leases'),86);87}8889public function buildSavedQueryFromBuiltin($query_key) {90$query = $this->newSavedQuery();91$query->setQueryKey($query_key);9293switch ($query_key) {94case 'active':95return $query->setParameter(96'statuses',97array(98DrydockLeaseStatus::STATUS_PENDING,99DrydockLeaseStatus::STATUS_ACQUIRED,100DrydockLeaseStatus::STATUS_ACTIVE,101));102case 'all':103return $query;104}105106return parent::buildSavedQueryFromBuiltin($query_key);107}108109protected function renderResultList(110array $leases,111PhabricatorSavedQuery $saved,112array $handles) {113114$list = id(new DrydockLeaseListView())115->setUser($this->requireViewer())116->setLeases($leases);117118return id(new PhabricatorApplicationSearchResultView())119->setContent($list);120}121122}123124125