From: lpsolit%gmail.com <> Date: Thu, 15 Nov 2007 04:46:48 +0000 (+0000) Subject: Bug 403755: DBI error thrown when you cannot edit a bug which is in a product restric... X-Git-Tag: bugzilla-3.0.3~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=87debe0ee9a1529e8378b51552480ae03456aa56;p=thirdparty%2Fbugzilla.git 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 --- diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 2a61ab76e9..b8f0ecedbd 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 {