From 297024e7c3f8792a39ac05db857c0aeb6069a794 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Thu, 15 Nov 2007 04:37:46 +0000 Subject: Bug 403755: DBI error thrown when you cannot edit a bug which is in a product restricted by CANEDIT - Patch by Frédéric Buclin r/a=mkanat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/User.pm | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'Bugzilla/User.pm') diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index f9448ff57..7cd1910c4 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -562,21 +562,16 @@ sub can_see_user { sub can_edit_product { my ($self, $prod_id) = @_; my $dbh = Bugzilla->dbh; - my $sth = $self->{sthCanEditProductId}; - my $userid = $self->id; - my $query = q{SELECT group_id FROM group_control_map - WHERE product_id =? - AND canedit != 0 }; - if (%{$self->groups}) { - my $groups = join(',', values(%{$self->groups})); - $query .= qq{AND group_id NOT IN($groups)}; - } - unless ($sth) { $sth = $dbh->prepare($query); } - $sth->execute($prod_id); - $self->{sthCanEditProductId} = $sth; - my $result = $sth->fetchrow_array(); - - return (!defined($result)); + + my $has_external_groups = + $dbh->selectrow_array('SELECT 1 + FROM group_control_map + WHERE product_id = ? + AND canedit != 0 + AND group_id NOT IN(' . $self->groups_as_string . ')', + undef, $prod_id); + + return !$has_external_groups; } sub can_see_bug { -- cgit v1.2.3-24-g4f1b