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

git-svn-id: svn://10.0.0.236/trunk@192029 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
lpsolit%gmail.com 2006-03-08 23:53:57 +00:00
parent bb94a42d46
commit 2423c172b0
3 changed files with 32 additions and 41 deletions

View File

@ -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)

View File

@ -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>.

View File

@ -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.