Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/flag/herald/PhabricatorFlagAddFlagHeraldAction.php
12256 views
1
<?php
2
3
final class PhabricatorFlagAddFlagHeraldAction
4
extends PhabricatorFlagHeraldAction {
5
6
const ACTIONCONST = 'flag';
7
8
const DO_FLAG = 'do.flag';
9
const DO_IGNORE = 'do.flagged';
10
11
public function getHeraldActionName() {
12
return pht('Mark with 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, $flag->getColor());
23
return;
24
}
25
26
$flag = id(new PhabricatorFlag())
27
->setOwnerPHID($author->getPHID())
28
->setType(phid_get_type($phid))
29
->setObjectPHID($phid)
30
->setReasonPHID($rule->getPHID())
31
->setColor($effect->getTarget())
32
->setNote('')
33
->save();
34
35
$this->logEffect(self::DO_FLAG, $flag->getColor());
36
}
37
38
public function getHeraldActionValueType() {
39
return id(new HeraldSelectFieldValue())
40
->setKey('flag.color')
41
->setOptions(PhabricatorFlagColor::getColorNameMap())
42
->setDefault(PhabricatorFlagColor::COLOR_BLUE);
43
}
44
45
protected function getActionEffectMap() {
46
return array(
47
self::DO_IGNORE => array(
48
'icon' => 'fa-times',
49
'color' => 'grey',
50
'name' => pht('Already Marked'),
51
),
52
self::DO_FLAG => array(
53
'icon' => 'fa-flag',
54
'name' => pht('Flagged'),
55
),
56
);
57
}
58
59
public function renderActionDescription($value) {
60
$color = PhabricatorFlagColor::getColorName($value);
61
return pht('Mark with %s flag.', $color);
62
}
63
64
protected function renderActionEffectDescription($type, $data) {
65
switch ($type) {
66
case self::DO_IGNORE:
67
return pht(
68
'Already marked with %s flag.',
69
PhabricatorFlagColor::getColorName($data));
70
case self::DO_FLAG:
71
return pht(
72
'Marked with "%s" flag.',
73
PhabricatorFlagColor::getColorName($data));
74
}
75
}
76
77
}
78
79