[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/repository/worker/ -> PhabricatorRepositoryCommitParserWorker.php (source)

   1  <?php
   2  
   3  abstract class PhabricatorRepositoryCommitParserWorker
   4    extends PhabricatorWorker {
   5  
   6    protected $commit;
   7    protected $repository;
   8  
   9    private function loadCommit() {
  10      if ($this->commit) {
  11        return $this->commit;
  12      }
  13  
  14      $commit_id = idx($this->getTaskData(), 'commitID');
  15      if (!$commit_id) {
  16        throw new PhabricatorWorkerPermanentFailureException(
  17          pht('No "%s" in task data.', 'commitID'));
  18      }
  19  
  20      $commit = id(new PhabricatorRepositoryCommit())->load($commit_id);
  21  
  22      if (!$commit) {
  23        throw new PhabricatorWorkerPermanentFailureException(
  24          pht('Commit "%s" does not exist.', $commit_id));
  25      }
  26  
  27      return $this->commit = $commit;
  28    }
  29  
  30    final public function doWork() {
  31      if (!$this->loadCommit()) {
  32        return;
  33      }
  34  
  35      $repository = id(new PhabricatorRepositoryQuery())
  36        ->setViewer(PhabricatorUser::getOmnipotentUser())
  37        ->withIDs(array($this->commit->getRepositoryID()))
  38        ->executeOne();
  39      if (!$repository) {
  40        return;
  41      }
  42  
  43      $this->repository = $repository;
  44      $this->parseCommit($repository, $this->commit);
  45    }
  46  
  47    final protected function shouldQueueFollowupTasks() {
  48      return !idx($this->getTaskData(), 'only');
  49    }
  50  
  51    abstract protected function parseCommit(
  52      PhabricatorRepository $repository,
  53      PhabricatorRepositoryCommit $commit);
  54  
  55    protected function isBadCommit($full_commit_name) {
  56      $repository = new PhabricatorRepository();
  57  
  58      $bad_commit = queryfx_one(
  59        $repository->establishConnection('w'),
  60        'SELECT * FROM %T WHERE fullCommitName = %s',
  61        PhabricatorRepository::TABLE_BADCOMMIT,
  62        $full_commit_name);
  63  
  64      return (bool)$bad_commit;
  65    }
  66  
  67    public function renderForDisplay(PhabricatorUser $viewer) {
  68      $suffix = parent::renderForDisplay($viewer);
  69  
  70      $commit = id(new DiffusionCommitQuery())
  71        ->setViewer($viewer)
  72        ->withIDs(array(idx($this->getTaskData(), 'commitID')))
  73        ->executeOne();
  74      if (!$commit) {
  75        return $suffix;
  76      }
  77  
  78      $link = DiffusionView::linkCommit(
  79        $commit->getRepository(),
  80        $commit->getCommitIdentifier());
  81  
  82      return array($link, $suffix);
  83    }
  84  }


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