Path: blob/master/src/applications/fund/controller/FundInitiativeCloseController.php
12256 views
<?php12final class FundInitiativeCloseController3extends FundController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();7$id = $request->getURIData('id');89$initiative = id(new FundInitiativeQuery())10->setViewer($viewer)11->withIDs(array($id))12->requireCapabilities(13array(14PhabricatorPolicyCapability::CAN_VIEW,15PhabricatorPolicyCapability::CAN_EDIT,16))17->executeOne();18if (!$initiative) {19return new Aphront404Response();20}2122$initiative_uri = '/'.$initiative->getMonogram();2324$is_close = !$initiative->isClosed();2526if ($request->isFormPost()) {27$type_status = FundInitiativeStatusTransaction::TRANSACTIONTYPE;2829if ($is_close) {30$new_status = FundInitiative::STATUS_CLOSED;31} else {32$new_status = FundInitiative::STATUS_OPEN;33}3435$xaction = id(new FundInitiativeTransaction())36->setTransactionType($type_status)37->setNewValue($new_status);3839$editor = id(new FundInitiativeEditor())40->setActor($viewer)41->setContentSourceFromRequest($request)42->setContinueOnMissingFields(true);4344$editor->applyTransactions($initiative, array($xaction));4546return id(new AphrontRedirectResponse())->setURI($initiative_uri);47}4849if ($is_close) {50$title = pht('Close Initiative?');51$body = pht(52'Really close this initiative? Users will no longer be able to '.53'back it.');54$button_text = pht('Close Initiative');55} else {56$title = pht('Reopen Initiative?');57$body = pht('Really reopen this initiative?');58$button_text = pht('Reopen Initiative');59}6061return $this->newDialog()62->setTitle($title)63->appendParagraph($body)64->addCancelButton($initiative_uri)65->addSubmitButton($button_text);66}6768}697071