Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/packages/query/PhabricatorPackagesPackageSearchEngine.php
12242 views
1
<?php
2
3
final class PhabricatorPackagesPackageSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('Packages');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorPackagesApplication';
12
}
13
14
public function newQuery() {
15
return id(new PhabricatorPackagesPackageQuery());
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['publisherPHIDs']) {
30
$query->withPublisherPHIDs($map['publisherPHIDs']);
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 packages by name substring.')),
42
id(new PhabricatorSearchDatasourceField())
43
->setLabel(pht('Publishers'))
44
->setKey('publisherPHIDs')
45
->setAliases(array('publisherPHID', 'publisher', 'publishers'))
46
->setDatasource(new PhabricatorPackagesPublisherDatasource())
47
->setDescription(pht('Search for packages by publisher.')),
48
);
49
}
50
51
protected function getURI($path) {
52
return '/packages/package/'.$path;
53
}
54
55
protected function getBuiltinQueryNames() {
56
$names = array(
57
'all' => pht('All Packages'),
58
);
59
60
return $names;
61
}
62
63
public function buildSavedQueryFromBuiltin($query_key) {
64
$query = $this->newSavedQuery();
65
$query->setQueryKey($query_key);
66
67
switch ($query_key) {
68
case 'all':
69
return $query;
70
}
71
72
return parent::buildSavedQueryFromBuiltin($query_key);
73
}
74
75
protected function renderResultList(
76
array $packages,
77
PhabricatorSavedQuery $query,
78
array $handles) {
79
80
assert_instances_of($packages, 'PhabricatorPackagesPackage');
81
$viewer = $this->requireViewer();
82
83
$list = id(new PhabricatorPackagesPackageListView())
84
->setViewer($viewer)
85
->setPackages($packages)
86
->newListView();
87
88
return id(new PhabricatorApplicationSearchResultView())
89
->setObjectList($list)
90
->setNoDataString(pht('No packages found.'));
91
}
92
93
}
94
95