Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/contact/PhabricatorAuthContactNumberViewController.php
12262 views
1
<?php
2
3
final class PhabricatorAuthContactNumberViewController
4
extends PhabricatorAuthContactNumberController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $this->getViewer();
8
9
$number = id(new PhabricatorAuthContactNumberQuery())
10
->setViewer($viewer)
11
->withIDs(array($request->getURIData('id')))
12
->executeOne();
13
if (!$number) {
14
return new Aphront404Response();
15
}
16
17
$crumbs = $this->buildApplicationCrumbs()
18
->addTextCrumb($number->getObjectName())
19
->setBorder(true);
20
21
$header = $this->buildHeaderView($number);
22
$properties = $this->buildPropertiesView($number);
23
$curtain = $this->buildCurtain($number);
24
25
$timeline = $this->buildTransactionTimeline(
26
$number,
27
new PhabricatorAuthContactNumberTransactionQuery());
28
$timeline->setShouldTerminate(true);
29
30
$view = id(new PHUITwoColumnView())
31
->setHeader($header)
32
->setCurtain($curtain)
33
->setMainColumn(
34
array(
35
$timeline,
36
))
37
->addPropertySection(pht('Details'), $properties);
38
39
return $this->newPage()
40
->setTitle($number->getDisplayName())
41
->setCrumbs($crumbs)
42
->setPageObjectPHIDs(
43
array(
44
$number->getPHID(),
45
))
46
->appendChild($view);
47
}
48
49
private function buildHeaderView(PhabricatorAuthContactNumber $number) {
50
$viewer = $this->getViewer();
51
52
$view = id(new PHUIHeaderView())
53
->setViewer($viewer)
54
->setHeader($number->getObjectName())
55
->setPolicyObject($number);
56
57
if ($number->isDisabled()) {
58
$view->setStatus('fa-ban', 'red', pht('Disabled'));
59
} else if ($number->getIsPrimary()) {
60
$view->setStatus('fa-certificate', 'blue', pht('Primary'));
61
}
62
63
return $view;
64
}
65
66
private function buildPropertiesView(
67
PhabricatorAuthContactNumber $number) {
68
$viewer = $this->getViewer();
69
70
$view = id(new PHUIPropertyListView())
71
->setViewer($viewer);
72
73
$view->addProperty(
74
pht('Owner'),
75
$viewer->renderHandle($number->getObjectPHID()));
76
77
$view->addProperty(pht('Contact Number'), $number->getDisplayName());
78
79
return $view;
80
}
81
82
private function buildCurtain(PhabricatorAuthContactNumber $number) {
83
$viewer = $this->getViewer();
84
$id = $number->getID();
85
86
$can_edit = PhabricatorPolicyFilter::hasCapability(
87
$viewer,
88
$number,
89
PhabricatorPolicyCapability::CAN_EDIT);
90
91
$curtain = $this->newCurtainView($number);
92
93
$curtain->addAction(
94
id(new PhabricatorActionView())
95
->setName(pht('Edit Contact Number'))
96
->setIcon('fa-pencil')
97
->setHref($this->getApplicationURI("contact/edit/{$id}/"))
98
->setDisabled(!$can_edit)
99
->setWorkflow(!$can_edit));
100
101
$curtain->addAction(
102
id(new PhabricatorActionView())
103
->setName(pht('Send Test Message'))
104
->setIcon('fa-envelope-o')
105
->setHref($this->getApplicationURI("contact/test/{$id}/"))
106
->setDisabled(!$can_edit)
107
->setWorkflow(true));
108
109
if ($number->isDisabled()) {
110
$disable_uri = $this->getApplicationURI("contact/enable/{$id}/");
111
$disable_name = pht('Enable Contact Number');
112
$disable_icon = 'fa-check';
113
$can_primary = false;
114
} else {
115
$disable_uri = $this->getApplicationURI("contact/disable/{$id}/");
116
$disable_name = pht('Disable Contact Number');
117
$disable_icon = 'fa-ban';
118
$can_primary = !$number->getIsPrimary();
119
}
120
121
$curtain->addAction(
122
id(new PhabricatorActionView())
123
->setName(pht('Make Primary Number'))
124
->setIcon('fa-certificate')
125
->setHref($this->getApplicationURI("contact/primary/{$id}/"))
126
->setDisabled(!$can_primary)
127
->setWorkflow(true));
128
129
$curtain->addAction(
130
id(new PhabricatorActionView())
131
->setName($disable_name)
132
->setIcon($disable_icon)
133
->setHref($disable_uri)
134
->setWorkflow(true));
135
136
return $curtain;
137
}
138
139
}
140
141