@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 FundInitiativeCloseController 4 extends FundController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $request->getViewer(); 8 $id = $request->getURIData('id'); 9 10 $initiative = id(new FundInitiativeQuery()) 11 ->setViewer($viewer) 12 ->withIDs(array($id)) 13 ->requireCapabilities( 14 array( 15 PhabricatorPolicyCapability::CAN_VIEW, 16 PhabricatorPolicyCapability::CAN_EDIT, 17 )) 18 ->executeOne(); 19 if (!$initiative) { 20 return new Aphront404Response(); 21 } 22 23 $initiative_uri = '/'.$initiative->getMonogram(); 24 25 $is_close = !$initiative->isClosed(); 26 27 if ($request->isFormPost()) { 28 $type_status = FundInitiativeStatusTransaction::TRANSACTIONTYPE; 29 30 if ($is_close) { 31 $new_status = FundInitiative::STATUS_CLOSED; 32 } else { 33 $new_status = FundInitiative::STATUS_OPEN; 34 } 35 36 $xaction = id(new FundInitiativeTransaction()) 37 ->setTransactionType($type_status) 38 ->setNewValue($new_status); 39 40 $editor = id(new FundInitiativeEditor()) 41 ->setActor($viewer) 42 ->setContentSourceFromRequest($request) 43 ->setContinueOnMissingFields(true); 44 45 $editor->applyTransactions($initiative, array($xaction)); 46 47 return id(new AphrontRedirectResponse())->setURI($initiative_uri); 48 } 49 50 if ($is_close) { 51 $title = pht('Close Initiative?'); 52 $body = pht( 53 'Really close this initiative? Users will no longer be able to '. 54 'back it.'); 55 $button_text = pht('Close Initiative'); 56 } else { 57 $title = pht('Reopen Initiative?'); 58 $body = pht('Really reopen this initiative?'); 59 $button_text = pht('Reopen Initiative'); 60 } 61 62 return $this->newDialog() 63 ->setTitle($title) 64 ->appendParagraph($body) 65 ->addCancelButton($initiative_uri) 66 ->addSubmitButton($button_text); 67 } 68 69}