Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/engineextension/DifferentialMailEngineExtension.php
12256 views
1
<?php
2
3
final class DifferentialMailEngineExtension
4
extends PhabricatorMailEngineExtension {
5
6
const EXTENSIONKEY = 'differential';
7
8
public function supportsObject($object) {
9
return ($object instanceof DifferentialRevision);
10
}
11
12
public function newMailStampTemplates($object) {
13
return array(
14
id(new PhabricatorPHIDMailStamp())
15
->setKey('author')
16
->setLabel(pht('Author')),
17
id(new PhabricatorPHIDMailStamp())
18
->setKey('reviewer')
19
->setLabel(pht('Reviewer')),
20
id(new PhabricatorPHIDMailStamp())
21
->setKey('blocking-reviewer')
22
->setLabel(pht('Reviewer')),
23
id(new PhabricatorPHIDMailStamp())
24
->setKey('resigned-reviewer')
25
->setLabel(pht('Reviewer')),
26
id(new PhabricatorPHIDMailStamp())
27
->setKey('revision-repository')
28
->setLabel(pht('Revision Repository')),
29
id(new PhabricatorPHIDMailStamp())
30
->setKey('revision-status')
31
->setLabel(pht('Revision Status')),
32
);
33
}
34
35
public function newMailStamps($object, array $xactions) {
36
$editor = $this->getEditor();
37
$viewer = $this->getViewer();
38
39
$revision = id(new DifferentialRevisionQuery())
40
->setViewer($viewer)
41
->needReviewers(true)
42
->withPHIDs(array($object->getPHID()))
43
->executeOne();
44
45
$reviewers = array();
46
$blocking = array();
47
$resigned = array();
48
foreach ($revision->getReviewers() as $reviewer) {
49
$reviewer_phid = $reviewer->getReviewerPHID();
50
51
if ($reviewer->isResigned()) {
52
$resigned[] = $reviewer_phid;
53
} else {
54
$reviewers[] = $reviewer_phid;
55
if ($reviewer->isBlocking()) {
56
$blocking[] = $reviewer_phid;
57
}
58
}
59
}
60
61
$this->getMailStamp('author')
62
->setValue($revision->getAuthorPHID());
63
64
$this->getMailStamp('reviewer')
65
->setValue($reviewers);
66
67
$this->getMailStamp('blocking-reviewer')
68
->setValue($blocking);
69
70
$this->getMailStamp('resigned-reviewer')
71
->setValue($resigned);
72
73
$this->getMailStamp('revision-repository')
74
->setValue($revision->getRepositoryPHID());
75
76
$this->getMailStamp('revision-status')
77
->setValue($revision->getModernRevisionStatus());
78
}
79
80
}
81
82