@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 69 lines 1.9 kB view raw
1<?php 2 3final 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}