@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 DifferentialActionEmailCommand
4 extends MetaMTAEmailTransactionCommand {
5
6 private $command;
7 private $action;
8 private $aliases;
9 private $commandSummary;
10 private $commandDescription;
11
12 public function getCommand() {
13 return $this->command;
14 }
15
16 private function setCommand($command) {
17 $this->command = $command;
18 return $this;
19 }
20
21 private function setAction($action) {
22 $this->action = $action;
23 return $this;
24 }
25
26 private function getAction() {
27 return $this->action;
28 }
29
30 private function setCommandAliases(array $aliases) {
31 $this->aliases = $aliases;
32 return $this;
33 }
34
35 public function getCommandAliases() {
36 return $this->aliases;
37 }
38
39 public function setCommandSummary($command_summary) {
40 $this->commandSummary = $command_summary;
41 return $this;
42 }
43
44 public function getCommandSummary() {
45 return $this->commandSummary;
46 }
47
48 public function setCommandDescription($command_description) {
49 $this->commandDescription = $command_description;
50 return $this;
51 }
52
53 public function getCommandDescription() {
54 return $this->commandDescription;
55 }
56
57 public function getCommandObjects() {
58 $actions = DifferentialRevisionActionTransaction::loadAllActions();
59 $actions = msortv($actions, 'getRevisionActionOrderVector');
60
61 $objects = array();
62 foreach ($actions as $action) {
63 $keyword = $action->getCommandKeyword();
64 if ($keyword === null) {
65 continue;
66 }
67
68 $aliases = $action->getCommandAliases();
69 $summary = $action->getCommandSummary();
70
71 $object = id(new self())
72 ->setCommand($keyword)
73 ->setCommandAliases($aliases)
74 ->setAction($action->getTransactionTypeConstant())
75 ->setCommandSummary($summary);
76
77 $objects[] = $object;
78 }
79
80 return $objects;
81 }
82
83 public function isCommandSupportedForObject(
84 PhabricatorApplicationTransactionInterface $object) {
85 return ($object instanceof DifferentialRevision);
86 }
87
88 public function buildTransactions(
89 PhabricatorUser $viewer,
90 PhabricatorApplicationTransactionInterface $object,
91 PhabricatorMetaMTAReceivedMail $mail,
92 $command,
93 array $argv) {
94 $xactions = array();
95
96 $xactions[] = $object->getApplicationTransactionTemplate()
97 ->setTransactionType($this->getAction())
98 ->setNewValue(true);
99
100 return $xactions;
101 }
102
103}