[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorMacroEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return 'PhabricatorMacroApplication'; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Macros'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = PhabricatorTransactions::TYPE_COMMENT; 18 $types[] = PhabricatorMacroTransactionType::TYPE_NAME; 19 $types[] = PhabricatorMacroTransactionType::TYPE_DISABLED; 20 $types[] = PhabricatorMacroTransactionType::TYPE_FILE; 21 $types[] = PhabricatorMacroTransactionType::TYPE_AUDIO; 22 $types[] = PhabricatorMacroTransactionType::TYPE_AUDIO_BEHAVIOR; 23 24 return $types; 25 } 26 27 protected function getCustomTransactionOldValue( 28 PhabricatorLiskDAO $object, 29 PhabricatorApplicationTransaction $xaction) { 30 31 switch ($xaction->getTransactionType()) { 32 case PhabricatorMacroTransactionType::TYPE_NAME: 33 return $object->getName(); 34 case PhabricatorMacroTransactionType::TYPE_DISABLED: 35 return $object->getIsDisabled(); 36 case PhabricatorMacroTransactionType::TYPE_FILE: 37 return $object->getFilePHID(); 38 case PhabricatorMacroTransactionType::TYPE_AUDIO: 39 return $object->getAudioPHID(); 40 case PhabricatorMacroTransactionType::TYPE_AUDIO_BEHAVIOR: 41 return $object->getAudioBehavior(); 42 } 43 } 44 45 protected function getCustomTransactionNewValue( 46 PhabricatorLiskDAO $object, 47 PhabricatorApplicationTransaction $xaction) { 48 49 switch ($xaction->getTransactionType()) { 50 case PhabricatorMacroTransactionType::TYPE_NAME: 51 case PhabricatorMacroTransactionType::TYPE_DISABLED: 52 case PhabricatorMacroTransactionType::TYPE_FILE: 53 case PhabricatorMacroTransactionType::TYPE_AUDIO: 54 case PhabricatorMacroTransactionType::TYPE_AUDIO_BEHAVIOR: 55 return $xaction->getNewValue(); 56 } 57 } 58 59 protected function applyCustomInternalTransaction( 60 PhabricatorLiskDAO $object, 61 PhabricatorApplicationTransaction $xaction) { 62 63 switch ($xaction->getTransactionType()) { 64 case PhabricatorMacroTransactionType::TYPE_NAME: 65 $object->setName($xaction->getNewValue()); 66 break; 67 case PhabricatorMacroTransactionType::TYPE_DISABLED: 68 $object->setIsDisabled($xaction->getNewValue()); 69 break; 70 case PhabricatorMacroTransactionType::TYPE_FILE: 71 $object->setFilePHID($xaction->getNewValue()); 72 break; 73 case PhabricatorMacroTransactionType::TYPE_AUDIO: 74 $object->setAudioPHID($xaction->getNewValue()); 75 break; 76 case PhabricatorMacroTransactionType::TYPE_AUDIO_BEHAVIOR: 77 $object->setAudioBehavior($xaction->getNewValue()); 78 break; 79 } 80 } 81 82 protected function applyCustomExternalTransaction( 83 PhabricatorLiskDAO $object, 84 PhabricatorApplicationTransaction $xaction) { 85 86 switch ($xaction->getTransactionType()) { 87 case PhabricatorMacroTransactionType::TYPE_FILE: 88 case PhabricatorMacroTransactionType::TYPE_AUDIO: 89 // When changing a macro's image or audio, attach the underlying files 90 // to the macro (and detach the old files). 91 $old = $xaction->getOldValue(); 92 $new = $xaction->getNewValue(); 93 $all = array(); 94 if ($old) { 95 $all[] = $old; 96 } 97 if ($new) { 98 $all[] = $new; 99 } 100 101 $files = id(new PhabricatorFileQuery()) 102 ->setViewer($this->requireActor()) 103 ->withPHIDs($all) 104 ->execute(); 105 $files = mpull($files, null, 'getPHID'); 106 107 $old_file = idx($files, $old); 108 if ($old_file) { 109 $old_file->detachFromObject($object->getPHID()); 110 } 111 112 $new_file = idx($files, $new); 113 if ($new_file) { 114 $new_file->attachToObject($object->getPHID()); 115 } 116 break; 117 } 118 } 119 120 protected function mergeTransactions( 121 PhabricatorApplicationTransaction $u, 122 PhabricatorApplicationTransaction $v) { 123 124 $type = $u->getTransactionType(); 125 switch ($type) { 126 case PhabricatorMacroTransactionType::TYPE_NAME: 127 case PhabricatorMacroTransactionType::TYPE_DISABLED: 128 case PhabricatorMacroTransactionType::TYPE_FILE: 129 case PhabricatorMacroTransactionType::TYPE_AUDIO: 130 case PhabricatorMacroTransactionType::TYPE_AUDIO_BEHAVIOR: 131 return $v; 132 } 133 134 return parent::mergeTransactions($u, $v); 135 } 136 137 protected function shouldSendMail( 138 PhabricatorLiskDAO $object, 139 array $xactions) { 140 foreach ($xactions as $xaction) { 141 switch ($xaction->getTransactionType()) { 142 case PhabricatorMacroTransactionType::TYPE_NAME; 143 return ($xaction->getOldValue() !== null); 144 default: 145 break; 146 } 147 } 148 return true; 149 } 150 151 protected function buildReplyHandler(PhabricatorLiskDAO $object) { 152 return id(new PhabricatorMacroReplyHandler()) 153 ->setMailReceiver($object); 154 } 155 156 protected function buildMailTemplate(PhabricatorLiskDAO $object) { 157 $name = $object->getName(); 158 $name = 'Image Macro "'.$name.'"'; 159 160 return id(new PhabricatorMetaMTAMail()) 161 ->setSubject($name) 162 ->addHeader('Thread-Topic', $name); 163 } 164 165 protected function getMailTo(PhabricatorLiskDAO $object) { 166 return array( 167 $this->requireActor()->getPHID(), 168 ); 169 } 170 171 protected function buildMailBody( 172 PhabricatorLiskDAO $object, 173 array $xactions) { 174 175 $body = parent::buildMailBody($object, $xactions); 176 $body->addLinkSection( 177 pht('MACRO DETAIL'), 178 PhabricatorEnv::getProductionURI('/macro/view/'.$object->getID().'/')); 179 180 return $body; 181 } 182 183 protected function getMailSubjectPrefix() { 184 return PhabricatorEnv::getEnvConfig('metamta.macro.subject-prefix'); 185 } 186 187 protected function shouldPublishFeedStory( 188 PhabricatorLiskDAO $object, 189 array $xactions) { 190 return true; 191 } 192 }
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 |