diff options
-rwxr-xr-x | editgroups.cgi | 47 | ||||
-rw-r--r-- | template/en/default/admin/groups/deleted.html.tmpl | 18 | ||||
-rw-r--r-- | template/en/default/global/user-error.html.tmpl | 8 |
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&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&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. |