[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class HeraldPholioMockAdapter extends HeraldAdapter { 4 5 private $mock; 6 private $ccPHIDs = array(); 7 8 public function getAdapterApplicationClass() { 9 return 'PhabricatorPholioApplication'; 10 } 11 12 public function getAdapterContentDescription() { 13 return pht('React to mocks being created or updated.'); 14 } 15 16 public function getObject() { 17 return $this->mock; 18 } 19 20 public function setMock(PholioMock $mock) { 21 $this->mock = $mock; 22 return $this; 23 } 24 public function getMock() { 25 return $this->mock; 26 } 27 28 private function setCcPHIDs(array $cc_phids) { 29 $this->ccPHIDs = $cc_phids; 30 return $this; 31 } 32 public function getCcPHIDs() { 33 return $this->ccPHIDs; 34 } 35 36 public function getAdapterContentName() { 37 return pht('Pholio Mocks'); 38 } 39 40 public function supportsRuleType($rule_type) { 41 switch ($rule_type) { 42 case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL: 43 case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL: 44 return true; 45 case HeraldRuleTypeConfig::RULE_TYPE_OBJECT: 46 default: 47 return false; 48 } 49 } 50 51 public function getFields() { 52 return array_merge( 53 array( 54 self::FIELD_TITLE, 55 self::FIELD_BODY, 56 self::FIELD_AUTHOR, 57 self::FIELD_CC, 58 self::FIELD_PROJECTS, 59 self::FIELD_IS_NEW_OBJECT, 60 ), 61 parent::getFields()); 62 } 63 64 public function getActions($rule_type) { 65 switch ($rule_type) { 66 case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL: 67 return array_merge( 68 array( 69 self::ACTION_ADD_CC, 70 self::ACTION_NOTHING, 71 ), 72 parent::getActions($rule_type)); 73 case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL: 74 return array_merge( 75 array( 76 self::ACTION_ADD_CC, 77 self::ACTION_FLAG, 78 self::ACTION_NOTHING, 79 ), 80 parent::getActions($rule_type)); 81 } 82 } 83 84 public function getPHID() { 85 return $this->getMock()->getPHID(); 86 } 87 88 public function getHeraldName() { 89 return 'M'.$this->getMock()->getID(); 90 } 91 92 public function getHeraldField($field) { 93 switch ($field) { 94 case self::FIELD_TITLE: 95 return $this->getMock()->getName(); 96 case self::FIELD_BODY: 97 return $this->getMock()->getDescription(); 98 case self::FIELD_AUTHOR: 99 return $this->getMock()->getAuthorPHID(); 100 case self::FIELD_CC: 101 return PhabricatorSubscribersQuery::loadSubscribersForPHID( 102 $this->getMock()->getPHID()); 103 case self::FIELD_PROJECTS: 104 return PhabricatorEdgeQuery::loadDestinationPHIDs( 105 $this->getMock()->getPHID(), 106 PhabricatorProjectObjectHasProjectEdgeType::EDGECONST); 107 } 108 109 return parent::getHeraldField($field); 110 } 111 112 public function applyHeraldEffects(array $effects) { 113 assert_instances_of($effects, 'HeraldEffect'); 114 115 $result = array(); 116 foreach ($effects as $effect) { 117 $action = $effect->getAction(); 118 switch ($action) { 119 case self::ACTION_NOTHING: 120 $result[] = new HeraldApplyTranscript( 121 $effect, 122 true, 123 pht('Great success at doing nothing.')); 124 break; 125 case self::ACTION_ADD_CC: 126 foreach ($effect->getTarget() as $phid) { 127 $this->ccPHIDs[] = $phid; 128 } 129 $result[] = new HeraldApplyTranscript( 130 $effect, 131 true, 132 pht('Added address to cc list.')); 133 break; 134 case self::ACTION_FLAG: 135 $result[] = parent::applyFlagEffect( 136 $effect, 137 $this->getMock()->getPHID()); 138 break; 139 default: 140 $custom_result = parent::handleCustomHeraldEffect($effect); 141 if ($custom_result === null) { 142 throw new Exception(pht( 143 "No rules to handle action '%s'.", 144 $action)); 145 } 146 147 $result[] = $custom_result; 148 break; 149 } 150 } 151 return $result; 152 } 153 154 }
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 |