Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/packages/query/PhabricatorPackagesVersionSearchEngine.php
12242 views
1
<?php
2
3
final class PhabricatorPackagesVersionSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('Package Versions');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorPackagesApplication';
12
}
13
14
public function newQuery() {
15
return id(new PhabricatorPackagesVersionQuery());
16
}
17
18
public function canUseInPanelContext() {
19
return false;
20
}
21
22
protected function buildQueryFromParameters(array $map) {
23
$query = $this->newQuery();
24
25
if ($map['match'] !== null) {
26
$query->withNameNgrams($map['match']);
27
}
28
29
if ($map['packagePHIDs']) {
30
$query->withPackagePHIDs($map['packagePHIDs']);
31
}
32
33
return $query;
34
}
35
36
protected function buildCustomSearchFields() {
37
return array(
38
id(new PhabricatorSearchTextField())
39
->setLabel(pht('Name Contains'))
40
->setKey('match')
41
->setDescription(pht('Search for versions by name substring.')),
42
id(new PhabricatorSearchDatasourceField())
43
->setLabel(pht('Packages'))
44
->setKey('packagePHIDs')
45
->setAliases(array('packagePHID', 'package', 'packages'))
46
->setDatasource(new PhabricatorPackagesPackageDatasource())
47
->setDescription(pht('Search for versions by package.')),
48
);
49
}
50
protected function getURI($path) {
51
return '/packages/version/'.$path;
52
}
53
54
protected function getBuiltinQueryNames() {
55
$names = array(
56
'all' => pht('All Versions'),
57
);
58
59
return $names;
60
}
61
62
public function buildSavedQueryFromBuiltin($query_key) {
63
$query = $this->newSavedQuery();
64
$query->setQueryKey($query_key);
65
66
switch ($query_key) {
67
case 'all':
68
return $query;
69
}
70
71
return parent::buildSavedQueryFromBuiltin($query_key);
72
}
73
74
protected function renderResultList(
75
array $versions,
76
PhabricatorSavedQuery $query,
77
array $handles) {
78
79
assert_instances_of($versions, 'PhabricatorPackagesVersion');
80
$viewer = $this->requireViewer();
81
82
$list = id(new PhabricatorPackagesVersionListView())
83
->setViewer($viewer)
84
->setVersions($versions)
85
->newListView();
86
87
return id(new PhabricatorApplicationSearchResultView())
88
->setObjectList($list)
89
->setNoDataString(pht('No versions found.'));
90
}
91
92
}
93
94