summaryrefslogtreecommitdiffstats
path: root/Bugzilla/User.pm
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2007-11-15 05:37:46 +0100
committerlpsolit%gmail.com <>2007-11-15 05:37:46 +0100
commit297024e7c3f8792a39ac05db857c0aeb6069a794 (patch)
tree134662765f11d9d0820e1f52063452262aa93815 /Bugzilla/User.pm
parentaad7465874a9480671cab086ddb739bb76e182af (diff)
downloadbugzilla-297024e7c3f8792a39ac05db857c0aeb6069a794.tar.gz
bugzilla-297024e7c3f8792a39ac05db857c0aeb6069a794.tar.xz
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.pm25
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 {