Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/maniphest/herald/ManiphestTaskStatusHeraldAction.php
12256 views
1
<?php
2
3
final class ManiphestTaskStatusHeraldAction
4
extends HeraldAction {
5
6
const ACTIONCONST = 'maniphest.status';
7
const DO_STATUS = 'do.status';
8
9
public function supportsObject($object) {
10
return ($object instanceof ManiphestTask);
11
}
12
13
public function getActionGroupKey() {
14
return HeraldApplicationActionGroup::ACTIONGROUPKEY;
15
}
16
17
public function getHeraldActionName() {
18
return pht('Change status to');
19
}
20
21
public function supportsRuleType($rule_type) {
22
return ($rule_type != HeraldRuleTypeConfig::RULE_TYPE_PERSONAL);
23
}
24
25
public function applyEffect($object, HeraldEffect $effect) {
26
$status = head($effect->getTarget());
27
28
if (!$status) {
29
$this->logEffect(self::DO_STANDARD_EMPTY);
30
return;
31
}
32
33
$adapter = $this->getAdapter();
34
$object = $adapter->getObject();
35
$current = $object->getStatus();
36
37
if ($current == $status) {
38
$this->logEffect(self::DO_STANDARD_NO_EFFECT, $status);
39
return;
40
}
41
42
$xaction = $adapter->newTransaction()
43
->setTransactionType(ManiphestTaskStatusTransaction::TRANSACTIONTYPE)
44
->setNewValue($status);
45
46
$adapter->queueTransaction($xaction);
47
$this->logEffect(self::DO_STATUS, $status);
48
}
49
50
public function getHeraldActionStandardType() {
51
return self::STANDARD_PHID_LIST;
52
}
53
54
public function renderActionDescription($value) {
55
$status = head($value);
56
$name = ManiphestTaskStatus::getTaskStatusName($status);
57
return pht('Change status to: %s.', $name);
58
}
59
60
protected function getDatasource() {
61
return id(new ManiphestTaskStatusDatasource())
62
->setLimit(1);
63
}
64
65
protected function getDatasourceValueMap() {
66
return ManiphestTaskStatus::getTaskStatusMap();
67
}
68
69
protected function getActionEffectMap() {
70
return array(
71
self::DO_STATUS => array(
72
'icon' => 'fa-pencil',
73
'color' => 'green',
74
'name' => pht('Changed Task Status'),
75
),
76
);
77
}
78
79
protected function renderActionEffectDescription($type, $data) {
80
switch ($type) {
81
case self::DO_STATUS:
82
return pht(
83
'Changed task status to "%s".',
84
ManiphestTaskStatus::getTaskStatusName($data));
85
}
86
}
87
88
}
89
90