Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/nuance/query/NuanceSourceSearchEngine.php
12256 views
1
<?php
2
3
final class NuanceSourceSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getApplicationClassName() {
7
return 'PhabricatorNuanceApplication';
8
}
9
10
public function getResultTypeDescription() {
11
return pht('Nuance Sources');
12
}
13
14
public function newQuery() {
15
return new NuanceSourceQuery();
16
}
17
18
protected function buildQueryFromParameters(array $map) {
19
$query = $this->newQuery();
20
21
if ($map['match'] !== null) {
22
$query->withNameNgrams($map['match']);
23
}
24
25
return $query;
26
}
27
28
protected function buildCustomSearchFields() {
29
return array(
30
id(new PhabricatorSearchTextField())
31
->setLabel(pht('Name Contains'))
32
->setKey('match')
33
->setDescription(pht('Search for sources by name substring.')),
34
);
35
}
36
37
protected function getURI($path) {
38
return '/nuance/source/'.$path;
39
}
40
41
protected function getBuiltinQueryNames() {
42
$names = array(
43
'all' => pht('All Sources'),
44
);
45
46
return $names;
47
}
48
49
public function buildSavedQueryFromBuiltin($query_key) {
50
$query = $this->newSavedQuery();
51
$query->setQueryKey($query_key);
52
53
switch ($query_key) {
54
case 'all':
55
return $query;
56
}
57
58
return parent::buildSavedQueryFromBuiltin($query_key);
59
}
60
61
protected function renderResultList(
62
array $sources,
63
PhabricatorSavedQuery $query,
64
array $handles) {
65
assert_instances_of($sources, 'NuanceSource');
66
67
$viewer = $this->requireViewer();
68
69
$list = new PHUIObjectItemListView();
70
$list->setUser($viewer);
71
foreach ($sources as $source) {
72
$item = id(new PHUIObjectItemView())
73
->setObjectName(pht('Source %d', $source->getID()))
74
->setHeader($source->getName())
75
->setHref($source->getURI());
76
77
$item->addIcon('none', $source->getType());
78
79
$list->addItem($item);
80
}
81
82
$result = new PhabricatorApplicationSearchResultView();
83
$result->setObjectList($list);
84
$result->setNoDataString(pht('No sources found.'));
85
86
return $result;
87
}
88
89
}
90
91