Path: blob/master/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
12256 views
<?php12final class HarbormasterBuildSearchEngine3extends PhabricatorApplicationSearchEngine {45public function getResultTypeDescription() {6return pht('Harbormaster Builds');7}89public function getApplicationClassName() {10return 'PhabricatorHarbormasterApplication';11}1213public function newQuery() {14return new HarbormasterBuildQuery();15}1617protected function buildCustomSearchFields() {18return array(19id(new PhabricatorSearchDatasourceField())20->setLabel(pht('Build Plans'))21->setKey('plans')22->setAliases(array('plan'))23->setDescription(24pht('Search for builds running a given build plan.'))25->setDatasource(new HarbormasterBuildPlanDatasource()),26id(new PhabricatorPHIDsSearchField())27->setLabel(pht('Buildables'))28->setKey('buildables')29->setAliases(array('buildable'))30->setDescription(31pht('Search for builds running against particular buildables.')),32id(new PhabricatorSearchDatasourceField())33->setLabel(pht('Statuses'))34->setKey('statuses')35->setAliases(array('status'))36->setDescription(37pht('Search for builds with given statuses.'))38->setDatasource(new HarbormasterBuildStatusDatasource()),39id(new PhabricatorSearchDatasourceField())40->setLabel(pht('Initiators'))41->setKey('initiators')42->setAliases(array('initiator'))43->setDescription(44pht(45'Search for builds started by someone or something in particular.'))46->setDatasource(new HarbormasterBuildInitiatorDatasource()),47);48}4950protected function getHiddenFields() {51return array(52'buildables',53);54}5556protected function buildQueryFromParameters(array $map) {57$query = $this->newQuery();5859if ($map['plans']) {60$query->withBuildPlanPHIDs($map['plans']);61}6263if ($map['buildables']) {64$query->withBuildablePHIDs($map['buildables']);65}6667if ($map['statuses']) {68$query->withBuildStatuses($map['statuses']);69}7071if ($map['initiators']) {72$query->withInitiatorPHIDs($map['initiators']);73}7475return $query;76}7778protected function getURI($path) {79return '/harbormaster/build/'.$path;80}8182protected function getBuiltinQueryNames() {83return array(84'initiated' => pht('My Builds'),85'all' => pht('All Builds'),86'waiting' => pht('Waiting'),87'active' => pht('Active'),88'completed' => pht('Completed'),89);90}9192public function buildSavedQueryFromBuiltin($query_key) {93$query = $this->newSavedQuery();94$query->setQueryKey($query_key);9596switch ($query_key) {97case 'initiated':98$viewer = $this->requireViewer();99return $query->setParameter('initiators', array($viewer->getPHID()));100case 'all':101return $query;102case 'waiting':103return $query104->setParameter(105'statuses',106HarbormasterBuildStatus::getWaitingStatusConstants());107case 'active':108return $query109->setParameter(110'statuses',111HarbormasterBuildStatus::getActiveStatusConstants());112case 'completed':113return $query114->setParameter(115'statuses',116HarbormasterBuildStatus::getCompletedStatusConstants());117}118119return parent::buildSavedQueryFromBuiltin($query_key);120}121122protected function renderResultList(123array $builds,124PhabricatorSavedQuery $query,125array $handles) {126assert_instances_of($builds, 'HarbormasterBuild');127128$viewer = $this->requireViewer();129130$list = id(new HarbormasterBuildView())131->setViewer($viewer)132->setBuilds($builds)133->newObjectList();134135return id(new PhabricatorApplicationSearchResultView())136->setObjectList($list)137->setNoDataString(pht('No builds found.'));138}139140}141142143