From 297024e7c3f8792a39ac05db857c0aeb6069a794 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Thu, 15 Nov 2007 04:37:46 +0000 Subject: =?UTF-8?q?Bug=20403755:=20DBI=20error=20thrown=20when=20you=20can?= =?UTF-8?q?not=20edit=20a=20bug=20which=20is=20in=20a=20product=20restrict?= =?UTF-8?q?ed=20by=20CANEDIT=20-=20Patch=20by=20Fr=C3=83=C2=A9d=C3=83?= =?UTF-8?q?=C2=A9ric=20Buclin=20=20r/a=3Dmkanat?= 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.1