Differential D25061 Diff 300 src/applications/calendar/controller/PhabricatorCalendarImportEditController.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/calendar/controller/PhabricatorCalendarImportEditController.php
<?php | <?php | ||||
final class PhabricatorCalendarImportEditController | final class PhabricatorCalendarImportEditController | ||||
extends PhabricatorCalendarController { | extends PhabricatorCalendarController { | ||||
public function handleRequest(AphrontRequest $request) { | public function handleRequest(AphrontRequest $request) { | ||||
$engine = id(new PhabricatorCalendarImportEditEngine()) | $engine = id(new PhabricatorCalendarImportEditEngine()) | ||||
->setController($this); | ->setController($this); | ||||
$id = $request->getURIData('id'); | $id = $request->getURIData('id'); | ||||
if (!$id) { | if ($id) { | ||||
// edit a specific entry | |||||
$calendar_import = self::queryImportByID($request, $id); | |||||
if (!$calendar_import) { | |||||
return new Aphront404Response(); | |||||
} | |||||
// pass the correct import engine to build the response | |||||
$engine->setImportEngine($calendar_import->getEngine()); | |||||
} else { | |||||
// create an entry | |||||
$list_uri = $this->getApplicationURI('import/'); | $list_uri = $this->getApplicationURI('import/'); | ||||
$import_type = $request->getStr('importType'); | $import_type = $request->getStr('importType'); | ||||
$import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); | $import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); | ||||
if (empty($import_engines[$import_type])) { | if (empty($import_engines[$import_type])) { | ||||
return $this->buildEngineTypeResponse($list_uri); | return $this->buildEngineTypeResponse($list_uri); | ||||
} | } | ||||
$import_engine = $import_engines[$import_type]; | $import_engine = $import_engines[$import_type]; | ||||
$engine | $engine | ||||
->addContextParameter('importType', $import_type) | ->addContextParameter('importType', $import_type) | ||||
->setImportEngine($import_engine); | ->setImportEngine($import_engine); | ||||
} | } | ||||
return $engine->buildResponse(); | return $engine->buildResponse(); | ||||
} | } | ||||
private static function queryImportByID(AphrontRequest $request, int $id) { | |||||
return id(new PhabricatorCalendarImportQuery()) | |||||
->setViewer($request->getViewer()) | |||||
->withIDs(array($id)) | |||||
->requireCapabilities( | |||||
array( | |||||
PhabricatorPolicyCapability::CAN_VIEW, | |||||
PhabricatorPolicyCapability::CAN_EDIT, | |||||
)) | |||||
->executeOne(); | |||||
} | |||||
private function buildEngineTypeResponse($cancel_uri) { | private function buildEngineTypeResponse($cancel_uri) { | ||||
$import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); | $import_engines = PhabricatorCalendarImportEngine::getAllImportEngines(); | ||||
$request = $this->getRequest(); | $request = $this->getRequest(); | ||||
$viewer = $this->getViewer(); | $viewer = $this->getViewer(); | ||||
$e_import = null; | $e_import = null; | ||||
$errors = array(); | $errors = array(); | ||||
▲ Show 20 Lines • Show All 55 Lines • Show Last 20 Lines |
Content licensed under Creative Commons Attribution-ShareAlike 4.0 (CC-BY-SA) unless otherwise noted; code licensed under Apache 2.0 or other open source licenses. · CC BY-SA 4.0 · Apache 2.0