]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 403755: DBI error thrown when you cannot edit a bug which is in a product restric...
authorlpsolit%gmail.com <>
Thu, 15 Nov 2007 04:37:46 +0000 (04:37 +0000)
committerlpsolit%gmail.com <>
Thu, 15 Nov 2007 04:37:46 +0000 (04:37 +0000)
Bugzilla/User.pm

index f9448ff57b24cc39eeb2ce2345e60dfc77de6c57..7cd1910c42051363f93c90603d2df8bcac1bee1f 100644 (file)
@@ -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 {