@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 PhrictionTransaction
4 extends PhabricatorModularTransaction {
5
6 const MAILTAG_TITLE = 'phriction-title';
7 const MAILTAG_CONTENT = 'phriction-content';
8 const MAILTAG_DELETE = 'phriction-delete';
9 const MAILTAG_SUBSCRIBERS = 'phriction-subscribers';
10 const MAILTAG_OTHER = 'phriction-other';
11
12 public function getApplicationName() {
13 return 'phriction';
14 }
15
16 public function getApplicationTransactionType() {
17 return PhrictionDocumentPHIDType::TYPECONST;
18 }
19
20 public function getApplicationTransactionCommentObject() {
21 return new PhrictionTransactionComment();
22 }
23
24 public function getBaseTransactionClass() {
25 return PhrictionDocumentTransactionType::class;
26 }
27
28 public function getRequiredHandlePHIDs() {
29 $phids = parent::getRequiredHandlePHIDs();
30 $new = $this->getNewValue();
31 switch ($this->getTransactionType()) {
32 case PhrictionDocumentMoveToTransaction::TRANSACTIONTYPE:
33 case PhrictionDocumentMoveAwayTransaction::TRANSACTIONTYPE:
34 $phids[] = $new['phid'];
35 break;
36 case PhrictionDocumentTitleTransaction::TRANSACTIONTYPE:
37 if ($this->getMetadataValue('stub:create:phid')) {
38 $phids[] = $this->getMetadataValue('stub:create:phid');
39 }
40 break;
41 }
42
43 return $phids;
44 }
45
46 public function shouldHideForMail(array $xactions) {
47 switch ($this->getTransactionType()) {
48 case PhrictionDocumentMoveToTransaction::TRANSACTIONTYPE:
49 case PhrictionDocumentMoveAwayTransaction::TRANSACTIONTYPE:
50 return true;
51 case PhrictionDocumentTitleTransaction::TRANSACTIONTYPE:
52 return $this->getMetadataValue('stub:create:phid', false);
53 }
54 return parent::shouldHideForMail($xactions);
55 }
56
57 public function getMailTags() {
58 $tags = array();
59 switch ($this->getTransactionType()) {
60 case PhrictionDocumentTitleTransaction::TRANSACTIONTYPE:
61 $tags[] = self::MAILTAG_TITLE;
62 break;
63 case PhrictionDocumentContentTransaction::TRANSACTIONTYPE:
64 $tags[] = self::MAILTAG_CONTENT;
65 break;
66 case PhrictionDocumentDeleteTransaction::TRANSACTIONTYPE:
67 $tags[] = self::MAILTAG_DELETE;
68 break;
69 case PhabricatorTransactions::TYPE_SUBSCRIBERS:
70 $tags[] = self::MAILTAG_SUBSCRIBERS;
71 break;
72 default:
73 $tags[] = self::MAILTAG_OTHER;
74 break;
75 }
76 return $tags;
77 }
78
79}