Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / harbormaster / query / HarbormasterBuildSearchEngine.php
blobb8140d84f6949e598c523b02caded256a2711cc2
1 <?php
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() {
19 return array(
20 id(new PhabricatorSearchDatasourceField())
21 ->setLabel(pht('Build Plans'))
22 ->setKey('plans')
23 ->setAliases(array('plan'))
24 ->setDescription(
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'))
31 ->setDescription(
32 pht('Search for builds running against particular buildables.')),
33 id(new PhabricatorSearchDatasourceField())
34 ->setLabel(pht('Statuses'))
35 ->setKey('statuses')
36 ->setAliases(array('status'))
37 ->setDescription(
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'))
44 ->setDescription(
45 pht(
46 'Search for builds started by someone or something in particular.'))
47 ->setDatasource(new HarbormasterBuildInitiatorDatasource()),
51 protected function getHiddenFields() {
52 return array(
53 'buildables',
57 protected function buildQueryFromParameters(array $map) {
58 $query = $this->newQuery();
60 if ($map['plans']) {
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']);
76 return $query;
79 protected function getURI($path) {
80 return '/harbormaster/build/'.$path;
83 protected function getBuiltinQueryNames() {
84 return array(
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);
97 switch ($query_key) {
98 case 'initiated':
99 $viewer = $this->requireViewer();
100 return $query->setParameter('initiators', array($viewer->getPHID()));
101 case 'all':
102 return $query;
103 case 'waiting':
104 return $query
105 ->setParameter(
106 'statuses',
107 HarbormasterBuildStatus::getWaitingStatusConstants());
108 case 'active':
109 return $query
110 ->setParameter(
111 'statuses',
112 HarbormasterBuildStatus::getActiveStatusConstants());
113 case 'completed':
114 return $query
115 ->setParameter(
116 'statuses',
117 HarbormasterBuildStatus::getCompletedStatusConstants());
120 return parent::buildSavedQueryFromBuiltin($query_key);
123 protected function renderResultList(
124 array $builds,
125 PhabricatorSavedQuery $query,
126 array $handles) {
127 assert_instances_of($builds, 'HarbormasterBuild');
129 $viewer = $this->requireViewer();
131 $list = id(new HarbormasterBuildView())
132 ->setViewer($viewer)
133 ->setBuilds($builds)
134 ->newObjectList();
136 return id(new PhabricatorApplicationSearchResultView())
137 ->setObjectList($list)
138 ->setNoDataString(pht('No builds found.'));