@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
at recaptime-dev/main 79 lines 2.4 kB view raw
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}