diff options
-rw-r--r-- | Bugzilla/Constants.pm | 6 | ||||
-rw-r--r-- | Bugzilla/Flag.pm | 4 | ||||
-rwxr-xr-x | whine.pl | 8 |
3 files changed, 12 insertions, 6 deletions
diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index b745ad65f..a62629420 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -68,6 +68,8 @@ use base qw(Exporter); COMMENT_COLS + DERIVE_GROUPS_TABLES_ALREADY_LOCKED + UNLOCK_ABORT RELATIONSHIPS @@ -174,6 +176,10 @@ use constant DEFAULT_QUERY_NAME => '(Default query)'; # The column length for displayed (and wrapped) bug comments. use constant COMMENT_COLS => 80; +# Used to indicate to User::new and User::new_from_login calls +# that the derive_groups tables are already locked +use constant DERIVE_GROUPS_TABLES_ALREADY_LOCKED => 1; + # used by Bugzilla::DB to indicate that tables are being unlocked # because of error use constant UNLOCK_ABORT => 1; diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 464ddffaf..f19369c24 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -74,8 +74,6 @@ use Bugzilla::Attachment; use Bugzilla::BugMail; use Bugzilla::Constants; -use constant TABLES_ALREADY_LOCKED => 1; - # Note that this line doesn't actually import these variables for some reason, # so I have to use them as $::template and $::vars in the package code. use vars qw($template $vars); @@ -865,7 +863,7 @@ sub notify { my @new_cc_list; foreach my $cc (split(/[, ]+/, $flag->{'type'}->{'cc_list'})) { my $ccuser = Bugzilla::User->new_from_login($cc, - TABLES_ALREADY_LOCKED) + DERIVE_GROUPS_TABLES_ALREADY_LOCKED) || next; next if $flag->{'target'}->{'bug'}->{'restricted'} @@ -228,9 +228,10 @@ sub get_next_event { $dbh->bz_lock_tables('whine_schedules WRITE', 'whine_events READ', - 'profiles READ', + 'profiles WRITE', 'groups READ', - 'user_group_map READ'); + 'group_group_map READ', + 'user_group_map WRITE'); # Get the event ID for the first pending schedule $sth_next_scheduled_event->execute; @@ -239,7 +240,8 @@ sub get_next_event { return undef unless $fetched; my ($eventid, $owner_id, $subject, $body) = @{$fetched}; - my $owner = Bugzilla::User->new($owner_id); + my $owner = Bugzilla::User->new($owner_id, + DERIVE_GROUPS_TABLES_ALREADY_LOCKED); my $whineatothers = $owner->in_group('bz_canusewhineatothers'); |