@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 PhabricatorSlowvoteEditor
4 extends PhabricatorApplicationTransactionEditor {
5
6 public function getEditorApplicationClass() {
7 return PhabricatorSlowvoteApplication::class;
8 }
9
10 public function getEditorObjectsDescription() {
11 return pht('Slowvote');
12 }
13
14 public function getCreateObjectTitle($author, $object) {
15 return pht('%s created this poll.', $author);
16 }
17
18 public function getCreateObjectTitleForFeed($author, $object) {
19 return pht('%s created %s.', $author, $object);
20 }
21
22 public function getTransactionTypes() {
23 $types = parent::getTransactionTypes();
24 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
25
26 return $types;
27 }
28
29 protected function shouldSendMail(
30 PhabricatorLiskDAO $object,
31 array $xactions) {
32 return true;
33 }
34
35 public function getMailTagsMap() {
36 return array(
37 PhabricatorSlowvoteTransaction::MAILTAG_DETAILS =>
38 pht('Someone changes the poll details.'),
39 PhabricatorSlowvoteTransaction::MAILTAG_RESPONSES =>
40 pht('Someone votes on a poll.'),
41 PhabricatorSlowvoteTransaction::MAILTAG_OTHER =>
42 pht('Other poll activity not listed above occurs.'),
43 );
44 }
45
46 protected function buildMailTemplate(PhabricatorLiskDAO $object) {
47 $monogram = $object->getMonogram();
48 $name = $object->getQuestion();
49
50 return id(new PhabricatorMetaMTAMail())
51 ->setSubject("{$monogram}: {$name}");
52 }
53
54 protected function buildMailBody(
55 PhabricatorLiskDAO $object,
56 array $xactions) {
57
58 $body = parent::buildMailBody($object, $xactions);
59 $description = $object->getDescription();
60
61 if (strlen($description)) {
62 $body->addRemarkupSection(
63 pht('SLOWVOTE DESCRIPTION'),
64 $object->getDescription());
65 }
66
67 $body->addLinkSection(
68 pht('SLOWVOTE DETAIL'),
69 PhabricatorEnv::getProductionURI('/'.$object->getMonogram()));
70
71 return $body;
72 }
73
74 protected function getMailTo(PhabricatorLiskDAO $object) {
75 return array(
76 $object->getAuthorPHID(),
77 $this->requireActor()->getPHID(),
78 );
79 }
80 protected function getMailSubjectPrefix() {
81 return '[Slowvote]';
82 }
83
84 protected function buildReplyHandler(PhabricatorLiskDAO $object) {
85 return id(new PhabricatorSlowvoteReplyHandler())
86 ->setMailReceiver($object);
87 }
88
89 protected function shouldPublishFeedStory(
90 PhabricatorLiskDAO $object,
91 array $xactions) {
92 return true;
93 }
94
95}