1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 00:02:41 +01:00
phorge-phorge/src/applications/calendar/controller/PhabricatorCalendarImportDisableController.php
epriestley 6e2a86470b Support disabling calendar imports
Summary: Ref T10747. This doesn't do much for ICS file imports (you can't disable them since it doesn't do anything meaningful) but will matter more for ICS-subscription imports later.

Test Plan: Clicked "Disable" on an ICS file import, got explanatory dialog.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10747

Differential Revision: https://secure.phabricator.com/D16702
2016-10-13 09:05:55 -07:00

71 lines
2.1 KiB
PHP

<?php
final class PhabricatorCalendarImportDisableController
extends PhabricatorCalendarController {
public function handleRequest(AphrontRequest $request) {
$viewer = $request->getViewer();
$import = id(new PhabricatorCalendarImportQuery())
->setViewer($viewer)
->withIDs(array($request->getURIData('id')))
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
))
->executeOne();
if (!$import) {
return new Aphront404Response();
}
$import_uri = $import->getURI();
$is_disable = !$import->getIsDisabled();
if (!$import->getEngine()->canDisable($viewer, $import)) {
$reason = $import->getEngine()->explainCanDisable($viewer, $import);
return $this->newDialog()
->setTitle(pht('Unable to Disable'))
->appendParagraph($reason)
->addCancelButton($import_uri);
}
if ($request->isFormPost()) {
$xactions = array();
$xactions[] = id(new PhabricatorCalendarImportTransaction())
->setTransactionType(
PhabricatorCalendarImportDisableTransaction::TRANSACTIONTYPE)
->setNewValue($is_disable ? 1 : 0);
$editor = id(new PhabricatorCalendarImportEditor())
->setActor($viewer)
->setContinueOnNoEffect(true)
->setContinueOnMissingFields(true)
->setContentSourceFromRequest($request);
$editor->applyTransactions($import, $xactions);
return id(new AphrontRedirectResponse())->setURI($import_uri);
}
if ($is_disable) {
$title = pht('Disable Import');
$body = pht(
'Disable this import? Events from this source will no longer be '.
'updated.');
$button = pht('Disable Import');
} else {
$title = pht('Enable Import');
$body = pht(
'Enable this import? Events from this source will be updated again.');
$button = pht('Enable Import');
}
return $this->newDialog()
->setTitle($title)
->appendParagraph($body)
->addCancelButton($import_uri)
->addSubmitButton($button);
}
}