@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 71 lines 2.2 kB view raw
1<?php 2 3final 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}