summaryrefslogtreecommitdiffstats
path: root/extensions/TrackingFlags
diff options
context:
space:
mode:
authorByron Jones <glob@mozilla.com>2014-04-08 06:02:51 +0200
committerByron Jones <glob@mozilla.com>2014-04-08 06:02:51 +0200
commit92c46e3d89e4532c02bad1ba8308637a57cae645 (patch)
tree91ae0f27b68972de4ebbb63e5e70ef98caa4dc6e /extensions/TrackingFlags
parent13408dc745948de52f0dc6f1a3e7080a39289ab4 (diff)
downloadbugzilla-92c46e3d89e4532c02bad1ba8308637a57cae645.tar.gz
bugzilla-92c46e3d89e4532c02bad1ba8308637a57cae645.tar.xz
Bug 991477: changing a tracking flag's value doesn't result in the value being updated on bugs
Diffstat (limited to 'extensions/TrackingFlags')
-rw-r--r--extensions/TrackingFlags/lib/Admin.pm13
-rw-r--r--extensions/TrackingFlags/lib/Flag/Bug.pm16
2 files changed, 27 insertions, 2 deletions
diff --git a/extensions/TrackingFlags/lib/Admin.pm b/extensions/TrackingFlags/lib/Admin.pm
index ef7672eaa..b72416819 100644
--- a/extensions/TrackingFlags/lib/Admin.pm
+++ b/extensions/TrackingFlags/lib/Admin.pm
@@ -19,6 +19,7 @@ use Bugzilla::Util qw(trim detaint_natural);
use Bugzilla::Extension::TrackingFlags::Constants;
use Bugzilla::Extension::TrackingFlags::Flag;
+use Bugzilla::Extension::TrackingFlags::Flag::Bug;
use Bugzilla::Extension::TrackingFlags::Flag::Value;
use Bugzilla::Extension::TrackingFlags::Flag::Visibility;
@@ -338,8 +339,16 @@ sub _update_db_values {
if ($value->{id}) {
my $value_obj = Bugzilla::Extension::TrackingFlags::Flag::Value->new($value->{id})
|| ThrowCodeError('tracking_flags_invalid_item_id', { item => 'flag value', id => $flag->{id} });
- $value_obj->set_all($object_set);
- $value_obj->update();
+ my $old_value = $value_obj->value;
+ if ($object_set->{value} ne $old_value) {
+ $value_obj->set_all($object_set);
+ $value_obj->update();
+ Bugzilla::Extension::TrackingFlags::Flag::Bug->update_all_values({
+ value_obj => $value_obj,
+ old_value => $old_value,
+ new_value => $value_obj->value,
+ });
+ }
} else {
$object_set->{tracking_flag_id} = $flag_obj->flag_id;
Bugzilla::Extension::TrackingFlags::Flag::Value->create($object_set);
diff --git a/extensions/TrackingFlags/lib/Flag/Bug.pm b/extensions/TrackingFlags/lib/Flag/Bug.pm
index 5e2886e66..ea382a29d 100644
--- a/extensions/TrackingFlags/lib/Flag/Bug.pm
+++ b/extensions/TrackingFlags/lib/Flag/Bug.pm
@@ -122,6 +122,22 @@ sub preload_all_the_things {
}
}
+##############################
+#### Class Methods ####
+##############################
+
+sub update_all_values {
+ my ($invocant, $params) = @_;
+ my $dbh = Bugzilla->dbh;
+ $dbh->do(
+ "UPDATE tracking_flags_bugs SET value=? WHERE tracking_flag_id=? AND value=?",
+ undef,
+ $params->{new_value},
+ $params->{value_obj}->tracking_flag_id,
+ $params->{old_value},
+ );
+}
+
###############################
#### Validators ####
###############################