Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/controller/contact/PhabricatorAuthContactNumberDisableController.php
12262 views
1
<?php
2
3
final class PhabricatorAuthContactNumberDisableController
4
extends PhabricatorAuthContactNumberController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
$id = $request->getURIData('id');
9
10
$number = id(new PhabricatorAuthContactNumberQuery())
11
->setViewer($viewer)
12
->withIDs(array($id))
13
->requireCapabilities(
14
array(
15
PhabricatorPolicyCapability::CAN_VIEW,
16
PhabricatorPolicyCapability::CAN_EDIT,
17
))
18
->executeOne();
19
if (!$number) {
20
return new Aphront404Response();
21
}
22
23
$is_disable = ($request->getURIData('action') == 'disable');
24
$id = $number->getID();
25
$cancel_uri = $number->getURI();
26
27
if ($request->isFormOrHisecPost()) {
28
$xactions = array();
29
30
if ($is_disable) {
31
$new_status = PhabricatorAuthContactNumber::STATUS_DISABLED;
32
} else {
33
$new_status = PhabricatorAuthContactNumber::STATUS_ACTIVE;
34
}
35
36
$xactions[] = id(new PhabricatorAuthContactNumberTransaction())
37
->setTransactionType(
38
PhabricatorAuthContactNumberStatusTransaction::TRANSACTIONTYPE)
39
->setNewValue($new_status);
40
41
$editor = id(new PhabricatorAuthContactNumberEditor())
42
->setActor($viewer)
43
->setContentSourceFromRequest($request)
44
->setContinueOnNoEffect(true)
45
->setContinueOnMissingFields(true)
46
->setCancelURI($cancel_uri);
47
48
try {
49
$editor->applyTransactions($number, $xactions);
50
} catch (PhabricatorApplicationTransactionValidationException $ex) {
51
// This happens when you enable a number which collides with another
52
// number.
53
return $this->newDialog()
54
->setTitle(pht('Changing Status Failed'))
55
->setValidationException($ex)
56
->addCancelButton($cancel_uri);
57
}
58
59
return id(new AphrontRedirectResponse())->setURI($cancel_uri);
60
}
61
62
$number_display = phutil_tag(
63
'strong',
64
array(),
65
$number->getDisplayName());
66
67
if ($is_disable) {
68
$title = pht('Disable Contact Number');
69
$body = pht(
70
'Disable the contact number %s?',
71
$number_display);
72
$button = pht('Disable Number');
73
} else {
74
$title = pht('Enable Contact Number');
75
$body = pht(
76
'Enable the contact number %s?',
77
$number_display);
78
$button = pht('Enable Number');
79
}
80
81
return $this->newDialog()
82
->setTitle($title)
83
->appendParagraph($body)
84
->addSubmitButton($button)
85
->addCancelButton($cancel_uri);
86
}
87
88
}
89
90