[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/macro/editor/ -> PhabricatorMacroEditor.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1