From f9d60a391181bf20c06ed49c6a41eb1ff4a7bac6 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" Date: Sat, 21 Jan 2006 13:48:56 +0000 Subject: [PATCH] =?UTF-8?q?Bug=20323955:=20Deleting=20a=20group=20incorrec?= =?UTF-8?q?tly=20checks=20for=20user=20group=20membership=20(miss=20group?= =?UTF-8?q?=20inheritance)=20-=20Patch=20by=20Fr=C3=A9d=C3=A9ric=20Buclin?= =?UTF-8?q?=20=20r=3Djoel=20a=3Djustdave?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.0.0.236/trunk@187966 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/webtools/bugzilla/editgroups.cgi | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mozilla/webtools/bugzilla/editgroups.cgi b/mozilla/webtools/bugzilla/editgroups.cgi index 92cd475c330..617260230ac 100755 --- a/mozilla/webtools/bugzilla/editgroups.cgi +++ b/mozilla/webtools/bugzilla/editgroups.cgi @@ -32,6 +32,7 @@ use lib "."; use Bugzilla; use Bugzilla::Constants; use Bugzilla::Group; +use Bugzilla::User; require "globals.pl"; my $cgi = Bugzilla->cgi; @@ -338,10 +339,12 @@ if ($action eq 'del') { ThrowUserError("system_group_not_deletable", { name => $name }); } - my $hasusers = $dbh->selectrow_array('SELECT 1 FROM user_group_map - WHERE group_id = ? AND isbless = 0 ' . - $dbh->sql_limit(1), - undef, $gid) || 0; + # Group inheritance no longer appears in user_group_map. + my $grouplist = join(',', @{Bugzilla::User->flatten_group_membership($gid)}); + my $hasusers = + $dbh->selectrow_array("SELECT 1 FROM user_group_map + WHERE group_id IN ($grouplist) AND isbless = 0 " . + $dbh->sql_limit(1)) || 0; my $bug_ids = $dbh->selectcol_arrayref('SELECT bug_id FROM bug_group_map WHERE group_id = ?', undef, $gid); @@ -391,10 +394,13 @@ if ($action eq 'delete') { my $cantdelete = 0; - my $hasusers = $dbh->selectrow_array('SELECT 1 FROM user_group_map - WHERE group_id = ? AND isbless = 0 ' . - $dbh->sql_limit(1), - undef, $gid) || 0; + # Group inheritance no longer appears in user_group_map. + my $grouplist = join(',', @{Bugzilla::User->flatten_group_membership($gid)}); + my $hasusers = + $dbh->selectrow_array("SELECT 1 FROM user_group_map + WHERE group_id IN ($grouplist) AND isbless = 0 " . + $dbh->sql_limit(1)) || 0; + if ($hasusers && !defined $cgi->param('removeusers')) { $cantdelete = 1; }