bbp_admin_reset_handler()
Handle the processing and feedback of the admin tools page
Description
Source
File: bp-forums/admin/tools.php
function bbp_admin_reset_handler() {
// Bail if not resetting
if ( ! bbp_is_post_request() || empty( $_POST['bbpress-are-you-sure'] ) )
return;
// Only keymasters can proceed
if ( ! bbp_is_user_keymaster() )
return;
check_admin_referer( 'bbpress-reset' );
global $wpdb;
// Stores messages
$messages = array();
$failed = __( 'Failed', 'buddyboss' );
$success = __( 'Success!', 'buddyboss' );
// Flush the cache; things are about to get ugly.
wp_cache_flush();
/** Posts *****************************************************************/
$statement = __( 'Deleting Posts… %s', 'buddyboss' );
$sql_posts = $wpdb->get_results( "SELECT `ID` FROM `{$wpdb->posts}` WHERE `post_type` IN ('forum', 'topic', 'reply')", OBJECT_K );
$sql_delete = "DELETE FROM `{$wpdb->posts}` WHERE `post_type` IN ('forum', 'topic', 'reply')";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
/** Post Meta *************************************************************/
if ( !empty( $sql_posts ) ) {
$sql_meta = array();
foreach ( $sql_posts as $key => $value ) {
$sql_meta[] = $key;
}
$statement = __( 'Deleting Post Meta… %s', 'buddyboss' );
$sql_meta = implode( "', '", $sql_meta );
$sql_delete = "DELETE FROM `{$wpdb->postmeta}` WHERE `post_id` IN ('{$sql_meta}');";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
}
/** Topic Tags ************************************************************/
$statement = __( 'Deleting Discussions Tags… %s', 'buddyboss' );
$sql_delete = "DELETE a,b,c FROM `{$wpdb->terms}` AS a LEFT JOIN `{$wpdb->term_taxonomy}` AS c ON a.term_id = c.term_id LEFT JOIN `{$wpdb->term_relationships}` AS b ON b.term_taxonomy_id = c.term_taxonomy_id WHERE c.taxonomy = 'topic-tag';";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
/** User ******************************************************************/
// Delete users
if ( !empty( $_POST['bbpress-delete-imported-users'] ) ) {
$sql_users = $wpdb->get_results( "SELECT `user_id` FROM `{$wpdb->usermeta}` WHERE `meta_key` = '_bbp_user_id'", OBJECT_K );
if ( !empty( $sql_users ) ) {
$sql_meta = array();
foreach ( $sql_users as $key => $value ) {
$sql_meta[] = $key;
}
$statement = __( 'Deleting User… %s', 'buddyboss' );
$sql_meta = implode( "', '", $sql_meta );
$sql_delete = "DELETE FROM `{$wpdb->users}` WHERE `ID` IN ('{$sql_meta}');";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
$statement = __( 'Deleting User Meta… %s', 'buddyboss' );
$sql_delete = "DELETE FROM `{$wpdb->usermeta}` WHERE `user_id` IN ('{$sql_meta}');";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
}
// Delete imported user metadata
} else {
$statement = __( 'Deleting User Meta… %s', 'buddyboss' );
$sql_delete = "DELETE FROM `{$wpdb->usermeta}` WHERE `meta_key` LIKE '%%_bbp_%%';";
$result = is_wp_error( $wpdb->query( $sql_delete ) ) ? $failed : $success;
$messages[] = sprintf( $statement, $result );
}
/** Converter *************************************************************/
$statement = __( 'Deleting Conversion Table… %s', 'buddyboss' );
$table_name = $wpdb->prefix . 'bbp_converter_translator';
if ( $wpdb->get_var( "SHOW TABLES LIKE '{$table_name}'" ) === $table_name ) {
$wpdb->query( "DROP TABLE {$table_name}" );
$result = $success;
} else {
$result = $failed;
}
$messages[] = sprintf( $statement, $result );
/** Options ***************************************************************/
$statement = __( 'Deleting Settings… %s', 'buddyboss' );
bbp_delete_options();
$messages[] = sprintf( $statement, $success );
/** Roles *****************************************************************/
$statement = __( 'Deleting Roles and Capabilities… %s', 'buddyboss' );
remove_role( bbp_get_moderator_role() );
remove_role( bbp_get_participant_role() );
bbp_remove_caps();
$messages[] = sprintf( $statement, $success );
/** Output ****************************************************************/
if ( count( $messages ) ) {
foreach ( $messages as $message ) {
bbp_admin_tools_feedback( $message );
}
}
}
Changelog
| Version | Description |
|---|---|
| bbPress (r2613) | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.