summaryrefslogtreecommitdiffstats
path: root/extensions/TrackingFlags/Extension.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/TrackingFlags/Extension.pm')
-rw-r--r--extensions/TrackingFlags/Extension.pm17
1 files changed, 17 insertions, 0 deletions
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)) {