Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/mail/DifferentialChangeDetailMailView.php
12256 views
1
<?php
2
3
final 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
}
80
81