Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/metamta/query/PhabricatorMetaMTAMailSearchEngine.php
12256 views
1
<?php
2
3
final class PhabricatorMetaMTAMailSearchEngine
4
extends PhabricatorApplicationSearchEngine {
5
6
public function getResultTypeDescription() {
7
return pht('MetaMTA Mails');
8
}
9
10
public function getApplicationClassName() {
11
return 'PhabricatorMetaMTAApplication';
12
}
13
14
public function canUseInPanelContext() {
15
return false;
16
}
17
18
public function newQuery() {
19
return new PhabricatorMetaMTAMailQuery();
20
}
21
22
protected function shouldShowOrderField() {
23
return false;
24
}
25
26
protected function buildCustomSearchFields() {
27
return array(
28
id(new PhabricatorUsersSearchField())
29
->setLabel(pht('Actors'))
30
->setKey('actorPHIDs')
31
->setAliases(array('actor', 'actors')),
32
id(new PhabricatorUsersSearchField())
33
->setLabel(pht('Recipients'))
34
->setKey('recipientPHIDs')
35
->setAliases(array('recipient', 'recipients')),
36
);
37
}
38
39
protected function buildQueryFromParameters(array $map) {
40
$query = $this->newQuery();
41
42
if ($map['actorPHIDs']) {
43
$query->withActorPHIDs($map['actorPHIDs']);
44
}
45
46
if ($map['recipientPHIDs']) {
47
$query->withRecipientPHIDs($map['recipientPHIDs']);
48
}
49
50
return $query;
51
}
52
53
protected function getURI($path) {
54
return '/mail/'.$path;
55
}
56
57
protected function getBuiltinQueryNames() {
58
$names = array(
59
'inbox' => pht('Inbox'),
60
'outbox' => pht('Outbox'),
61
);
62
63
return $names;
64
}
65
66
public function buildSavedQueryFromBuiltin($query_key) {
67
$viewer = $this->requireViewer();
68
69
$query = $this->newSavedQuery();
70
$query->setQueryKey($query_key);
71
72
switch ($query_key) {
73
case 'inbox':
74
return $query->setParameter(
75
'recipientPHIDs',
76
array($viewer->getPHID()));
77
case 'outbox':
78
return $query->setParameter(
79
'actorPHIDs',
80
array($viewer->getPHID()));
81
}
82
83
return parent::buildSavedQueryFromBuiltin($query_key);
84
}
85
86
protected function getRequiredHandlePHIDsForResultList(
87
array $objects,
88
PhabricatorSavedQuery $query) {
89
90
$phids = array();
91
foreach ($objects as $mail) {
92
$phids[] = $mail->getExpandedRecipientPHIDs();
93
}
94
return array_mergev($phids);
95
}
96
97
protected function renderResultList(
98
array $mails,
99
PhabricatorSavedQuery $query,
100
array $handles) {
101
102
assert_instances_of($mails, 'PhabricatorMetaMTAMail');
103
$viewer = $this->requireViewer();
104
$list = new PHUIObjectItemListView();
105
106
foreach ($mails as $mail) {
107
if ($mail->hasSensitiveContent()) {
108
$header = phutil_tag('em', array(), pht('Content Redacted'));
109
} else {
110
$header = $mail->getSubject();
111
}
112
113
$item = id(new PHUIObjectItemView())
114
->setUser($viewer)
115
->setObject($mail)
116
->setEpoch($mail->getDateCreated())
117
->setObjectName(pht('Mail %d', $mail->getID()))
118
->setHeader($header)
119
->setHref($this->getURI('detail/'.$mail->getID().'/'));
120
121
$status = $mail->getStatus();
122
$status_name = PhabricatorMailOutboundStatus::getStatusName($status);
123
$status_icon = PhabricatorMailOutboundStatus::getStatusIcon($status);
124
$status_color = PhabricatorMailOutboundStatus::getStatusColor($status);
125
$item->setStatusIcon($status_icon.' '.$status_color, $status_name);
126
127
$list->addItem($item);
128
}
129
130
return id(new PhabricatorApplicationSearchResultView())
131
->setContent($list);
132
}
133
}
134
135