diff --git a/Sources/Subs-Members.php b/Sources/Subs-Members.php index b1d33528b5..8aa7f338c9 100644 --- a/Sources/Subs-Members.php +++ b/Sources/Subs-Members.php @@ -74,7 +74,7 @@ function deleteMembers($users, $check_not_admin = false) // Get their names for logging purposes. $request = $smcFunc['db_query']('', ' - SELECT id_member, member_name, CASE WHEN id_group = {int:admin_group} OR FIND_IN_SET({int:admin_group}, additional_groups) != 0 THEN 1 ELSE 0 END AS is_admin + SELECT id_member, member_name, email_address, CASE WHEN id_group = {int:admin_group} OR FIND_IN_SET({int:admin_group}, additional_groups) != 0 THEN 1 ELSE 0 END AS is_admin FROM {db_prefix}members WHERE id_member IN ({array_int:user_list}) LIMIT {int:limit}', @@ -86,11 +86,13 @@ function deleteMembers($users, $check_not_admin = false) ); $admins = array(); $user_log_details = array(); + $emails = array(); while ($row = $smcFunc['db_fetch_assoc']($request)) { if ($row['is_admin']) $admins[] = $row['id_member']; $user_log_details[$row['id_member']] = array($row['id_member'], $row['member_name']); + $emails[] = $row['email_address']; } $smcFunc['db_free_result']($request); @@ -200,6 +202,26 @@ function deleteMembers($users, $check_not_admin = false) ) ); + $smcFunc['db_query']('', ' + UPDATE {db_prefix}log_reported + SET id_member = {int:guest_id} + WHERE id_member IN ({array_int:users})', + array( + 'guest_id' => 0, + 'users' => $users, + ) + ); + + $smcFunc['db_query']('', ' + UPDATE {db_prefix}log_reported_comments + SET id_member = {int:guest_id} + WHERE id_member IN ({array_int:users})', + array( + 'guest_id' => 0, + 'users' => $users, + ) + ); + // Delete the member. $smcFunc['db_query']('', ' DELETE FROM {db_prefix}members @@ -305,6 +327,15 @@ function deleteMembers($users, $check_not_admin = false) ) ); + // Remove any emails we may have queued to send. + $smcFunc['db_query']('', ' + DELETE FROM {db_prefix}mail_queue + WHERE recipient IN ({array_string:emails})', + array( + 'emails' => $emails, + ) + ); + // Make their votes appear as guest votes - at least it keeps the totals right. // @todo Consider adding back in cookie protection. $smcFunc['db_query']('', ' @@ -340,6 +371,15 @@ function deleteMembers($users, $check_not_admin = false) ) ); + // They no longer exist, so you can't have any rules. + $smcFunc['db_query']('', ' + DELETE FROM {db_prefix}pm_rules + WHERE id_member IN ({array_int:users})', + array( + 'users' => $users, + ) + ); + // Delete avatar. require_once($sourcedir . '/ManageAttachments.php'); removeAttachments(array('id_member' => $users)); @@ -378,6 +418,40 @@ function deleteMembers($users, $check_not_admin = false) ) ); + $smcFunc['db_query']('', ' + DELETE FROM {db_prefix}member_logins + WHERE id_member IN ({array_int:users})', + array( + 'users' => $users, + ) + ); + + $smcFunc['db_query']('', ' + UPDATE {db_prefix}user_alerts + SET id_member = {int:guest_id} + WHERE id_member IN ({array_int:users})', + array( + 'guest_id' => 0, + 'users' => $users, + ) + ); + $smcFunc['db_query']('', ' + UPDATE {db_prefix}user_alerts + SET id_member_started = {int:guest_id} + WHERE id_member_started IN ({array_int:users})', + array( + 'guest_id' => 0, + 'users' => $users, + ) + ); + $smcFunc['db_query']('', ' + DELETE FROM {db_prefix}user_alerts_prefs + WHERE id_member IN ({array_int:users})', + array( + 'users' => $users, + ) + ); + // These users are nobody's buddy nomore. $request = $smcFunc['db_query']('', ' SELECT id_member, pm_ignore_list, buddy_list