summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2006-03-09 08:53:56 +0100
committerlpsolit%gmail.com <>2006-03-09 08:53:56 +0100
commitefacaaf6ee6b79fca5f256bc29c338b9e51e8c5d (patch)
treeb489c7f5292b4c6519ea2b3d5fd855359bba3003
parent3cacaab9c9b2d09970fcf901d554d06f0ef16ce2 (diff)
downloadbugzilla-efacaaf6ee6b79fca5f256bc29c338b9e51e8c5d.tar.gz
bugzilla-efacaaf6ee6b79fca5f256bc29c338b9e51e8c5d.tar.xz
Bug 323912: When a group cannot be deleted because it is in used, ThrowUserError() should be called - Patch by Frédéric Buclin <LpSolit@gmail.com> r=GavinS a=myk
-rwxr-xr-xeditgroups.cgi47
-rw-r--r--template/en/default/admin/groups/deleted.html.tmpl18
-rw-r--r--template/en/default/global/user-error.html.tmpl8
3 files changed, 32 insertions, 41 deletions
diff --git a/editgroups.cgi b/editgroups.cgi
index 026d85b93..a2b33b3f9 100755
--- a/editgroups.cgi
+++ b/editgroups.cgi
@@ -426,32 +426,31 @@ if ($action eq 'delete') {
$cantdelete = 1;
}
- if (!$cantdelete) {
- $dbh->do('UPDATE flagtypes SET grant_group_id = ?
- WHERE grant_group_id = ?',
- undef, (undef, $gid));
- $dbh->do('UPDATE flagtypes SET request_group_id = ?
- WHERE request_group_id = ?',
- undef, (undef, $gid));
- $dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
- undef, $gid);
- $dbh->do('DELETE FROM group_group_map
- WHERE grantor_id = ? OR member_id = ?',
- undef, ($gid, $gid));
- $dbh->do('DELETE FROM bug_group_map WHERE group_id = ?',
- undef, $gid);
- $dbh->do('DELETE FROM group_control_map WHERE group_id = ?',
- undef, $gid);
- $dbh->do('DELETE FROM whine_schedules
- WHERE mailto_type = ? AND mailto = ?',
- undef, (MAILTO_GROUP, $gid));
- $dbh->do('DELETE FROM groups WHERE id = ?',
- undef, $gid);
- }
-
$vars->{'gid'} = $gid;
$vars->{'name'} = $name;
- $vars->{'cantdelete'} = $cantdelete;
+
+ ThrowUserError('group_cannot_delete', $vars) if $cantdelete;
+
+ $dbh->do('UPDATE flagtypes SET grant_group_id = ?
+ WHERE grant_group_id = ?',
+ undef, (undef, $gid));
+ $dbh->do('UPDATE flagtypes SET request_group_id = ?
+ WHERE request_group_id = ?',
+ undef, (undef, $gid));
+ $dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
+ undef, $gid);
+ $dbh->do('DELETE FROM group_group_map
+ WHERE grantor_id = ? OR member_id = ?',
+ undef, ($gid, $gid));
+ $dbh->do('DELETE FROM bug_group_map WHERE group_id = ?',
+ undef, $gid);
+ $dbh->do('DELETE FROM group_control_map WHERE group_id = ?',
+ undef, $gid);
+ $dbh->do('DELETE FROM whine_schedules
+ WHERE mailto_type = ? AND mailto = ?',
+ undef, (MAILTO_GROUP, $gid));
+ $dbh->do('DELETE FROM groups WHERE id = ?',
+ undef, $gid);
print $cgi->header();
$template->process("admin/groups/deleted.html.tmpl", $vars)
diff --git a/template/en/default/admin/groups/deleted.html.tmpl b/template/en/default/admin/groups/deleted.html.tmpl
index 2a5c2f870..be067fa3e 100644
--- a/template/en/default/admin/groups/deleted.html.tmpl
+++ b/template/en/default/admin/groups/deleted.html.tmpl
@@ -23,9 +23,7 @@
#%]
[%# INTERFACE:
- # gid: number. The group ID.
# name: string. The name of the group.
- # cantdelete: boolean int. Is 1 if the group couldn't have been deleted.
#%]
@@ -33,21 +31,7 @@
title = "Deleting group"
%]
-[% IF cantdelete %]
- <p>
- This group cannot be deleted because there are records
- in the database which refer to it. All such records
- must be removed or altered to remove the reference to this
- group before the group can be deleted.
- </p>
-
- <p>
- <a href="editgroups.cgi?action=del&amp;group=[% gid FILTER url_quote %]">View</a>
- the list of which records are affected.
- </p>
-[% ELSE %]
- <p><b>The group [% name FILTER html %] has been deleted.</b></p>
-[% END %]
+<p>The group [% name FILTER html %] has been deleted.</p>
<p>Go back to the <a href="editgroups.cgi">group list</a>.
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 225b13111..079b14e0a 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -508,6 +508,14 @@
The sort key must be an integer between 0 and 32767 inclusive.
It cannot be <em>[% sortkey FILTER html %]</em>.
+ [% ELSIF error == "group_cannot_delete" %]
+ [% title = "Cannot Delete Group" %]
+ The <em>[% name FILTER html %]</em> group cannot be deleted because
+ there are
+ <a href="editgroups.cgi?action=del&amp;group=[% gid FILTER url_quote %]">records</a>
+ in the database which refer to it. All references to this group must
+ be removed before you can remove it.
+
[% ELSIF error == "group_exists" %]
[% title = "The group already exists" %]
The group [% name FILTER html %] already exists.