[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/countdown/controller/ -> PhabricatorCountdownEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorCountdownEditController
   4    extends PhabricatorCountdownController {
   5  
   6    private $id;
   7    public function willProcessRequest(array $data) {
   8      $this->id = idx($data, 'id');
   9    }
  10  
  11    public function processRequest() {
  12  
  13      $request = $this->getRequest();
  14      $user = $request->getUser();
  15      $epoch_control = id(new AphrontFormDateControl())
  16        ->setUser($user)
  17        ->setName('epoch')
  18        ->setLabel(pht('End Date'))
  19        ->setInitialTime(AphrontFormDateControl::TIME_END_OF_DAY);
  20  
  21      if ($this->id) {
  22        $page_title = pht('Edit Countdown');
  23        $countdown = id(new PhabricatorCountdownQuery())
  24          ->setViewer($user)
  25          ->withIDs(array($this->id))
  26          ->requireCapabilities(
  27            array(
  28              PhabricatorPolicyCapability::CAN_VIEW,
  29              PhabricatorPolicyCapability::CAN_EDIT,
  30            ))
  31          ->executeOne();
  32        if (!$countdown) {
  33          return new Aphront404Response();
  34        }
  35      } else {
  36        $page_title = pht('Create Countdown');
  37        $countdown = PhabricatorCountdown::initializeNewCountdown($user);
  38      }
  39      $epoch_control->setValue($countdown->getEpoch());
  40  
  41      $e_text = true;
  42      $errors = array();
  43      if ($request->isFormPost()) {
  44        $title = $request->getStr('title');
  45        $epoch = $epoch_control->readValueFromRequest($request);
  46        $view_policy = $request->getStr('viewPolicy');
  47  
  48        $e_text = null;
  49        if (!strlen($title)) {
  50          $e_text = pht('Required');
  51          $errors[] = pht('You must give the countdown a name.');
  52        }
  53        if (!$epoch) {
  54          $errors[] = pht('You must give the countdown a valid end date.');
  55        }
  56  
  57        if (!count($errors)) {
  58          $countdown->setTitle($title);
  59          $countdown->setEpoch($epoch);
  60          $countdown->setViewPolicy($view_policy);
  61          $countdown->save();
  62          return id(new AphrontRedirectResponse())
  63            ->setURI('/countdown/'.$countdown->getID().'/');
  64        }
  65      }
  66  
  67      if ($countdown->getEpoch()) {
  68        $display_epoch = phabricator_datetime($countdown->getEpoch(), $user);
  69      } else {
  70        $display_epoch = $request->getStr('epoch');
  71      }
  72  
  73      $crumbs = $this->buildApplicationCrumbs();
  74  
  75      $cancel_uri = '/countdown/';
  76      if ($countdown->getID()) {
  77        $cancel_uri = '/countdown/'.$countdown->getID().'/';
  78        $crumbs->addTextCrumb('C'.$countdown->getID(), $cancel_uri);
  79        $crumbs->addTextCrumb(pht('Edit'));
  80        $submit_label = pht('Save Changes');
  81      } else {
  82        $crumbs->addTextCrumb(pht('Create Countdown'));
  83        $submit_label = pht('Create Countdown');
  84      }
  85  
  86      $policies = id(new PhabricatorPolicyQuery())
  87        ->setViewer($user)
  88        ->setObject($countdown)
  89        ->execute();
  90  
  91      $form = id(new AphrontFormView())
  92        ->setUser($user)
  93        ->setAction($request->getRequestURI()->getPath())
  94        ->appendChild(
  95          id(new AphrontFormTextControl())
  96            ->setLabel(pht('Title'))
  97            ->setValue($countdown->getTitle())
  98            ->setName('title')
  99            ->setError($e_text))
 100        ->appendChild($epoch_control)
 101        ->appendChild(
 102          id(new AphrontFormPolicyControl())
 103            ->setUser($user)
 104            ->setName('viewPolicy')
 105            ->setPolicyObject($countdown)
 106            ->setPolicies($policies)
 107            ->setCapability(PhabricatorPolicyCapability::CAN_VIEW))
 108        ->appendChild(
 109          id(new AphrontFormSubmitControl())
 110            ->addCancelButton($cancel_uri)
 111            ->setValue($submit_label));
 112  
 113      $form_box = id(new PHUIObjectBoxView())
 114        ->setHeaderText($page_title)
 115        ->setFormErrors($errors)
 116        ->setForm($form);
 117  
 118      return $this->buildApplicationPage(
 119        array(
 120          $crumbs,
 121          $form_box,
 122        ),
 123        array(
 124          'title' => $page_title,
 125        ));
 126    }
 127  
 128  }


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