Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/calendar/controller/PhabricatorCalendarImportDisableController.php
12256 views
1
<?php
2
3
final class PhabricatorCalendarImportDisableController
4
extends PhabricatorCalendarController {
5
6
public function handleRequest(AphrontRequest $request) {
7
$viewer = $request->getViewer();
8
9
$import = id(new PhabricatorCalendarImportQuery())
10
->setViewer($viewer)
11
->withIDs(array($request->getURIData('id')))
12
->requireCapabilities(
13
array(
14
PhabricatorPolicyCapability::CAN_VIEW,
15
PhabricatorPolicyCapability::CAN_EDIT,
16
))
17
->executeOne();
18
if (!$import) {
19
return new Aphront404Response();
20
}
21
22
$import_uri = $import->getURI();
23
$is_disable = !$import->getIsDisabled();
24
25
if (!$import->getEngine()->canDisable($viewer, $import)) {
26
$reason = $import->getEngine()->explainCanDisable($viewer, $import);
27
return $this->newDialog()
28
->setTitle(pht('Unable to Disable'))
29
->appendParagraph($reason)
30
->addCancelButton($import_uri);
31
}
32
33
if ($request->isFormPost()) {
34
$xactions = array();
35
$xactions[] = id(new PhabricatorCalendarImportTransaction())
36
->setTransactionType(
37
PhabricatorCalendarImportDisableTransaction::TRANSACTIONTYPE)
38
->setNewValue($is_disable ? 1 : 0);
39
40
$editor = id(new PhabricatorCalendarImportEditor())
41
->setActor($viewer)
42
->setContinueOnNoEffect(true)
43
->setContinueOnMissingFields(true)
44
->setContentSourceFromRequest($request);
45
46
$editor->applyTransactions($import, $xactions);
47
48
return id(new AphrontRedirectResponse())->setURI($import_uri);
49
}
50
51
if ($is_disable) {
52
$title = pht('Disable Import');
53
$body = pht(
54
'Disable this import? Events from this source will no longer be '.
55
'updated.');
56
$button = pht('Disable Import');
57
} else {
58
$title = pht('Enable Import');
59
$body = pht(
60
'Enable this import? Events from this source will be updated again.');
61
$button = pht('Enable Import');
62
}
63
64
return $this->newDialog()
65
->setTitle($title)
66
->appendParagraph($body)
67
->addCancelButton($import_uri)
68
->addSubmitButton($button);
69
}
70
71
}
72
73