@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 79 lines 1.8 kB view raw
1<?php 2 3final class DifferentialChangeDetailMailView 4 extends DifferentialMailView { 5 6 private $viewer; 7 private $diff; 8 private $patch; 9 10 public function setViewer(PhabricatorUser $viewer) { 11 $this->viewer = $viewer; 12 return $this; 13 } 14 15 public function getViewer() { 16 return $this->viewer; 17 } 18 19 public function setDiff(DifferentialDiff $diff) { 20 $this->diff = $diff; 21 return $this; 22 } 23 24 public function getDiff() { 25 return $this->diff; 26 } 27 28 public function setPatch($patch) { 29 $this->patch = $patch; 30 return $this; 31 } 32 33 public function getPatch() { 34 return $this->patch; 35 } 36 37 public function buildMailSection() { 38 $viewer = $this->getViewer(); 39 40 $diff = $this->getDiff(); 41 42 $engine = new PhabricatorMarkupEngine(); 43 $viewstate = new PhabricatorChangesetViewState(); 44 45 $out = array(); 46 foreach ($diff->getChangesets() as $changeset) { 47 $parser = id(new DifferentialChangesetParser()) 48 ->setViewer($viewer) 49 ->setViewState($viewstate) 50 ->setChangeset($changeset) 51 ->setLinesOfContext(2) 52 ->setMarkupEngine($engine); 53 54 $parser->setRenderer(new DifferentialChangesetOneUpMailRenderer()); 55 $block = $parser->render(); 56 57 $filename = $changeset->getFilename(); 58 $filename = $this->renderHeaderBold($filename); 59 $header = $this->renderHeaderBlock($filename); 60 61 $out[] = $this->renderContentBox( 62 array( 63 $header, 64 $this->renderCodeBlock($block), 65 )); 66 } 67 68 $out = phutil_implode_html(phutil_tag('br'), $out); 69 70 $patch_html = $out; 71 72 $patch_text = $this->getPatch(); 73 74 return id(new PhabricatorMetaMTAMailSection()) 75 ->addPlaintextFragment($patch_text) 76 ->addHTMLFragment($patch_html); 77 } 78 79}