1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-22 05:20:56 +01:00

Add a "remove projects" action to Herald

Summary: Fixes T7849. This adds "Remove Projects" to all objects which implement `PhabricatorProjectInterface`.

Test Plan:
  - Wrote a rule to remove a project, edited task, saw the project removed.
  - Admired entirely reasonable implementation complexity.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T7849

Differential Revision: https://secure.phabricator.com/D12505
This commit is contained in:
epriestley 2015-04-22 14:01:44 -07:00
parent 959e9d9ac2
commit d8b4f32d04

View file

@ -78,6 +78,7 @@ abstract class HeraldAdapter {
const ACTION_FLAG = 'flag'; const ACTION_FLAG = 'flag';
const ACTION_ASSIGN_TASK = 'assigntask'; const ACTION_ASSIGN_TASK = 'assigntask';
const ACTION_ADD_PROJECTS = 'addprojects'; const ACTION_ADD_PROJECTS = 'addprojects';
const ACTION_REMOVE_PROJECTS = 'removeprojects';
const ACTION_ADD_REVIEWERS = 'addreviewers'; const ACTION_ADD_REVIEWERS = 'addreviewers';
const ACTION_ADD_BLOCKING_REVIEWERS = 'addblockingreviewers'; const ACTION_ADD_BLOCKING_REVIEWERS = 'addblockingreviewers';
const ACTION_APPLY_BUILD_PLANS = 'applybuildplans'; const ACTION_APPLY_BUILD_PLANS = 'applybuildplans';
@ -798,6 +799,7 @@ abstract class HeraldAdapter {
if (($object instanceof PhabricatorProjectInterface)) { if (($object instanceof PhabricatorProjectInterface)) {
if ($rule_type == HeraldRuleTypeConfig::RULE_TYPE_GLOBAL) { if ($rule_type == HeraldRuleTypeConfig::RULE_TYPE_GLOBAL) {
$actions[] = self::ACTION_ADD_PROJECTS; $actions[] = self::ACTION_ADD_PROJECTS;
$actions[] = self::ACTION_REMOVE_PROJECTS;
} }
} }
@ -817,6 +819,7 @@ abstract class HeraldAdapter {
self::ACTION_FLAG => pht('Mark with flag'), self::ACTION_FLAG => pht('Mark with flag'),
self::ACTION_ASSIGN_TASK => pht('Assign task to'), self::ACTION_ASSIGN_TASK => pht('Assign task to'),
self::ACTION_ADD_PROJECTS => pht('Add projects'), self::ACTION_ADD_PROJECTS => pht('Add projects'),
self::ACTION_REMOVE_PROJECTS => pht('Remove projects'),
self::ACTION_ADD_REVIEWERS => pht('Add reviewers'), self::ACTION_ADD_REVIEWERS => pht('Add reviewers'),
self::ACTION_ADD_BLOCKING_REVIEWERS => pht('Add blocking reviewers'), self::ACTION_ADD_BLOCKING_REVIEWERS => pht('Add blocking reviewers'),
self::ACTION_APPLY_BUILD_PLANS => pht('Run build plans'), self::ACTION_APPLY_BUILD_PLANS => pht('Run build plans'),
@ -833,7 +836,6 @@ abstract class HeraldAdapter {
self::ACTION_AUDIT => pht('Trigger an Audit by me'), self::ACTION_AUDIT => pht('Trigger an Audit by me'),
self::ACTION_FLAG => pht('Mark with flag'), self::ACTION_FLAG => pht('Mark with flag'),
self::ACTION_ASSIGN_TASK => pht('Assign task to me'), self::ACTION_ASSIGN_TASK => pht('Assign task to me'),
self::ACTION_ADD_PROJECTS => pht('Add projects'),
self::ACTION_ADD_REVIEWERS => pht('Add me as a reviewer'), self::ACTION_ADD_REVIEWERS => pht('Add me as a reviewer'),
self::ACTION_ADD_BLOCKING_REVIEWERS => self::ACTION_ADD_BLOCKING_REVIEWERS =>
pht('Add me as a blocking reviewer'), pht('Add me as a blocking reviewer'),
@ -999,6 +1001,7 @@ abstract class HeraldAdapter {
case self::ACTION_FLAG: case self::ACTION_FLAG:
return self::VALUE_FLAG_COLOR; return self::VALUE_FLAG_COLOR;
case self::ACTION_ADD_PROJECTS: case self::ACTION_ADD_PROJECTS:
case self::ACTION_REMOVE_PROJECTS:
return self::VALUE_PROJECT; return self::VALUE_PROJECT;
} }
} else { } else {
@ -1010,6 +1013,7 @@ abstract class HeraldAdapter {
case self::ACTION_NOTHING: case self::ACTION_NOTHING:
return self::VALUE_NONE; return self::VALUE_NONE;
case self::ACTION_ADD_PROJECTS: case self::ACTION_ADD_PROJECTS:
case self::ACTION_REMOVE_PROJECTS:
return self::VALUE_PROJECT; return self::VALUE_PROJECT;
case self::ACTION_FLAG: case self::ACTION_FLAG:
return self::VALUE_FLAG_COLOR; return self::VALUE_FLAG_COLOR;
@ -1521,6 +1525,7 @@ abstract class HeraldAdapter {
switch ($action) { switch ($action) {
case self::ACTION_ADD_PROJECTS: case self::ACTION_ADD_PROJECTS:
case self::ACTION_REMOVE_PROJECTS:
return $this->applyProjectsEffect($effect); return $this->applyProjectsEffect($effect);
case self::ACTION_FLAG: case self::ACTION_FLAG:
return $this->applyFlagEffect($effect); return $this->applyFlagEffect($effect);
@ -1548,7 +1553,11 @@ abstract class HeraldAdapter {
*/ */
private function applyProjectsEffect(HeraldEffect $effect) { private function applyProjectsEffect(HeraldEffect $effect) {
$kind = '+'; if ($effect->getAction() == self::ACTION_ADD_PROJECTS) {
$kind = '+';
} else {
$kind = '-';
}
$project_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST; $project_type = PhabricatorProjectObjectHasProjectEdgeType::EDGECONST;
$project_phids = $effect->getTarget(); $project_phids = $effect->getTarget();