diff options
author | lpsolit%gmail.com <> | 2008-11-22 04:53:13 +0100 |
---|---|---|
committer | lpsolit%gmail.com <> | 2008-11-22 04:53:13 +0100 |
commit | 8132a036b5b358dc1377b21eaf82246c35b4ea5f (patch) | |
tree | 4c961aa76b6f90aaca4b559d5788cdddc737f6bf | |
parent | c72d05686971da020a4aee3b8c9961be69b8d03d (diff) | |
download | bugzilla-8132a036b5b358dc1377b21eaf82246c35b4ea5f.tar.gz bugzilla-8132a036b5b358dc1377b21eaf82246c35b4ea5f.tar.xz |
Bug 453681: Do not display the "Yes, delete" button if deleting a user account would cause FK constraint errors - Patch by Frédéric Buclin <LpSolit@gmail.com> r=wurblzap a=LpSolit
-rwxr-xr-x | editusers.cgi | 9 | ||||
-rw-r--r-- | template/en/default/admin/users/confirm-delete.html.tmpl | 103 | ||||
-rw-r--r-- | template/en/default/filterexceptions.pl | 3 |
3 files changed, 86 insertions, 29 deletions
diff --git a/editusers.cgi b/editusers.cgi index ea477a372..23adb6eb7 100755 --- a/editusers.cgi +++ b/editusers.cgi @@ -358,6 +358,9 @@ if ($action eq 'search') { $vars->{'otheruser'} = $otherUser; # Find other cross references. + $vars->{'attachments'} = $dbh->selectrow_array( + 'SELECT COUNT(*) FROM attachments WHERE submitter_id = ?', + undef, $otherUserID); $vars->{'assignee_or_qa'} = $dbh->selectrow_array( qq{SELECT COUNT(*) FROM bugs @@ -372,6 +375,9 @@ if ($action eq 'search') { $vars->{'bugs_activity'} = $dbh->selectrow_array( 'SELECT COUNT(*) FROM bugs_activity WHERE who = ?', undef, $otherUserID); + $vars->{'component_cc'} = $dbh->selectrow_array( + 'SELECT COUNT(*) FROM component_cc WHERE user_id = ?', + undef, $otherUserID); $vars->{'email_setting'} = $dbh->selectrow_array( 'SELECT COUNT(*) FROM email_setting WHERE user_id = ?', undef, $otherUserID); @@ -402,6 +408,9 @@ if ($action eq 'search') { $vars->{'profiles_activity'} = $dbh->selectrow_array( 'SELECT COUNT(*) FROM profiles_activity WHERE who = ? AND userid != ?', undef, ($otherUserID, $otherUserID)); + $vars->{'quips'} = $dbh->selectrow_array( + 'SELECT COUNT(*) FROM quips WHERE userid = ?', + undef, $otherUserID); $vars->{'series'} = $dbh->selectrow_array( 'SELECT COUNT(*) FROM series WHERE creator = ?', undef, $otherUserID); diff --git a/template/en/default/admin/users/confirm-delete.html.tmpl b/template/en/default/admin/users/confirm-delete.html.tmpl index 77d6772a6..63c5f48a5 100644 --- a/template/en/default/admin/users/confirm-delete.html.tmpl +++ b/template/en/default/admin/users/confirm-delete.html.tmpl @@ -101,17 +101,34 @@ For now, you can [% END %] [% ELSE %] + [% accept_deletion = 1 %] - <h2>Confirmation</h2> - - [% display_warning = 0 %] - - [% IF reporter || bugs_activity || flags.setter || longdescs || profiles_activity %] + [% IF attachments || reporter || bugs_activity || flags.setter || longdescs || profiles_activity %] <div class="criticalmessages"> - <p>The following deletions are <b>highly not recommended</b> and - will generate referential integrity inconsistencies!</p> + <p>The following deletions are <b>unsafe</b> and would generate referential + integrity inconsistencies!</p> <ul> + [% IF attachments %] + <li> + [% otheruser.login FILTER html %] + <a href="buglist.cgi?field0-0-0=attachments.submitter&type0-0-0=equals&value0-0-0= + [%- otheruser.login FILTER url_quote %]">has submitted + [% IF attachments == 1 %] + one attachment + [% ELSE %] + [%+ attachments %] attachments + [% END %]</a>. + If you delete the user account, the database records will be + inconsistent, resulting in + [% IF attachments == 1 %] + this attachment + [% ELSE %] + these attachments + [% END %] + not appearing in [% terms.bugs %] any more. + </li> + [% END %] [% IF reporter %] <li> [% otheruser.login FILTER html %] @@ -205,11 +222,11 @@ [% END %] </ul> </div> - [% display_warning = 1 %] + [% accept_deletion = 0 %] [% END %] - [% IF assignee_or_qa || cc || email_setting || flags.requestee || - namedqueries || profile_setting || series || votes || watch.watched || + [% IF assignee_or_qa || cc || component_cc || email_setting || flags.requestee || + namedqueries || profile_setting || quips || series || votes || watch.watched || watch.watcher || whine_events || whine_schedules %] <div class="warningmessages"> <p>The following deletions are <b>safe</b> and will not generate @@ -245,6 +262,17 @@ If you delete the user account, it will be removed from these CC lists. </li> [% END %] + [% IF component_cc %] + <li> + [% otheruser.login FILTER html %] is on the default CC list of + [% IF component_cc == 1 %] + one component + [% ELSE %] + [%+ component_cc %] components + [% END %]</a>. + If you delete the user account, it will be removed from these CC lists. + </li> + [% END %] [% IF email_setting %] <li> The user's e-mail settings will be deleted along with the user @@ -327,6 +355,23 @@ will be deleted along with the user account. </li> [% END %] + [% IF quips %] + <li> + [% otheruser.login FILTER html %] has sumbitted + [% IF quip == 1 %] + one quip + [% ELSE %] + [%+ quips %] quips + [% END %]. + If you delete the user account, + [% IF votes == 1 %] + this quip + [% ELSE %] + these quips + [% END %] + will have no author anymore, but will remain available. + </li> + [% END %] [% IF votes %] <li> [% otheruser.login FILTER html %] has voted on @@ -402,28 +447,28 @@ [% END %] </ul> </div> - [% display_warning = 1 %] - [% END %] - - [% IF display_warning %] - <p class="areyoureallyreallysure"> - Please be aware of the consequences of this before continuing. - </p> - [% END %] - <p>Do you really want to delete this user account?</p> + [% IF accept_deletion %] + <p class="areyoureallyreallysure"> + Please be aware of the consequences of this before continuing. + </p> + <p>Do you really want to delete this user account?</p> - <form method="post" action="editusers.cgi"> - <p> - <input type="submit" id="delete" value="Yes, delete"/> - <input type="hidden" name="action" value="delete" /> - <input type="hidden" name="userid" value="[% otheruser.id %]" /> - <input type="hidden" name="token" value="[% token FILTER html %]"> - [% INCLUDE listselectionhiddenfields %] - </p> - </form> + <form method="post" action="editusers.cgi"> + <p> + <input type="submit" id="delete" value="Yes, delete"/> + <input type="hidden" name="action" value="delete" /> + <input type="hidden" name="userid" value="[% otheruser.id %]" /> + <input type="hidden" name="token" value="[% token FILTER html %]"> + [% INCLUDE listselectionhiddenfields %] + </p> + </form> + <p>If you do not want to delete the user account at this time, + [% ELSE %] + <p><b>You cannot delete this user account</b> due to unsafe actions reported above. You can + [% END %] - <p>If you do not want to delete the user account at this time, + [% END %] [% END %] <a href="editusers.cgi?action=edit&userid=[% otheruser.id %] diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl index cd4e3e4d0..4a46a3e50 100644 --- a/template/en/default/filterexceptions.pl +++ b/template/en/default/filterexceptions.pl @@ -506,12 +506,15 @@ ], 'admin/users/confirm-delete.html.tmpl' => [ + 'attachments' 'reporter', 'assignee_or_qa', 'cc', + 'component_cc', 'flags.requestee', 'flags.setter', 'longdescs', + 'quips', 'votes', 'series', 'watch.watched', |