Path: blob/master/src/applications/flag/herald/PhabricatorFlagRemoveFlagHeraldAction.php
12256 views
<?php12final class PhabricatorFlagRemoveFlagHeraldAction3extends PhabricatorFlagHeraldAction {45const ACTIONCONST = 'unflag';67const DO_UNFLAG = 'do.unflag';8const DO_IGNORE_UNFLAG = 'do.ignore-unflag';910public function getHeraldActionName() {11return pht('Remove 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_UNFLAG, null);22return;23}2425if ($flag->getColor() !== $effect->getTarget()) {26$this->logEffect(self::DO_IGNORE_UNFLAG, $flag->getColor());27return;28}2930$flag->delete();3132$this->logEffect(self::DO_UNFLAG, $flag->getColor());33}3435public function getHeraldActionValueType() {36return id(new HeraldSelectFieldValue())37->setKey('flag.color')38->setOptions(PhabricatorFlagColor::getColorNameMap())39->setDefault(PhabricatorFlagColor::COLOR_BLUE);40}4142protected function getActionEffectMap() {43return array(44self::DO_IGNORE_UNFLAG => array(45'icon' => 'fa-times',46'color' => 'grey',47'name' => pht('Did Not Remove Flag'),48),49self::DO_UNFLAG => array(50'icon' => 'fa-flag',51'name' => pht('Removed Flag'),52),53);54}5556public function renderActionDescription($value) {57$color = PhabricatorFlagColor::getColorName($value);58return pht('Remove %s flag.', $color);59}6061protected function renderActionEffectDescription($type, $data) {62switch ($type) {63case self::DO_IGNORE_UNFLAG:64if (!$data) {65return pht('Not marked with any flag.');66} else {67return pht(68'Marked with flag of the wrong color ("%s").',69PhabricatorFlagColor::getColorName($data));70}71case self::DO_UNFLAG:72return pht(73'Removed "%s" flag.',74PhabricatorFlagColor::getColorName($data));75}76}7778}798081