@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
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}