@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
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}