[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/differential/conduit/ -> DifferentialCreateRevisionConduitAPIMethod.php (source)

   1  <?php
   2  
   3  final class DifferentialCreateRevisionConduitAPIMethod
   4    extends DifferentialConduitAPIMethod {
   5  
   6    public function getAPIMethodName() {
   7      return 'differential.createrevision';
   8    }
   9  
  10    public function getMethodDescription() {
  11      return pht('Create a new Differential revision.');
  12    }
  13  
  14    public function defineParamTypes() {
  15      return array(
  16        // TODO: Arcanist passes this; prevent fatals after D4191 until Conduit
  17        // version 7 or newer.
  18        'user'   => 'ignored',
  19        'diffid' => 'required diffid',
  20        'fields' => 'required dict',
  21      );
  22    }
  23  
  24    public function defineReturnType() {
  25      return 'nonempty dict';
  26    }
  27  
  28    public function defineErrorTypes() {
  29      return array(
  30        'ERR_BAD_DIFF' => 'Bad diff ID.',
  31      );
  32    }
  33  
  34    protected function execute(ConduitAPIRequest $request) {
  35      $viewer = $request->getUser();
  36  
  37      $diff = id(new DifferentialDiffQuery())
  38        ->setViewer($viewer)
  39        ->withIDs(array($request->getValue('diffid')))
  40        ->executeOne();
  41      if (!$diff) {
  42        throw new ConduitException('ERR_BAD_DIFF');
  43      }
  44  
  45      $revision = DifferentialRevision::initializeNewRevision($viewer);
  46      $revision->attachReviewerStatus(array());
  47  
  48      $this->applyFieldEdit(
  49        $request,
  50        $revision,
  51        $diff,
  52        $request->getValue('fields', array()),
  53        $message = null);
  54  
  55      return array(
  56        'revisionid'  => $revision->getID(),
  57        'uri'         => PhabricatorEnv::getURI('/D'.$revision->getID()),
  58      );
  59    }
  60  
  61  }


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