[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

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

   1  <?php
   2  
   3  final class DifferentialGetRevisionConduitAPIMethod
   4    extends DifferentialConduitAPIMethod {
   5  
   6    public function getAPIMethodName() {
   7      return 'differential.getrevision';
   8    }
   9  
  10    public function getMethodStatus() {
  11      return self::METHOD_STATUS_DEPRECATED;
  12    }
  13  
  14    public function getMethodStatusDescription() {
  15      return "Replaced by 'differential.query'.";
  16    }
  17  
  18    public function getMethodDescription() {
  19      return 'Load the content of a revision from Differential.';
  20    }
  21  
  22    public function defineParamTypes() {
  23      return array(
  24        'revision_id' => 'required id',
  25      );
  26    }
  27  
  28    public function defineReturnType() {
  29      return 'nonempty dict';
  30    }
  31  
  32    public function defineErrorTypes() {
  33      return array(
  34        'ERR_BAD_REVISION'    => 'No such revision exists.',
  35      );
  36    }
  37  
  38    protected function execute(ConduitAPIRequest $request) {
  39      $diff = null;
  40  
  41      $revision_id = $request->getValue('revision_id');
  42      $revision = id(new DifferentialRevisionQuery())
  43        ->withIDs(array($revision_id))
  44        ->setViewer($request->getUser())
  45        ->needRelationships(true)
  46        ->needReviewerStatus(true)
  47        ->executeOne();
  48  
  49      if (!$revision) {
  50        throw new ConduitException('ERR_BAD_REVISION');
  51      }
  52  
  53      $reviewer_phids = array_values($revision->getReviewers());
  54  
  55      $diffs = id(new DifferentialDiffQuery())
  56        ->setViewer($request->getUser())
  57        ->withRevisionIDs(array($revision_id))
  58        ->needChangesets(true)
  59        ->needArcanistProjects(true)
  60        ->execute();
  61      $diff_dicts = mpull($diffs, 'getDiffDict');
  62  
  63      $commit_dicts = array();
  64      $commit_phids = $revision->loadCommitPHIDs();
  65      $handles = id(new PhabricatorHandleQuery())
  66        ->setViewer($request->getUser())
  67        ->withPHIDs($commit_phids)
  68        ->execute();
  69  
  70      foreach ($commit_phids as $commit_phid) {
  71        $commit_dicts[] = array(
  72          'fullname'      => $handles[$commit_phid]->getFullName(),
  73          'dateCommitted' => $handles[$commit_phid]->getTimestamp(),
  74        );
  75      }
  76  
  77      $field_data = $this->loadCustomFieldsForRevisions(
  78        $request->getUser(),
  79        array($revision));
  80  
  81      $dict = array(
  82        'id' => $revision->getID(),
  83        'phid' => $revision->getPHID(),
  84        'authorPHID' => $revision->getAuthorPHID(),
  85        'uri' => PhabricatorEnv::getURI('/D'.$revision->getID()),
  86        'title' => $revision->getTitle(),
  87        'status' => $revision->getStatus(),
  88        'statusName'  =>
  89          ArcanistDifferentialRevisionStatus::getNameForRevisionStatus(
  90            $revision->getStatus()),
  91        'summary' => $revision->getSummary(),
  92        'testPlan' => $revision->getTestPlan(),
  93        'lineCount' => $revision->getLineCount(),
  94        'reviewerPHIDs' => $reviewer_phids,
  95        'diffs' => $diff_dicts,
  96        'commits' => $commit_dicts,
  97        'auxiliary' => idx($field_data, $revision->getPHID(), array()),
  98      );
  99  
 100      return $dict;
 101    }
 102  
 103  }


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