bbp_admin_reset_database()

Perform a bbPress database reset.


Description Description


Source Source

File: includes/admin/tools/reset.php

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}')",
			'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}')",
				'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'",
				'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'",
		'message' => esc_html__( 'Deleting Topic Tags… %s', 'bbpress' )
	) );

	/** User ******************************************************************/

	// First, if we're deleting previously imported users, delete them now
	if ( ! empty( $_POST['bbpress-delete-imported-users'] ) ) {
		$sql_users = $bbp_db->get_results( "SELECT `user_id` FROM `{$bbp_db->usermeta}` WHERE `meta_key` = '_bbp_old_user_id'", OBJECT_K );

		if ( ! empty( $sql_users ) ) {
			$sql_meta = array();
			foreach ( $sql_users as $key => $value ) {
				$sql_meta[] = $key;
			}

			// Users
			$sql_meta   = implode( "', '", $sql_meta );
			$messages[] = bbp_admin_reset_query_feedback( array(
				'query'   => "DELETE FROM `{$bbp_db->users}` WHERE `ID` IN ('{$sql_meta}')",
				'message' => esc_html__( 'Deleting Imported Users… %s', 'bbpress' )
			) );

			// User meta
			$messages[] = bbp_admin_reset_query_feedback( array(
				'query'   => "DELETE FROM `{$bbp_db->usermeta}` WHERE `user_id` IN ('{$sql_meta}')",
				'message' => esc_html__( 'Deleting Imported User Meta… %s', 'bbpress' )
			) );
		}
	}

	// Next, if we still have users that were not imported delete that meta data
	$messages[] = bbp_admin_reset_query_feedback( array(
		'query'   => "DELETE FROM `{$bbp_db->usermeta}` WHERE `meta_key` LIKE '%%_bbp_%%'",
		'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}",
			'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 );
		}
	}
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.6.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.