Path: blob/master/src/applications/flag/herald/PhabricatorFlagAddFlagHeraldAction.php
12256 views
<?php12final class PhabricatorFlagAddFlagHeraldAction3extends PhabricatorFlagHeraldAction {45const ACTIONCONST = 'flag';67const DO_FLAG = 'do.flag';8const DO_IGNORE = 'do.flagged';910public function getHeraldActionName() {11return pht('Mark with flag');12}1314public function applyEffect($object, HeraldEffect $effect) {15$phid = $this->getAdapter()->getPHID();16$rule = $effect->getRule();17$author = $rule->getAuthor();1819$flag = PhabricatorFlagQuery::loadUserFlag($author, $phid);20if ($flag) {21$this->logEffect(self::DO_IGNORE, $flag->getColor());22return;23}2425$flag = id(new PhabricatorFlag())26->setOwnerPHID($author->getPHID())27->setType(phid_get_type($phid))28->setObjectPHID($phid)29->setReasonPHID($rule->getPHID())30->setColor($effect->getTarget())31->setNote('')32->save();3334$this->logEffect(self::DO_FLAG, $flag->getColor());35}3637public function getHeraldActionValueType() {38return id(new HeraldSelectFieldValue())39->setKey('flag.color')40->setOptions(PhabricatorFlagColor::getColorNameMap())41->setDefault(PhabricatorFlagColor::COLOR_BLUE);42}4344protected function getActionEffectMap() {45return array(46self::DO_IGNORE => array(47'icon' => 'fa-times',48'color' => 'grey',49'name' => pht('Already Marked'),50),51self::DO_FLAG => array(52'icon' => 'fa-flag',53'name' => pht('Flagged'),54),55);56}5758public function renderActionDescription($value) {59$color = PhabricatorFlagColor::getColorName($value);60return pht('Mark with %s flag.', $color);61}6263protected function renderActionEffectDescription($type, $data) {64switch ($type) {65case self::DO_IGNORE:66return pht(67'Already marked with %s flag.',68PhabricatorFlagColor::getColorName($data));69case self::DO_FLAG:70return pht(71'Marked with "%s" flag.',72PhabricatorFlagColor::getColorName($data));73}74}7576}777879