Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Ensure we properly delete member data from new tables #7842

Open
wants to merge 1 commit into
base: release-2.1
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 75 additions & 1 deletion Sources/Subs-Members.php
Original file line number Diff line number Diff line change
Expand Up @@ -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}',
Expand All @@ -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);

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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']('', '
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -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
Expand Down