[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/legalpad/controller/ -> LegalpadDocumentCommentController.php (source)

   1  <?php
   2  
   3  final class LegalpadDocumentCommentController extends LegalpadController {
   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      $user = $request->getUser();
  14  
  15      if (!$request->isFormPost()) {
  16        return new Aphront400Response();
  17      }
  18  
  19      $document = id(new LegalpadDocumentQuery())
  20        ->setViewer($user)
  21        ->withIDs(array($this->id))
  22        ->needDocumentBodies(true)
  23        ->executeOne();
  24  
  25      if (!$document) {
  26        return new Aphront404Response();
  27      }
  28  
  29      $is_preview = $request->isPreviewRequest();
  30  
  31      $draft = PhabricatorDraft::buildFromRequest($request);
  32  
  33      $document_uri = $this->getApplicationURI('view/'.$document->getID());
  34  
  35      $comment = $request->getStr('comment');
  36  
  37      $xactions = array();
  38  
  39      if (strlen($comment)) {
  40        $xactions[] = id(new LegalpadTransaction())
  41          ->setTransactionType(PhabricatorTransactions::TYPE_COMMENT)
  42          ->attachComment(
  43            id(new LegalpadTransactionComment())
  44              ->setDocumentID($document->getID())
  45              ->setLineNumber(0)
  46              ->setLineLength(0)
  47              ->setContent($comment));
  48      }
  49  
  50      $editor = id(new LegalpadDocumentEditor())
  51        ->setActor($user)
  52        ->setContentSourceFromRequest($request)
  53        ->setContinueOnNoEffect($request->isContinueRequest())
  54        ->setIsPreview($is_preview);
  55  
  56      try {
  57        $xactions = $editor->applyTransactions($document, $xactions);
  58      } catch (PhabricatorApplicationTransactionNoEffectException $ex) {
  59        return id(new PhabricatorApplicationTransactionNoEffectResponse())
  60          ->setCancelURI($document_uri)
  61          ->setException($ex);
  62      }
  63  
  64      if ($draft) {
  65        $draft->replaceOrDelete();
  66      }
  67  
  68      if ($request->isAjax() && $is_preview) {
  69        return id(new PhabricatorApplicationTransactionResponse())
  70          ->setViewer($user)
  71          ->setTransactions($xactions)
  72          ->setIsPreview($is_preview);
  73      } else {
  74        return id(new AphrontRedirectResponse())->setURI($document_uri);
  75      }
  76    }
  77  
  78  }


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