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