function sp_delete_member_data($userid, $blog_id = '') { if (!$userid) { return ''; } global $wpdb; # if removing user from network site, make sure sp installed on that network site if (!empty($blog_id)) { $optionstable = $wpdb->get_var("SHOW TABLES LIKE '" . $wpdb->prefix . "sfoptions'"); if (empty($optionstable)) { return; } } # 1: get users email address $user_email = sp_filter_email_save($wpdb->get_var('SELECT user_email from ' . $wpdb->prefix . "users WHERE ID={$userid}")); # 2: get the users display name from members table $display_name = $wpdb->get_var('SELECT display_name FROM ' . $wpdb->prefix . "sfmembers WHERE user_id = {$userid}"); $display_name = sp_filter_name_save(maybe_unserialize($display_name)); # 3: Set user name and email to guest name and meail in all of their posts $wpdb->query('UPDATE ' . $wpdb->prefix . "sfposts SET user_id=NULL, guest_name='{$display_name}', guest_email='{$user_email}' WHERE user_id={$userid}"); # 7: Remove from recent members list if present sp_remove_newuser($userid); # 8: Remove from Members table $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfmembers WHERE user_id={$userid}"); # 9: Remove user group memberships $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfmemberships WHERE user_id={$userid}"); #10 check if forum moderator list needs updating sp_update_forum_moderators(); do_action('sph_member_deleted', $userid); }
function sp_delete_member_data($userid, $blog_id = '', $delete_option = 'spguest', $reassign = 0) { if (!$userid) { return ''; } global $wpdb; # if removing user from network site, make sure sp installed on that network site if (!empty($blog_id)) { $optionstable = $wpdb->get_var("SHOW TABLES LIKE '" . $wpdb->prefix . "sfoptions'"); if (empty($optionstable)) { return; } } # let plugins clean up from member removal first do_action('sph_member_deleted', $userid); # remove member from core $option = isset($_POST['sp_delete_option']) ? sp_esc_str($_POST['sp_delete_option']) : $delete_option; switch ($option) { case 'spreassign': $newuser = isset($_POST['sp_reassign_user']) ? sp_esc_int($_POST['sp_reassign_user']) : $reassign; # Set poster ID to the new user id $wpdb->query('UPDATE ' . $wpdb->prefix . "sfposts SET user_id={$newuser} WHERE user_id={$userid}"); $wpdb->query('UPDATE ' . $wpdb->prefix . "sftopics SET user_id={$newuser} WHERE user_id={$userid}"); break; case 'spdelete': # need to get topics for user posts to see if topic will be empty after deleting posts $topics = spdb_select('set', 'SELECT DISTINCT topic_id, forum_id FROM ' . SFPOSTS . " WHERE user_id={$userid}"); # delete all the user posts spdb_query('DELETE FROM ' . SFPOSTS . " WHERE user_id={$userid}"); # if any topics are now empty of posts, lets remove the topic and update the forum if (!empty($topics)) { foreach ($topics as $topic) { $posts = spdb_table(SFPOSTS, "topic_id={$topic->topic_id}"); if (empty($posts)) { spdb_query('DELETE FROM ' . SFTOPICS . " WHERE topic_id={$topic->topic_id}"); } else { sp_build_post_index($topic->topic_id); } sp_build_forum_index($topic->forum_id); } } break; case 'spguest': default: # get users email address $user_email = sp_filter_email_save($wpdb->get_var('SELECT user_email from ' . $wpdb->prefix . "users WHERE ID={$userid}")); # get the users display name from members table $display_name = $wpdb->get_var('SELECT display_name FROM ' . $wpdb->prefix . "sfmembers WHERE user_id = {$userid}"); $display_name = sp_filter_name_save(maybe_unserialize($display_name)); # Set user name and email to guest name and meail in all of their posts $wpdb->query('UPDATE ' . $wpdb->prefix . "sfposts SET user_id=0, guest_name='{$display_name}', guest_email='{$user_email}' WHERE user_id={$userid}"); $wpdb->query('UPDATE ' . $wpdb->prefix . "sftopics SET user_id=0 WHERE user_id={$userid}"); } # flush and rebuild topic cache sp_rebuild_topic_cache(); # remove from various core tables $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfmembers WHERE user_id={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfmemberships WHERE user_id={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfspecialranks WHERE user_id={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sftrack WHERE trackuserid={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfnotices WHERE user_id={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfuseractivity WHERE user_id={$userid}"); $wpdb->query('DELETE FROM ' . $wpdb->prefix . "sfwaiting WHERE user_id={$userid}"); # eemove from recent members list if present sp_remove_newuser($userid); # check if forum moderator list needs updating sp_update_forum_moderators(); }