diff options
author | lpsolit%gmail.com <> | 2007-11-15 04:37:46 +0000 |
---|---|---|
committer | lpsolit%gmail.com <> | 2007-11-15 04:37:46 +0000 |
commit | 297024e7c3f8792a39ac05db857c0aeb6069a794 (patch) | |
tree | 134662765f11d9d0820e1f52063452262aa93815 /Bugzilla/User.pm | |
parent | aad7465874a9480671cab086ddb739bb76e182af (diff) | |
download | bugs-297024e7c3f8792a39ac05db857c0aeb6069a794.tar bugs-297024e7c3f8792a39ac05db857c0aeb6069a794.tar.gz bugs-297024e7c3f8792a39ac05db857c0aeb6069a794.tar.bz2 bugs-297024e7c3f8792a39ac05db857c0aeb6069a794.tar.xz bugs-297024e7c3f8792a39ac05db857c0aeb6069a794.zip |
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 <LpSolit@gmail.com> r/a=mkanat
Diffstat (limited to 'Bugzilla/User.pm')
-rw-r--r-- | Bugzilla/User.pm | 25 |
1 files changed, 10 insertions, 15 deletions
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 { |