[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/fund/controller/ -> FundInitiativeCloseController.php (source)

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


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1