[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/files/controller/ -> PhabricatorFileEditController.php (source)

   1  <?php
   2  
   3  final class PhabricatorFileEditController extends PhabricatorFileController {
   4  
   5    private $id;
   6  
   7    public function willProcessRequest(array $data) {
   8      $this->id = $data['id'];
   9    }
  10  
  11    public function processRequest() {
  12      $request = $this->getRequest();
  13      $viewer = $request->getUser();
  14  
  15      $file = id(new PhabricatorFileQuery())
  16        ->setViewer($viewer)
  17        ->withIDs(array($this->id))
  18        ->requireCapabilities(
  19          array(
  20            PhabricatorPolicyCapability::CAN_VIEW,
  21            PhabricatorPolicyCapability::CAN_EDIT,
  22          ))
  23        ->executeOne();
  24      if (!$file) {
  25        return new Aphront404Response();
  26      }
  27  
  28      $title = pht('Edit %s', $file->getName());
  29      $view_uri = '/'.$file->getMonogram();
  30  
  31      $validation_exception = null;
  32      if ($request->isFormPost()) {
  33        $can_view = $request->getStr('canView');
  34  
  35        $xactions = array();
  36  
  37        $xactions[] = id(new PhabricatorFileTransaction())
  38          ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY)
  39          ->setNewValue($can_view);
  40  
  41        $editor = id(new PhabricatorFileEditor())
  42          ->setActor($viewer)
  43          ->setContentSourceFromRequest($request)
  44          ->setContinueOnNoEffect(true);
  45  
  46        try {
  47          $editor->applyTransactions($file, $xactions);
  48          return id(new AphrontRedirectResponse())->setURI($view_uri);
  49        } catch (PhabricatorApplicationTransactionValidationException $ex) {
  50          $validation_exception = $ex;
  51  
  52          $file->setViewPolicy($can_view);
  53        }
  54      }
  55  
  56  
  57      $policies = id(new PhabricatorPolicyQuery())
  58        ->setViewer($viewer)
  59        ->setObject($file)
  60        ->execute();
  61  
  62      $form = id(new AphrontFormView())
  63        ->setUser($viewer)
  64        ->appendChild(
  65          id(new AphrontFormPolicyControl())
  66            ->setUser($viewer)
  67            ->setCapability(PhabricatorPolicyCapability::CAN_VIEW)
  68            ->setPolicyObject($file)
  69            ->setPolicies($policies)
  70            ->setName('canView'))
  71        ->appendChild(
  72          id(new AphrontFormSubmitControl())
  73            ->addCancelButton($view_uri)
  74            ->setValue(pht('Save Changes')));
  75  
  76      $crumbs = $this->buildApplicationCrumbs()
  77        ->addTextCrumb($file->getMonogram(), $view_uri)
  78        ->addTextCrumb(pht('Edit'));
  79  
  80      $object_box = id(new PHUIObjectBoxView())
  81        ->setHeaderText($title)
  82        ->setValidationException($validation_exception)
  83        ->appendChild($form);
  84  
  85      return $this->buildApplicationPage(
  86        array(
  87          $crumbs,
  88          $object_box,
  89        ),
  90        array(
  91          'title' => $title,
  92        ));
  93    }
  94  
  95  }


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