[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/paste/editor/ -> PhabricatorPasteEditor.php (source)

   1  <?php
   2  
   3  final class PhabricatorPasteEditor
   4    extends PhabricatorApplicationTransactionEditor {
   5  
   6    private $pasteFile;
   7  
   8    public function getEditorApplicationClass() {
   9      return 'PhabricatorPasteApplication';
  10    }
  11  
  12    public function getEditorObjectsDescription() {
  13      return pht('Pastes');
  14    }
  15  
  16    public static function initializeFileForPaste(
  17      PhabricatorUser $actor,
  18      $name,
  19      $data) {
  20  
  21      return PhabricatorFile::newFromFileData(
  22        $data,
  23        array(
  24          'name' => $name,
  25          'mime-type' => 'text/plain; charset=utf-8',
  26          'authorPHID' => $actor->getPHID(),
  27          'viewPolicy' => PhabricatorPolicies::POLICY_NOONE,
  28        ));
  29    }
  30  
  31    public function getTransactionTypes() {
  32      $types = parent::getTransactionTypes();
  33  
  34      $types[] = PhabricatorPasteTransaction::TYPE_CONTENT;
  35      $types[] = PhabricatorPasteTransaction::TYPE_TITLE;
  36      $types[] = PhabricatorPasteTransaction::TYPE_LANGUAGE;
  37      $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
  38      $types[] = PhabricatorTransactions::TYPE_COMMENT;
  39  
  40      return $types;
  41    }
  42  
  43    protected function getCustomTransactionOldValue(
  44      PhabricatorLiskDAO $object,
  45      PhabricatorApplicationTransaction $xaction) {
  46  
  47      switch ($xaction->getTransactionType()) {
  48        case PhabricatorPasteTransaction::TYPE_CONTENT:
  49          return $object->getFilePHID();
  50        case PhabricatorPasteTransaction::TYPE_TITLE:
  51          return $object->getTitle();
  52        case PhabricatorPasteTransaction::TYPE_LANGUAGE:
  53          return $object->getLanguage();
  54      }
  55    }
  56  
  57    protected function getCustomTransactionNewValue(
  58      PhabricatorLiskDAO $object,
  59      PhabricatorApplicationTransaction $xaction) {
  60  
  61      switch ($xaction->getTransactionType()) {
  62        case PhabricatorPasteTransaction::TYPE_CONTENT:
  63        case PhabricatorPasteTransaction::TYPE_TITLE:
  64        case PhabricatorPasteTransaction::TYPE_LANGUAGE:
  65          return $xaction->getNewValue();
  66      }
  67    }
  68  
  69    protected function applyCustomInternalTransaction(
  70      PhabricatorLiskDAO $object,
  71      PhabricatorApplicationTransaction $xaction) {
  72  
  73      switch ($xaction->getTransactionType()) {
  74        case PhabricatorPasteTransaction::TYPE_CONTENT:
  75          $object->setFilePHID($xaction->getNewValue());
  76          return;
  77        case PhabricatorPasteTransaction::TYPE_TITLE:
  78          $object->setTitle($xaction->getNewValue());
  79          return;
  80        case PhabricatorPasteTransaction::TYPE_LANGUAGE:
  81          $object->setLanguage($xaction->getNewValue());
  82          return;
  83        case PhabricatorTransactions::TYPE_VIEW_POLICY:
  84          $object->setViewPolicy($xaction->getNewValue());
  85          return;
  86        case PhabricatorTransactions::TYPE_COMMENT:
  87        case PhabricatorTransactions::TYPE_SUBSCRIBERS:
  88        case PhabricatorTransactions::TYPE_EDGE:
  89          return;
  90      }
  91  
  92      return parent::applyCustomInternalTransaction($object, $xaction);
  93    }
  94  
  95    protected function applyCustomExternalTransaction(
  96      PhabricatorLiskDAO $object,
  97      PhabricatorApplicationTransaction $xaction) {
  98  
  99      switch ($xaction->getTransactionType()) {
 100        case PhabricatorPasteTransaction::TYPE_CONTENT:
 101        case PhabricatorPasteTransaction::TYPE_TITLE:
 102        case PhabricatorPasteTransaction::TYPE_LANGUAGE:
 103        case PhabricatorTransactions::TYPE_VIEW_POLICY:
 104        case PhabricatorTransactions::TYPE_COMMENT:
 105        case PhabricatorTransactions::TYPE_SUBSCRIBERS:
 106        case PhabricatorTransactions::TYPE_EDGE:
 107          return;
 108      }
 109  
 110      return parent::applyCustomExternalTransaction($object, $xaction);
 111    }
 112  
 113    protected function extractFilePHIDsFromCustomTransaction(
 114      PhabricatorLiskDAO $object,
 115      PhabricatorApplicationTransaction $xaction) {
 116  
 117      switch ($xaction->getTransactionType()) {
 118        case PhabricatorPasteTransaction::TYPE_CONTENT:
 119          return array($xaction->getNewValue());
 120      }
 121  
 122      return parent::extractFilePHIDsFromCustomTransaction($object, $xaction);
 123    }
 124  
 125    protected function shouldSendMail(
 126      PhabricatorLiskDAO $object,
 127      array $xactions) {
 128      foreach ($xactions as $xaction) {
 129        switch ($xaction->getTransactionType()) {
 130          case PhabricatorPasteTransaction::TYPE_CONTENT:
 131            return false;
 132          default:
 133            break;
 134        }
 135      }
 136      return true;
 137    }
 138  
 139    protected function getMailSubjectPrefix() {
 140      return PhabricatorEnv::getEnvConfig('metamta.paste.subject-prefix');
 141    }
 142  
 143    protected function getMailTo(PhabricatorLiskDAO $object) {
 144      return array(
 145        $object->getAuthorPHID(),
 146        $this->requireActor()->getPHID(),
 147      );
 148    }
 149  
 150    protected function buildReplyHandler(PhabricatorLiskDAO $object) {
 151      return id(new PasteReplyHandler())
 152        ->setMailReceiver($object);
 153    }
 154  
 155    protected function buildMailTemplate(PhabricatorLiskDAO $object) {
 156      $id = $object->getID();
 157      $name = $object->getTitle();
 158  
 159      return id(new PhabricatorMetaMTAMail())
 160        ->setSubject("P{$id}: {$name}")
 161        ->addHeader('Thread-Topic', "P{$id}");
 162    }
 163  
 164    protected function buildMailBody(
 165      PhabricatorLiskDAO $object,
 166      array $xactions) {
 167  
 168      $body = parent::buildMailBody($object, $xactions);
 169  
 170      $body->addLinkSection(
 171        pht('PASTE DETAIL'),
 172        PhabricatorEnv::getProductionURI('/P'.$object->getID()));
 173  
 174      return $body;
 175    }
 176  
 177    protected function shouldPublishFeedStory(
 178      PhabricatorLiskDAO $object,
 179      array $xactions) {
 180      return true;
 181    }
 182  
 183    protected function supportsSearch() {
 184      return false;
 185    }
 186  
 187  }


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