From 379d122f297cee76752388892223bcd3f1df0235 Mon Sep 17 00:00:00 2001 From: Dylan William Hardison Date: Tue, 16 Jun 2015 16:04:01 -0400 Subject: Bug 825946: tracking flags should be cleared when a bug is moved to a product/component where they are not valid --- extensions/TrackingFlags/Extension.pm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'extensions/TrackingFlags/Extension.pm') diff --git a/extensions/TrackingFlags/Extension.pm b/extensions/TrackingFlags/Extension.pm index 0c70c54f6..33792dc38 100644 --- a/extensions/TrackingFlags/Extension.pm +++ b/extensions/TrackingFlags/Extension.pm @@ -26,6 +26,7 @@ use Bugzilla::Install::Filesystem; use Bugzilla::Product; use JSON; +use List::MoreUtils qw(none); our $VERSION = '1'; @@ -637,12 +638,28 @@ sub bug_end_of_update { is_active => 1, }); + my $product_id = $bug->product_id; + my $component_id = $bug->component_id; + my $is_visible = sub { + $_->product_id == $product_id && (!$_->component_id || $_->component_id == $component_id); + }; + my (@flag_changes); foreach my $flag (@$tracking_flags) { my $flag_name = $flag->name; my $new_value = $bug->$flag_name; my $old_value = $old_bug->$flag_name; + if ($flag->bug_flag->id) { + my $visibility = $flag->visibility; + if (none { $is_visible->() } @$visibility) { + push(@flag_changes, { flag => $flag, + added => '---', + removed => $new_value }); + next; + } + } + if ($new_value ne $old_value) { # Do not allow if the user cannot set the old value or the new value if (!$flag->can_set_value($new_value)) { -- cgit v1.2.3-24-g4f1b