@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 PhabricatorPasteEditor
4 extends PhabricatorApplicationTransactionEditor {
5
6 private $newPasteTitle;
7
8 public function getNewPasteTitle() {
9 return $this->newPasteTitle;
10 }
11
12 public function getEditorApplicationClass() {
13 return PhabricatorPasteApplication::class;
14 }
15
16 public function getEditorObjectsDescription() {
17 return pht('Pastes');
18 }
19
20 public function getCreateObjectTitle($author, $object) {
21 return pht('%s created this paste.', $author);
22 }
23
24 public function getCreateObjectTitleForFeed($author, $object) {
25 return pht('%s created %s.', $author, $object);
26 }
27
28 public function getTransactionTypes() {
29 $types = parent::getTransactionTypes();
30
31 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
32 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
33 $types[] = PhabricatorTransactions::TYPE_COMMENT;
34
35 return $types;
36 }
37
38 protected function expandTransactions(
39 PhabricatorLiskDAO $object,
40 array $xactions) {
41
42 $new_title = $object->getTitle();
43 foreach ($xactions as $xaction) {
44 $type = $xaction->getTransactionType();
45 if ($type === PhabricatorPasteTitleTransaction::TRANSACTIONTYPE) {
46 $new_title = $xaction->getNewValue();
47 }
48 }
49 $this->newPasteTitle = $new_title;
50
51 return parent::expandTransactions($object, $xactions);
52 }
53
54 protected function shouldSendMail(
55 PhabricatorLiskDAO $object,
56 array $xactions) {
57
58 if ($this->getIsNewObject()) {
59 return false;
60 }
61
62 return true;
63 }
64
65 protected function getMailSubjectPrefix() {
66 return pht('[Paste]');
67 }
68
69 protected function getMailTo(PhabricatorLiskDAO $object) {
70 return array(
71 $object->getAuthorPHID(),
72 $this->getActingAsPHID(),
73 );
74 }
75
76 public function getMailTagsMap() {
77 return array(
78 PhabricatorPasteTransaction::MAILTAG_CONTENT =>
79 pht('Paste title, language or text changes.'),
80 PhabricatorPasteTransaction::MAILTAG_COMMENT =>
81 pht('Someone comments on a paste.'),
82 PhabricatorPasteTransaction::MAILTAG_OTHER =>
83 pht('Other paste activity not listed above occurs.'),
84 );
85 }
86
87 protected function buildReplyHandler(PhabricatorLiskDAO $object) {
88 return id(new PasteReplyHandler())
89 ->setMailReceiver($object);
90 }
91
92 protected function buildMailTemplate(PhabricatorLiskDAO $object) {
93 $id = $object->getID();
94 $name = $object->getTitle();
95
96 return id(new PhabricatorMetaMTAMail())
97 ->setSubject("P{$id}: {$name}");
98 }
99
100 protected function buildMailBody(
101 PhabricatorLiskDAO $object,
102 array $xactions) {
103
104 $body = parent::buildMailBody($object, $xactions);
105
106 $body->addLinkSection(
107 pht('PASTE DETAIL'),
108 PhabricatorEnv::getProductionURI('/P'.$object->getID()));
109
110 return $body;
111 }
112
113 protected function shouldPublishFeedStory(
114 PhabricatorLiskDAO $object,
115 array $xactions) {
116 return true;
117 }
118
119 protected function supportsSearch() {
120 return true;
121 }
122
123}