Code for Only Deleting Non-Admin Accounts
-
GREAT PLUGIN!
For those who probably have multiple admin accounts, it is annoying to have to re-create them since this awesome plugin deletes by user ID being greater than 1.
I modified the bpdd_clear_db() function to pull a list of Admin IDs and then modified the WHERE clause when it referenced user_id and changed the operator to NOT IN ().
Here is the revised function for those who need to preserve all admin accounts.
function bpdd_clear_db() { /** @var $wpdb WPDB */ global $wpdb; $prefix = bp_core_get_table_prefix(); /* Eliot Lee, 1/29/2016, Added Logic for Deleting All Users Except All Admins */ // Added Query for getting set of Administrators, do not delete these accounts $admins = $wpdb->get_results( "SELECT ID FROM {$wpdb->prefix}users u INNER JOIN {$wpdb->prefix}usermeta um ON um.user_id = u.ID WHERE um.meta_key = 'wp_user_level' AND um.meta_value = 10;" ); // reformat the array foreach ( $admins as $admin ) { $admin_id[] = $admin->ID; } // List of Admin IDS to use in the Delete WHERE clauses where appropriate $admin_list = implode(', ', $admin_id); if ( bp_is_active( 'activity' ) ) { $sqls[] = "TRUNCATE TABLE {$prefix}bp_activity;"; $sqls[] = "TRUNCATE TABLE {$prefix}bp_activity_meta;"; } if ( bp_is_active( 'groups' ) ) { $sqls[] = "TRUNCATE TABLE {$prefix}bp_groups;"; $sqls[] = "TRUNCATE TABLE {$prefix}bp_groups_members;"; $sqls[] = "TRUNCATE TABLE {$prefix}bp_groups_groupmeta;"; } if ( bp_is_active( 'messages' ) ) { $sqls[] = "TRUNCATE TABLE {$prefix}bp_messages_recipients;"; $sqls[] = "TRUNCATE TABLE {$prefix}bp_messages_messages;"; } if ( bp_is_active( 'friends' ) ) { $sqls[] = "TRUNCATE TABLE {$prefix}bp_friends;"; } if ( bp_is_active( 'xprofile' ) ) { $sqls[] = "DELETE FROM {$prefix}bp_xprofile_data WHERE user_id NOT IN ($admin_list) OR field_id > 1;"; $sqls[] = "DELETE FROM {$prefix}bp_xprofile_fields WHERE id > 1;"; $sqls[] = "DELETE FROM {$prefix}bp_xprofile_groups WHERE id > 1;"; $sqls[] = "DELETE FROM {$prefix}bp_xprofile_meta WHERE object_id > 1;"; } if ( bp_is_active( 'forums' ) && bp_forums_is_installed_correctly() ) { $sqls[] = "TRUNCATE TABLE {$prefix}bb_posts;"; $sqls[] = "DELETE FROM {$prefix}bb_forums WHERE forum_id > 1;"; } $sqls[] = "TRUNCATE TABLE {$prefix}bp_notifications;"; $sqls[] = "DELETE FROM {$wpdb->prefix}users WHERE ID NOT IN ($admin_list);"; $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE user_id NOT IN ($admin_list);"; $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'total_friend_count';"; $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'bp_latest_update';"; $sqls[] = "DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'last_activity';"; foreach ( $sqls as $sql ) { $wpdb->query( $sql ); } }
Hope this helps. I apologize if it has already been posted. I carefully searched all support topics for this Plugin and could not find a relevant post.
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘Code for Only Deleting Non-Admin Accounts’ is closed to new replies.