Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/passphrase/query/PassphraseCredentialSearchEngine.php
12256 views
1
<?php
2
3
final class PassphraseCredentialSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('Passphrase Credentials');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorPassphraseApplication';
12
}
13
14
public function newQuery() {
15
return new PassphraseCredentialQuery();
16
}
17
18
protected function buildCustomSearchFields() {
19
return array(
20
id(new PhabricatorSearchThreeStateField())
21
->setLabel(pht('Status'))
22
->setKey('isDestroyed')
23
->setOptions(
24
pht('Show All'),
25
pht('Show Only Destroyed Credentials'),
26
pht('Show Only Active Credentials')),
27
id(new PhabricatorSearchTextField())
28
->setLabel(pht('Name Contains'))
29
->setKey('name'),
30
);
31
}
32
33
protected function buildQueryFromParameters(array $map) {
34
$query = $this->newQuery();
35
36
if ($map['isDestroyed'] !== null) {
37
$query->withIsDestroyed($map['isDestroyed']);
38
}
39
40
if (strlen($map['name'])) {
41
$query->withNameContains($map['name']);
42
}
43
44
return $query;
45
}
46
47
protected function getURI($path) {
48
return '/passphrase/'.$path;
49
}
50
51
protected function getBuiltinQueryNames() {
52
return array(
53
'active' => pht('Active Credentials'),
54
'all' => pht('All Credentials'),
55
);
56
}
57
58
public function buildSavedQueryFromBuiltin($query_key) {
59
$query = $this->newSavedQuery();
60
$query->setQueryKey($query_key);
61
62
switch ($query_key) {
63
case 'all':
64
return $query;
65
case 'active':
66
return $query->setParameter('isDestroyed', false);
67
}
68
69
return parent::buildSavedQueryFromBuiltin($query_key);
70
}
71
72
protected function renderResultList(
73
array $credentials,
74
PhabricatorSavedQuery $query,
75
array $handles) {
76
assert_instances_of($credentials, 'PassphraseCredential');
77
78
$viewer = $this->requireViewer();
79
80
$list = new PHUIObjectItemListView();
81
$list->setUser($viewer);
82
foreach ($credentials as $credential) {
83
84
$item = id(new PHUIObjectItemView())
85
->setObjectName('K'.$credential->getID())
86
->setHeader($credential->getName())
87
->setHref('/K'.$credential->getID())
88
->setObject($credential);
89
90
$item->addAttribute(
91
pht('Login: %s', $credential->getUsername()));
92
93
if ($credential->getIsDestroyed()) {
94
$item->addIcon('fa-ban', pht('Destroyed'));
95
$item->setDisabled(true);
96
}
97
98
$type = PassphraseCredentialType::getTypeByConstant(
99
$credential->getCredentialType());
100
if ($type) {
101
$item->addIcon('fa-wrench', $type->getCredentialTypeName());
102
}
103
104
$list->addItem($item);
105
}
106
107
$result = new PhabricatorApplicationSearchResultView();
108
$result->setObjectList($list);
109
$result->setNoDataString(pht('No credentials found.'));
110
111
return $result;
112
}
113
114
protected function getNewUserBody() {
115
$create_button = id(new PHUIButtonView())
116
->setTag('a')
117
->setText(pht('Create a Credential'))
118
->setHref('/passphrase/create/')
119
->setColor(PHUIButtonView::GREEN);
120
121
$icon = $this->getApplication()->getIcon();
122
$app_name = $this->getApplication()->getName();
123
$view = id(new PHUIBigInfoView())
124
->setIcon($icon)
125
->setTitle(pht('Welcome to %s', $app_name))
126
->setDescription(
127
pht('Credential management and general storage of shared secrets.'))
128
->addAction($create_button);
129
130
return $view;
131
}
132
133
}
134
135