@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 PhabricatorProjectColumnStatusTransaction
4 extends PhabricatorProjectColumnTransactionType {
5
6 const TRANSACTIONTYPE = 'project:col:status';
7
8 public function generateOldValue($object) {
9 return $object->getStatus();
10 }
11
12 public function applyInternalEffects($object, $value) {
13 $object->setStatus($value);
14 }
15
16 public function applyExternalEffects($object, $value) {
17 // Update the trigger usage index, which cares about whether columns are
18 // active or not.
19 $trigger_phid = $object->getTriggerPHID();
20 if ($trigger_phid) {
21 PhabricatorSearchWorker::queueDocumentForIndexing($trigger_phid);
22 }
23 }
24
25 public function getTitle() {
26 $new = $this->getNewValue();
27
28 switch ($new) {
29 case PhabricatorProjectColumn::STATUS_ACTIVE:
30 return pht(
31 '%s unhid this column.',
32 $this->renderAuthor());
33 case PhabricatorProjectColumn::STATUS_HIDDEN:
34 return pht(
35 '%s hid this column.',
36 $this->renderAuthor());
37 }
38 }
39
40 public function validateTransactions($object, array $xactions) {
41 $errors = array();
42
43 $map = array(
44 PhabricatorProjectColumn::STATUS_ACTIVE,
45 PhabricatorProjectColumn::STATUS_HIDDEN,
46 );
47 $map = array_fuse($map);
48
49 foreach ($xactions as $xaction) {
50 $value = $xaction->getNewValue();
51 if (!isset($map[$value])) {
52 $errors[] = $this->newInvalidError(
53 pht(
54 'Column status "%s" is unrecognized, valid statuses are: %s.',
55 $value,
56 implode(', ', array_keys($map))),
57 $xaction);
58 }
59 }
60
61 return $errors;
62 }
63
64}