3 final class HarbormasterBuildSearchEngine
4 extends PhabricatorApplicationSearchEngine
{
6 public function getResultTypeDescription() {
7 return pht('Harbormaster Builds');
10 public function getApplicationClassName() {
11 return 'PhabricatorHarbormasterApplication';
14 public function newQuery() {
15 return new HarbormasterBuildQuery();
18 protected function buildCustomSearchFields() {
20 id(new PhabricatorSearchDatasourceField())
21 ->setLabel(pht('Build Plans'))
23 ->setAliases(array('plan'))
25 pht('Search for builds running a given build plan.'))
26 ->setDatasource(new HarbormasterBuildPlanDatasource()),
27 id(new PhabricatorPHIDsSearchField())
28 ->setLabel(pht('Buildables'))
29 ->setKey('buildables')
30 ->setAliases(array('buildable'))
32 pht('Search for builds running against particular buildables.')),
33 id(new PhabricatorSearchDatasourceField())
34 ->setLabel(pht('Statuses'))
36 ->setAliases(array('status'))
38 pht('Search for builds with given statuses.'))
39 ->setDatasource(new HarbormasterBuildStatusDatasource()),
40 id(new PhabricatorSearchDatasourceField())
41 ->setLabel(pht('Initiators'))
42 ->setKey('initiators')
43 ->setAliases(array('initiator'))
46 'Search for builds started by someone or something in particular.'))
47 ->setDatasource(new HarbormasterBuildInitiatorDatasource()),
51 protected function getHiddenFields() {
57 protected function buildQueryFromParameters(array $map) {
58 $query = $this->newQuery();
61 $query->withBuildPlanPHIDs($map['plans']);
64 if ($map['buildables']) {
65 $query->withBuildablePHIDs($map['buildables']);
68 if ($map['statuses']) {
69 $query->withBuildStatuses($map['statuses']);
72 if ($map['initiators']) {
73 $query->withInitiatorPHIDs($map['initiators']);
79 protected function getURI($path) {
80 return '/harbormaster/build/'.$path;
83 protected function getBuiltinQueryNames() {
85 'initiated' => pht('My Builds'),
86 'all' => pht('All Builds'),
87 'waiting' => pht('Waiting'),
88 'active' => pht('Active'),
89 'completed' => pht('Completed'),
93 public function buildSavedQueryFromBuiltin($query_key) {
94 $query = $this->newSavedQuery();
95 $query->setQueryKey($query_key);
99 $viewer = $this->requireViewer();
100 return $query->setParameter('initiators', array($viewer->getPHID()));
107 HarbormasterBuildStatus
::getWaitingStatusConstants());
112 HarbormasterBuildStatus
::getActiveStatusConstants());
117 HarbormasterBuildStatus
::getCompletedStatusConstants());
120 return parent
::buildSavedQueryFromBuiltin($query_key);
123 protected function renderResultList(
125 PhabricatorSavedQuery
$query,
127 assert_instances_of($builds, 'HarbormasterBuild');
129 $viewer = $this->requireViewer();
131 $list = id(new HarbormasterBuildView())
136 return id(new PhabricatorApplicationSearchResultView())
137 ->setObjectList($list)
138 ->setNoDataString(pht('No builds found.'));