Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
12256 views
1
<?php
2
3
final class HarbormasterBuildSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('Harbormaster Builds');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorHarbormasterApplication';
12
}
13
14
public function newQuery() {
15
return new HarbormasterBuildQuery();
16
}
17
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()),
48
);
49
}
50
51
protected function getHiddenFields() {
52
return array(
53
'buildables',
54
);
55
}
56
57
protected function buildQueryFromParameters(array $map) {
58
$query = $this->newQuery();
59
60
if ($map['plans']) {
61
$query->withBuildPlanPHIDs($map['plans']);
62
}
63
64
if ($map['buildables']) {
65
$query->withBuildablePHIDs($map['buildables']);
66
}
67
68
if ($map['statuses']) {
69
$query->withBuildStatuses($map['statuses']);
70
}
71
72
if ($map['initiators']) {
73
$query->withInitiatorPHIDs($map['initiators']);
74
}
75
76
return $query;
77
}
78
79
protected function getURI($path) {
80
return '/harbormaster/build/'.$path;
81
}
82
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'),
90
);
91
}
92
93
public function buildSavedQueryFromBuiltin($query_key) {
94
$query = $this->newSavedQuery();
95
$query->setQueryKey($query_key);
96
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());
118
}
119
120
return parent::buildSavedQueryFromBuiltin($query_key);
121
}
122
123
protected function renderResultList(
124
array $builds,
125
PhabricatorSavedQuery $query,
126
array $handles) {
127
assert_instances_of($builds, 'HarbormasterBuild');
128
129
$viewer = $this->requireViewer();
130
131
$list = id(new HarbormasterBuildView())
132
->setViewer($viewer)
133
->setBuilds($builds)
134
->newObjectList();
135
136
return id(new PhabricatorApplicationSearchResultView())
137
->setObjectList($list)
138
->setNoDataString(pht('No builds found.'));
139
}
140
141
}
142
143