$vars->{'editcomponents'} = UserInGroup('editcomponents');
# Find other cross references.
- $vars->{'bugs'} = $dbh->selectrow_array(
+ $vars->{'assignee_or_qa'} = $dbh->selectrow_array(
qq{SELECT COUNT(*)
FROM bugs
- WHERE assigned_to = ? OR
- qa_contact = ? OR
- reporter = ?
- },
- undef, ($otherUserID, $otherUserID, $otherUserID));
+ WHERE assigned_to = ? OR qa_contact = ?},
+ undef, ($otherUserID, $otherUserID));
+ $vars->{'reporter'} = $dbh->selectrow_array(
+ 'SELECT COUNT(*) FROM bugs WHERE reporter = ?',
+ undef, $otherUserID);
$vars->{'cc'} = $dbh->selectrow_array(
'SELECT COUNT(*) FROM cc WHERE who = ?',
undef, $otherUserID);
'series_data WRITE',
'whine_schedules WRITE',
'whine_queries WRITE',
- 'whine_events WRITE');
+ 'whine_events WRITE',
+ 'bugs WRITE');
Param('allowuserdeletion')
|| ThrowUserError('users_deletion_disabled');
$sth_deleteWhineEvent->execute($id);
}
+ # 3) Bugs
+ # 3.1) fall back to the default assignee
+ my $buglist = $dbh->selectall_arrayref(
+ 'SELECT bug_id, initialowner
+ FROM bugs
+ INNER JOIN components ON components.id = bugs.component_id
+ WHERE assigned_to = ?', undef, $otherUserID);
+
+ my $sth_updateAssignee = $dbh->prepare(
+ 'UPDATE bugs SET assigned_to = ? WHERE bug_id = ?');
+
+ foreach my $bug (@$buglist) {
+ my ($bug_id, $default_assignee) = @$bug;
+ $sth_updateAssignee->execute($default_assignee, $bug_id);
+ }
+
+ # 3.2) fall back to the default QA contact
+ $buglist = $dbh->selectall_arrayref(
+ 'SELECT bug_id, initialqacontact
+ FROM bugs
+ INNER JOIN components ON components.id = bugs.component_id
+ WHERE qa_contact = ?', undef, $otherUserID);
+
+ my $sth_updateQAcontact = $dbh->prepare(
+ 'UPDATE bugs SET qa_contact = ? WHERE bug_id = ?');
+
+ foreach my $bug (@$buglist) {
+ my ($bug_id, $default_qa_contact) = @$bug;
+ $sth_updateQAcontact->execute($default_qa_contact, $bug_id);
+ }
+
# Finally, remove the user account itself.
$dbh->do('DELETE FROM profiles WHERE userid = ?', undef, $otherUserID);
# editusers: is viewing user member of editusers?
# editcomponents: is viewing user member of editcomponents?
# otheruser: Bugzilla::User object of the viewed user.
- # bugs: number of bugs the viewed user has a role in
+ # reporter: number of bugs reported by the user
+ # assignee_or_qa: number of bugs the user is either the assignee
+ # or the QA contact
# bug_activity: number of bugs the viewed user has activity
# entries on
# cc number of bugs the viewed user is cc list member
<h2>Confirmation</h2>
- [% IF bugs || bug_activity || cc || flags.requestee || flags.setter ||
- longdescs || namedqueries || profiles_activity || series || votes ||
- watch.watched || watch.watcher || whine_events || whine_schedules %]
+ [% IF reporter || assignee_or_qa || bug_activity || cc || flags.requestee ||
+ flags.setter || longdescs || namedqueries || profiles_activity || series ||
+ votes || watch.watched || watch.watcher || whine_events || whine_schedules %]
<ul class="warningmessages">
- [% IF bugs %]
+ [% IF reporter %]
<li>
[% otheruser.login FILTER html %]
- <a href="buglist.cgi?emailassigned_to1=1&emailreporter1=1&emailqa_contact1=1&emailtype1=exact&email1=[% otheruser.login FILTER url_quote %]">is
- related to
- [% IF bugs == 1 %]
- [%+ terms.abug %]
+ <a href="buglist.cgi?emailreporter1=1&emailtype1=exact&email1=[% otheruser.login FILTER url_quote %]">has reported
+ [% IF reporter == 1 %]
+ one [% terms.bug %]
[% ELSE %]
- [%+ bugs %] [%+ terms.bugs %]
- [% END %]</a>, by having reported, being assigned to or being
- the QA contact.
+ [%+ reporter %] [%+ terms.bugs %]
+ [% END %]</a>.
If you delete the user account, the [% terms.bugs %] table in the
database will be inconsistent, resulting in
- [% IF bugs == 1 %]
+ [% IF reporter == 1 %]
this [% terms.bug %]
[% ELSE %]
these [% terms.bugs %]
not appearing in [% terms.bug %] lists any more.
</li>
[% END %]
+ [% IF assignee_or_qa %]
+ <li>
+ [% otheruser.login FILTER html %]
+ <a href="buglist.cgi?emailassigned_to1=1&emailqa_contact1=1&emailtype1=exact&email1=[% otheruser.login FILTER url_quote %]">is
+ the assignee or the QA contact of
+ [% IF assignee_or_qa == 1 %]
+ one [% terms.bug %]
+ [% ELSE %]
+ [%+ assignee_or_qa %] [%+ terms.bugs %]
+ [% END %]</a>.
+ If you delete the user account, these roles will fall back to
+ the default assignee or default QA contact.
+ </li>
+ [% END %]
[% IF bugs_activity %]
<li>
[% otheruser.login FILTER html %] has made