Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/almanac/controller/AlmanacBindingDisableController.php
12256 views
1
<?php
2
3
final class AlmanacBindingDisableController
4
extends AlmanacServiceController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
9
$id = $request->getURIData('id');
10
$binding = id(new AlmanacBindingQuery())
11
->setViewer($viewer)
12
->withIDs(array($id))
13
->requireCapabilities(
14
array(
15
PhabricatorPolicyCapability::CAN_VIEW,
16
PhabricatorPolicyCapability::CAN_EDIT,
17
))
18
->executeOne();
19
if (!$binding) {
20
return new Aphront404Response();
21
}
22
23
$id = $binding->getID();
24
$is_disable = !$binding->getIsDisabled();
25
$done_uri = $binding->getURI();
26
27
if ($is_disable) {
28
$disable_title = pht('Disable Binding');
29
$disable_body = pht('Disable this binding?');
30
$disable_button = pht('Disable Binding');
31
32
$v_disable = 1;
33
} else {
34
$disable_title = pht('Enable Binding');
35
$disable_body = pht('Enable this binding?');
36
$disable_button = pht('Enable Binding');
37
38
$v_disable = 0;
39
}
40
41
42
if ($request->isFormPost()) {
43
$type_disable = AlmanacBindingDisableTransaction::TRANSACTIONTYPE;
44
45
$xactions = array();
46
47
$xactions[] = id(new AlmanacBindingTransaction())
48
->setTransactionType($type_disable)
49
->setNewValue($v_disable);
50
51
$editor = id(new AlmanacBindingEditor())
52
->setActor($viewer)
53
->setContentSourceFromRequest($request)
54
->setContinueOnNoEffect(true)
55
->setContinueOnMissingFields(true);
56
57
$editor->applyTransactions($binding, $xactions);
58
59
return id(new AphrontRedirectResponse())->setURI($done_uri);
60
}
61
62
return $this->newDialog()
63
->setTitle($disable_title)
64
->appendParagraph($disable_body)
65
->addSubmitButton($disable_button)
66
->addCancelButton($done_uri);
67
}
68
69
}
70
71