@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 94 lines 2.2 kB view raw
1<?php 2 3abstract class HeraldPreCommitAdapter extends HeraldAdapter { 4 5 private $log; 6 private $hookEngine; 7 8 abstract public function isPreCommitRefAdapter(); 9 10 public function setPushLog(PhabricatorRepositoryPushLog $log) { 11 $this->log = $log; 12 return $this; 13 } 14 15 public function setHookEngine(DiffusionCommitHookEngine $engine) { 16 $this->hookEngine = $engine; 17 return $this; 18 } 19 20 public function getHookEngine() { 21 return $this->hookEngine; 22 } 23 24 public function getAdapterApplicationClass() { 25 return PhabricatorDiffusionApplication::class; 26 } 27 28 public function isTestAdapterForObject($object) { 29 return ($object instanceof PhabricatorRepositoryCommit); 30 } 31 32 public function canCreateTestAdapterForObject($object) { 33 return false; 34 } 35 36 public function getAdapterTestDescription() { 37 return pht( 38 'Commit hook events depend on repository state which is only available '. 39 'at push time, and can not be run in test mode.'); 40 } 41 42 protected function initializeNewAdapter() { 43 $this->log = new PhabricatorRepositoryPushLog(); 44 } 45 46 public function isSingleEventAdapter() { 47 return true; 48 } 49 50 public function getObject() { 51 return $this->log; 52 } 53 54 public function supportsRuleType($rule_type) { 55 switch ($rule_type) { 56 case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL: 57 case HeraldRuleTypeConfig::RULE_TYPE_OBJECT: 58 case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL: 59 return true; 60 default: 61 return false; 62 } 63 } 64 65 public function canTriggerOnObject($object) { 66 if ($object instanceof PhabricatorRepository) { 67 return true; 68 } 69 70 if ($object instanceof PhabricatorProject) { 71 return true; 72 } 73 74 return false; 75 } 76 77 public function explainValidTriggerObjects() { 78 return pht('This rule can trigger for **repositories** or **projects**.'); 79 } 80 81 public function getTriggerObjectPHIDs() { 82 return array_merge( 83 array( 84 $this->hookEngine->getRepository()->getPHID(), 85 $this->getPHID(), 86 ), 87 $this->hookEngine->getRepository()->getProjectPHIDs()); 88 } 89 90 public function supportsWebhooks() { 91 return false; 92 } 93 94}