'', 'message' => esc_html__( 'Resetting…', 'bbpress' ), 'responses' => array( 'success' => esc_html__( 'Success!', 'bbpress' ), 'failure' => esc_html__( 'Failed!', 'bbpress' ), 'skipped' => esc_html__( 'Skipped.', 'bbpress' ) ) ); } // Parse arguments $r = bbp_parse_args( $args, $defaults, 'admin_reset_query_feedback' ); // Success/Failure based on query error if ( ! empty( $r['query'] ) ) { $query = bbp_db()->query( $r['query'] ); $result = ! is_wp_error( $query ) ? $r['responses']['success'] : $r['responses']['failure']; // Skip if empty } else { $result = $r['responses']['skipped']; } // Return feedback return sprintf( $r['message'], $result ); } /** * Perform a bbPress database reset. * * @since 2.6.0 bbPress (r6750) */ function bbp_admin_reset_database() { // Define variables. $messages = array(); $sql_meta = array(); $bbp_db = bbp_db(); // Flush the whole cache; things are about to get ugly. wp_cache_flush(); /** Posts *****************************************************************/ // Post types and status. $fpt = bbp_get_forum_post_type(); $tpt = bbp_get_topic_post_type(); $rpt = bbp_get_reply_post_type(); // Get post IDs $sql_posts = $bbp_db->get_results( "SELECT `ID` FROM `{$bbp_db->posts}` WHERE `post_type` IN ('{$fpt}', '{$tpt}', '{$rpt}')", OBJECT_K ); if ( ! empty( $sql_posts ) ) { // Meta data foreach ( $sql_posts as $key => $value ) { $sql_meta[] = $key; } $sql_meta = implode( "', '", $sql_meta ); // Delete posts $messages[] = bbp_admin_reset_query_feedback( array( 'query' => "DELETE FROM `{$bbp_db->posts}` WHERE `post_type` IN ('{$fpt}', '{$tpt}', '{$rpt}')", /* translators: %s: Status of the deletion process */ 'message' => esc_html__( 'Removing Forums, Topics, and Replies… %s', 'bbpress' ) ) ); /** Post Meta *********************************************************/ if ( ! empty( $sql_posts ) ) { $messages[] = bbp_admin_reset_query_feedback( array( 'query' => "DELETE FROM `{$bbp_db->postmeta}` WHERE `post_id` IN ('{$sql_meta}')", /* translators: %s: Status of the meta deletion process */ 'message' => esc_html__( 'Removing Forum, Topic, and Reply Meta Data… %s', 'bbpress' ) ) ); } /** Post Revisions ****************************************************/ if ( ! empty( $sql_posts ) ) { $messages[] = bbp_admin_reset_query_feedback( array( 'query' => "DELETE FROM `{$bbp_db->posts}` WHERE `post_parent` IN ('{$sql_meta}') AND `post_type` = 'revision'", /* translators: %s: Status of the revision deletion process */ 'message' => esc_html__( 'Removing Revision Data… %s', 'bbpress' ) ) ); } } /** Topic Tags ************************************************************/ $messages[] = bbp_admin_reset_query_feedback( array( 'query' => "DELETE a,b,c FROM `{$bbp_db->terms}` AS a LEFT JOIN `{$bbp_db->term_taxonomy}` AS c ON a.term_id = c.term_id LEFT JOIN `{$bbp_db->term_relationships}` AS b ON b.term_taxonomy_id = c.term_taxonomy_id WHERE c.taxonomy = 'topic-tag'", /* translators: %s: Status of the tag deletion process */ 'message' => esc_html__( 'Deleting Topic Tags… %s', 'bbpress' ) ) ); /** User ******************************************************************/ // First, if we're deleting previously imported users, delete them now if ( ! is_multisite() && ! empty( $_POST['bbpress-delete-imported-users'] ) ) { $sql_users = array_unique( array_map( 'intval', $bbp_db->get_col( "SELECT `user_id` FROM `{$bbp_db->usermeta}` WHERE `meta_key` = '_bbp_old_user_id'" ) ) ); if ( ! empty( $sql_users ) ) { require_once ABSPATH . 'wp-admin/includes/user.php'; $deleted = true; foreach ( $sql_users as $user_id ) { if ( ! wp_delete_user( (int) $user_id ) ) { $deleted = false; } } $messages[] = sprintf( /* translators: %s: Status of the user deletion process */ esc_html__( 'Deleting Imported Users… %s', 'bbpress' ), $deleted ? esc_html__( 'Success!', 'bbpress' ) : esc_html__( 'Failed!', 'bbpress' ) ); } } // Remove only this site's user options on multisite. Converter metadata is global. $meta_key = is_multisite() ? $bbp_db->get_blog_prefix() . '_bbp_' : '_bbp_'; $like = is_multisite() ? $bbp_db->esc_like( $meta_key ) . '%' : '%' . $bbp_db->esc_like( $meta_key ) . '%'; $messages[] = bbp_admin_reset_query_feedback( array( 'query' => $bbp_db->prepare( "DELETE FROM `{$bbp_db->usermeta}` WHERE `meta_key` LIKE %s", $like ), /* translators: %s: Status of the user meta deletion process */ 'message' => esc_html__( 'Deleting bbPress Specific User Meta… %s', 'bbpress' ) ) ); /** Converter *************************************************************/ $table_name = $bbp_db->prefix . 'bbp_converter_translator'; if ( $bbp_db->get_var( "SHOW TABLES LIKE '{$table_name}'" ) === $table_name ) { $messages[] = bbp_admin_reset_query_feedback( array( 'query' => "DROP TABLE {$table_name}", /* translators: %s: Status of the table deletion process */ 'message' => esc_html__( 'Dropping Conversion Table… %s', 'bbpress' ) ) ); } /** Options ***************************************************************/ bbp_delete_options(); $messages[] = esc_html__( 'Deleting Settings… Success!', 'bbpress' ); /** Roles *****************************************************************/ bbp_remove_roles(); bbp_remove_caps(); $messages[] = esc_html__( 'Removing Roles and Capabilities… Success!', 'bbpress' ); /** Output ****************************************************************/ if ( count( $messages ) ) { foreach ( $messages as $message ) { bbp_admin_tools_feedback( $message ); } } }