[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |