[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/paste/mail/ -> PasteCreateMailReceiver.php (source)

   1  <?php
   2  
   3  final class PasteCreateMailReceiver extends PhabricatorMailReceiver {
   4  
   5    public function isEnabled() {
   6      $app_class = 'PhabricatorPasteApplication';
   7      return PhabricatorApplication::isClassInstalled($app_class);
   8    }
   9  
  10    public function canAcceptMail(PhabricatorMetaMTAReceivedMail $mail) {
  11      $config_key = 'metamta.paste.public-create-email';
  12      $create_address = PhabricatorEnv::getEnvConfig($config_key);
  13      if (!$create_address) {
  14        return false;
  15      }
  16  
  17      foreach ($mail->getToAddresses() as $to_address) {
  18        if ($this->matchAddresses($create_address, $to_address)) {
  19          return true;
  20        }
  21      }
  22  
  23      return false;
  24    }
  25  
  26    protected function processReceivedMail(
  27      PhabricatorMetaMTAReceivedMail $mail,
  28      PhabricatorUser $sender) {
  29  
  30      $title = $mail->getSubject();
  31      if (!$title) {
  32        $title = pht('Email Paste');
  33      }
  34  
  35      $file = PhabricatorPasteEditor::initializeFileForPaste(
  36        $sender,
  37        $title,
  38        $mail->getCleanTextBody());
  39  
  40      $xactions = array();
  41  
  42      $xactions[] = id(new PhabricatorPasteTransaction())
  43        ->setTransactionType(PhabricatorPasteTransaction::TYPE_CONTENT)
  44        ->setNewValue($file->getPHID());
  45  
  46      $xactions[] = id(new PhabricatorPasteTransaction())
  47        ->setTransactionType(PhabricatorPasteTransaction::TYPE_TITLE)
  48        ->setNewValue($title);
  49  
  50      $xactions[] = id(new PhabricatorPasteTransaction())
  51        ->setTransactionType(PhabricatorPasteTransaction::TYPE_LANGUAGE)
  52        ->setNewValue(''); // auto-detect
  53  
  54      $paste = PhabricatorPaste::initializeNewPaste($sender);
  55  
  56      $content_source = PhabricatorContentSource::newForSource(
  57        PhabricatorContentSource::SOURCE_EMAIL,
  58        array(
  59          'id' => $mail->getID(),
  60        ));
  61  
  62      $editor = id(new PhabricatorPasteEditor())
  63        ->setActor($sender)
  64        ->setContentSource($content_source)
  65        ->setContinueOnNoEffect(true);
  66      $xactions = $editor->applyTransactions($paste, $xactions);
  67  
  68      $mail->setRelatedPHID($paste->getPHID());
  69  
  70      $subject_prefix =
  71        PhabricatorEnv::getEnvConfig('metamta.paste.subject-prefix');
  72      $subject = pht('You successfully created a paste.');
  73      $paste_uri = PhabricatorEnv::getProductionURI($paste->getURI());
  74      $body = new PhabricatorMetaMTAMailBody();
  75      $body->addRawSection($subject);
  76      $body->addTextSection(pht('PASTE LINK'), $paste_uri);
  77  
  78      id(new PhabricatorMetaMTAMail())
  79        ->addTos(array($sender->getPHID()))
  80        ->setSubject($subject)
  81        ->setSubjectPrefix($subject_prefix)
  82        ->setFrom($sender->getPHID())
  83        ->setRelatedPHID($paste->getPHID())
  84        ->setBody($body->render())
  85        ->saveAndSend();
  86    }
  87  
  88  }


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