From 92c46e3d89e4532c02bad1ba8308637a57cae645 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 8 Apr 2014 12:02:51 +0800 Subject: Bug 991477: changing a tracking flag's value doesn't result in the value being updated on bugs --- extensions/TrackingFlags/lib/Admin.pm | 13 +++++++++++-- extensions/TrackingFlags/lib/Flag/Bug.pm | 16 ++++++++++++++++ 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 #### ############################### -- cgit v1.2.3-24-g4f1b From db77cd059ce3b3e94d54fc16a22e68f00cdba809 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 8 Apr 2014 12:23:39 +0800 Subject: clear memcached at the start of checksetup.pl --- checksetup.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/checksetup.pl b/checksetup.pl index 4f37ea350..501138c6d 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -144,6 +144,8 @@ Bugzilla::DB::bz_create_database() if $lc_hash->{'db_check'}; # now get a handle to the database: my $dbh = Bugzilla->dbh; +# Clear all keys from Memcached to ensure we see the correct schema. +Bugzilla->memcached->clear_all(); # Create the tables, and do any database-specific schema changes. $dbh->bz_setup_database(); # Populate the tables that hold the values for the [% INCLUDE global/userselect.html.tmpl -- cgit v1.2.3-24-g4f1b From ffad8c2a00a341fdea08187a836c4d4365b2556f Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Thu, 10 Apr 2014 21:29:17 +0800 Subject: Bug 994570: unable to create an attachment with review+ : "You must provide a reviewer for review requests" --- extensions/Review/Extension.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/Review/Extension.pm b/extensions/Review/Extension.pm index c22f0a652..3f3383697 100644 --- a/extensions/Review/Extension.pm +++ b/extensions/Review/Extension.pm @@ -380,7 +380,7 @@ sub _check_review_flag { # extract the set flag-types my @flagtype_ids = map { /^flag_type-(\d+)$/ ? $1 : () } $cgi->param(); - @flagtype_ids = grep { $cgi->param("flag_type-$_") ne 'X' } @flagtype_ids; + @flagtype_ids = grep { $cgi->param("flag_type-$_") eq '?' } @flagtype_ids; return unless scalar(@flagtype_ids); # find valid review flagtypes -- cgit v1.2.3-24-g4f1b