@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 68 lines 1.9 kB view raw
1<?php 2 3final class HarbormasterPlanDisableController 4 extends HarbormasterPlanController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $this->getViewer(); 8 9 $plan = id(new HarbormasterBuildPlanQuery()) 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 (!$plan) { 19 return new Aphront404Response(); 20 } 21 22 $plan_uri = $plan->getURI(); 23 24 if ($request->isFormPost()) { 25 26 $type_status = HarbormasterBuildPlanStatusTransaction::TRANSACTIONTYPE; 27 28 $v_status = $plan->isDisabled() 29 ? HarbormasterBuildPlan::STATUS_ACTIVE 30 : HarbormasterBuildPlan::STATUS_DISABLED; 31 32 $xactions = array(); 33 34 $xactions[] = id(new HarbormasterBuildPlanTransaction()) 35 ->setTransactionType($type_status) 36 ->setNewValue($v_status); 37 38 $editor = id(new HarbormasterBuildPlanEditor()) 39 ->setActor($viewer) 40 ->setContinueOnNoEffect(true) 41 ->setContinueOnMissingFields(true) 42 ->setContentSourceFromRequest($request); 43 44 $editor->applyTransactions($plan, $xactions); 45 46 return id(new AphrontRedirectResponse())->setURI($plan_uri); 47 } 48 49 if ($plan->isDisabled()) { 50 $title = pht('Enable Build Plan'); 51 $body = pht('Enable this build plan?'); 52 $button = pht('Enable Plan'); 53 } else { 54 $title = pht('Disable Build Plan'); 55 $body = pht( 56 'Disable this build plan? It will no longer be executed '. 57 'automatically.'); 58 $button = pht('Disable Plan'); 59 } 60 61 return $this->newDialog() 62 ->setTitle($title) 63 ->appendChild($body) 64 ->addSubmitButton($button) 65 ->addCancelButton($plan_uri); 66 } 67 68}