@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 64 lines 1.9 kB view raw
1<?php 2 3final class PasteCreateMailReceiver 4 extends PhabricatorApplicationMailReceiver { 5 6 protected function newApplication() { 7 return new PhabricatorPasteApplication(); 8 } 9 10 protected function processReceivedMail( 11 PhabricatorMetaMTAReceivedMail $mail, 12 PhutilEmailAddress $target) { 13 $author = $this->getAuthor(); 14 15 $title = $mail->getSubject(); 16 if (!$title) { 17 $title = pht('Email Paste'); 18 } 19 20 $xactions = array(); 21 22 $xactions[] = id(new PhabricatorPasteTransaction()) 23 ->setTransactionType(PhabricatorPasteContentTransaction::TRANSACTIONTYPE) 24 ->setNewValue($mail->getCleanTextBody()); 25 26 $xactions[] = id(new PhabricatorPasteTransaction()) 27 ->setTransactionType(PhabricatorPasteTitleTransaction::TRANSACTIONTYPE) 28 ->setNewValue($title); 29 30 $paste = PhabricatorPaste::initializeNewPaste($author); 31 32 $content_source = $mail->newContentSource(); 33 34 $editor = id(new PhabricatorPasteEditor()) 35 ->setActor($author) 36 ->setContentSource($content_source) 37 ->setContinueOnNoEffect(true); 38 $xactions = $editor->applyTransactions($paste, $xactions); 39 40 $mail->setRelatedPHID($paste->getPHID()); 41 42 $sender = $this->getSender(); 43 if (!$sender) { 44 return; 45 } 46 47 $subject_prefix = pht('[Paste]'); 48 $subject = pht('You successfully created a paste.'); 49 $paste_uri = PhabricatorEnv::getProductionURI($paste->getURI()); 50 $body = new PhabricatorMetaMTAMailBody(); 51 $body->addRawSection($subject); 52 $body->addTextSection(pht('PASTE LINK'), $paste_uri); 53 54 id(new PhabricatorMetaMTAMail()) 55 ->addTos(array($sender->getPHID())) 56 ->setSubject($subject) 57 ->setSubjectPrefix($subject_prefix) 58 ->setFrom($sender->getPHID()) 59 ->setRelatedPHID($paste->getPHID()) 60 ->setBody($body->render()) 61 ->saveAndSend(); 62 } 63 64}