Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/herald/view/HeraldRuleListView.php
12256 views
1
<?php
2
3
final class HeraldRuleListView
4
extends AphrontView {
5
6
private $rules;
7
8
public function setRules(array $rules) {
9
assert_instances_of($rules, 'HeraldRule');
10
$this->rules = $rules;
11
return $this;
12
}
13
14
public function render() {
15
return $this->newObjectList();
16
}
17
18
public function newObjectList() {
19
$viewer = $this->getViewer();
20
$rules = $this->rules;
21
22
$handles = $viewer->loadHandles(mpull($rules, 'getAuthorPHID'));
23
24
$content_type_map = HeraldAdapter::getEnabledAdapterMap($viewer);
25
26
$list = id(new PHUIObjectItemListView())
27
->setViewer($viewer);
28
foreach ($rules as $rule) {
29
$monogram = $rule->getMonogram();
30
31
$item = id(new PHUIObjectItemView())
32
->setObjectName($monogram)
33
->setHeader($rule->getName())
34
->setHref($rule->getURI());
35
36
if ($rule->isPersonalRule()) {
37
$item->addIcon('fa-user', pht('Personal Rule'));
38
$item->addByline(
39
pht(
40
'Authored by %s',
41
$handles[$rule->getAuthorPHID()]->renderLink()));
42
} else if ($rule->isObjectRule()) {
43
$item->addIcon('fa-briefcase', pht('Object Rule'));
44
} else {
45
$item->addIcon('fa-globe', pht('Global Rule'));
46
}
47
48
if ($rule->getIsDisabled()) {
49
$item->setDisabled(true);
50
$item->addIcon('fa-lock grey', pht('Disabled'));
51
} else if (!$rule->hasValidAuthor()) {
52
$item->setDisabled(true);
53
$item->addIcon('fa-user grey', pht('Author Not Active'));
54
}
55
56
$content_type_name = idx($content_type_map, $rule->getContentType());
57
$item->addAttribute(pht('Affects: %s', $content_type_name));
58
59
$list->addItem($item);
60
}
61
62
return $list;
63
}
64
65
}
66
67