Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/flag/herald/PhabricatorFlagRemoveFlagHeraldAction.php
12256 views
1
<?php
2
3
final class PhabricatorFlagRemoveFlagHeraldAction
4
extends PhabricatorFlagHeraldAction {
5
6
const ACTIONCONST = 'unflag';
7
8
const DO_UNFLAG = 'do.unflag';
9
const DO_IGNORE_UNFLAG = 'do.ignore-unflag';
10
11
public function getHeraldActionName() {
12
return pht('Remove flag');
13
}
14
15
public function applyEffect($object, HeraldEffect $effect) {
16
$phid = $this->getAdapter()->getPHID();
17
$rule = $effect->getRule();
18
$author = $rule->getAuthor();
19
20
$flag = PhabricatorFlagQuery::loadUserFlag($author, $phid);
21
if (!$flag) {
22
$this->logEffect(self::DO_IGNORE_UNFLAG, null);
23
return;
24
}
25
26
if ($flag->getColor() !== $effect->getTarget()) {
27
$this->logEffect(self::DO_IGNORE_UNFLAG, $flag->getColor());
28
return;
29
}
30
31
$flag->delete();
32
33
$this->logEffect(self::DO_UNFLAG, $flag->getColor());
34
}
35
36
public function getHeraldActionValueType() {
37
return id(new HeraldSelectFieldValue())
38
->setKey('flag.color')
39
->setOptions(PhabricatorFlagColor::getColorNameMap())
40
->setDefault(PhabricatorFlagColor::COLOR_BLUE);
41
}
42
43
protected function getActionEffectMap() {
44
return array(
45
self::DO_IGNORE_UNFLAG => array(
46
'icon' => 'fa-times',
47
'color' => 'grey',
48
'name' => pht('Did Not Remove Flag'),
49
),
50
self::DO_UNFLAG => array(
51
'icon' => 'fa-flag',
52
'name' => pht('Removed Flag'),
53
),
54
);
55
}
56
57
public function renderActionDescription($value) {
58
$color = PhabricatorFlagColor::getColorName($value);
59
return pht('Remove %s flag.', $color);
60
}
61
62
protected function renderActionEffectDescription($type, $data) {
63
switch ($type) {
64
case self::DO_IGNORE_UNFLAG:
65
if (!$data) {
66
return pht('Not marked with any flag.');
67
} else {
68
return pht(
69
'Marked with flag of the wrong color ("%s").',
70
PhabricatorFlagColor::getColorName($data));
71
}
72
case self::DO_UNFLAG:
73
return pht(
74
'Removed "%s" flag.',
75
PhabricatorFlagColor::getColorName($data));
76
}
77
}
78
79
}
80
81