diff --git a/wp-admin/maint/repair.php b/wp-admin/maint/repair.php
index 3a8d7b0ee..aa045eea2 100644
--- a/wp-admin/maint/repair.php
+++ b/wp-admin/maint/repair.php
@@ -31,40 +31,33 @@ if ( !defined('WP_ALLOW_REPAIR') ) {
$okay = true;
- $tables = array_merge( $wpdb->tables, is_multisite() ? $wpdb->global_tables : array( 'users', 'usermeta' ) );
- $prefix = $wpdb->prefix;
- if ( is_multisite() && ! defined('MULTISITE') ) // _1 to get MU-era main blog
- $prefix .= '_1';
-
+ $tables = $wpdb->tables( 'all', true );
// Loop over the WP tables, checking and repairing as needed.
foreach ( $tables as $table ) {
- if ( in_array( $table, $wpdb->old_tables ) )
- continue;
-
- $check = $wpdb->get_row("CHECK TABLE {$prefix}$table");
+ $check = $wpdb->get_row("CHECK TABLE $table");
if ( 'OK' == $check->Msg_text ) {
- echo "
The {$prefix}$table table is okay.";
+ echo "
The $table table is okay.";
} else {
- echo "
The {$prefix}$table table is not okay. It is reporting the following error: $check->Msg_text
. WordPress will attempt to repair this table…";
- $repair = $wpdb->get_row("REPAIR TABLE {$prefix}$table");
+ echo "
The $table table is not okay. It is reporting the following error: $check->Msg_text
. WordPress will attempt to repair this table…";
+ $repair = $wpdb->get_row("REPAIR TABLE $table");
if ( 'OK' == $check->Msg_text ) {
- echo "
Successfully repaired the {$prefix}$table table.";
+ echo "
Successfully repaired the $table table.";
} else {
- echo "
Failed to repair the {prefix}$table table. Error: $check->Msg_text
";
- $problems["{$prefix}$table"] = $check->Msg_text;
+ echo "
Failed to repair the $table table. Error: $check->Msg_text
";
+ $problems["$table"] = $check->Msg_text;
$okay = false;
}
}
if ( $okay && $optimize ) {
- $check = $wpdb->get_row("ANALYZE TABLE {$prefix}$table");
+ $check = $wpdb->get_row("ANALYZE TABLE $table");
if ( 'Table is already up to date' == $check->Msg_text ) {
- echo "
The {$prefix}$table table is already optimized.";
+ echo "
The $table table is already optimized.";
} else {
- $check = $wpdb->get_row("OPTIMIZE TABLE {$prefix}$table");
+ $check = $wpdb->get_row("OPTIMIZE TABLE $table");
if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text )
- echo "
Successfully optimized the {$prefix}$table table.";
+ echo "
Successfully optimized the $table table.";
else
- echo "
Failed to optimize the {$prefix}$table table. Error: $check->Msg_text";
+ echo "
Failed to optimize the $table table. Error: $check->Msg_text";
}
}
echo '
';
diff --git a/wp-includes/deprecated.php b/wp-includes/deprecated.php
index d445055ed..f654800fe 100644
--- a/wp-includes/deprecated.php
+++ b/wp-includes/deprecated.php
@@ -1,79 +1,13 @@
posts
- */
-$tableposts = $wpdb->posts;
-
-/**
- * The name of the Users table
- * @global string $tableusers
- * @deprecated Use $wpdb->users
- */
-$tableusers = $wpdb->users;
-
-/**
- * The name of the Categories table
- * @global string $tablecategories
- * @deprecated Use $wpdb->categories
- */
-$tablecategories = $wpdb->categories;
-
-/**
- * The name of the post to category table
- * @global string $tablepost2cat
- * @deprecated Use $wpdb->post2cat;
- */
-$tablepost2cat = $wpdb->post2cat;
-
-/**
- * The name of the comments table
- * @global string $tablecomments
- * @deprecated Use $wpdb->comments;
- */
-$tablecomments = $wpdb->comments;
-
-/**
- * The name of the links table
- * @global string $tablelinks
- * @deprecated Use $wpdb->links;
- */
-$tablelinks = $wpdb->links;
-
-/**
- * @global string $tablelinkcategories
- * @deprecated Not used anymore;
- */
-$tablelinkcategories = 'linkcategories_is_gone';
-
-/**
- * The name of the options table
- * @global string $tableoptions
- * @deprecated Use $wpdb->options;
- */
-$tableoptions = $wpdb->options;
-
-/**
- * The name of the postmeta table
- * @global string $tablepostmeta
- * @deprecated Use $wpdb->postmeta;
- */
-$tablepostmeta = $wpdb->postmeta;
-
/*
* Deprecated functions come here to die.
*/
diff --git a/wp-includes/functions.php b/wp-includes/functions.php
index fcac51ef7..674c6ea84 100644
--- a/wp-includes/functions.php
+++ b/wp-includes/functions.php
@@ -1827,12 +1827,13 @@ function is_blog_installed() {
$tables = $wpdb->get_col('SHOW TABLES');
$wpdb->suppress_errors( $suppress );
+ $wp_tables = $wpdb->tables( 'all', true );
// Loop over the WP tables. If none exist, then scratch install is allowed.
// If one or more exist, suggest table repair since we got here because the options
// table could not be accessed.
- foreach ($wpdb->tables as $table) {
+ foreach ( $wp_tables as $table ) {
// If one of the WP tables exist, then we are in an insane state.
- if ( in_array($wpdb->prefix . $table, $tables) ) {
+ if ( in_array( $table, $tables ) ) {
// If visiting repair.php, return true and let it take over.
if ( defined('WP_REPAIRING') )
return true;
diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php
index 4422292b6..ab298f4b6 100644
--- a/wp-includes/wp-db.php
+++ b/wp-includes/wp-db.php
@@ -137,12 +137,6 @@ class wpdb {
var $ready = false;
var $blogid = 0;
var $siteid = 0;
- var $blogs;
- var $signups;
- var $site;
- var $sitemeta;
- var $sitecategories;
- var $global_tables = array('blogs', 'signups', 'site', 'sitemeta', 'users', 'usermeta', 'sitecategories', 'registration_log', 'blog_versions');
/**
* WordPress Posts table
@@ -162,24 +156,6 @@ class wpdb {
*/
var $users;
- /**
- * WordPress Categories table
- *
- * @since 1.5.0
- * @access public
- * @var string
- */
- var $categories;
-
- /**
- * WordPress Post to Category table
- *
- * @since 1.5.0
- * @access public
- * @var string
- */
- var $post2cat;
-
/**
* WordPress Comments table
*
@@ -262,27 +238,112 @@ class wpdb {
var $term_relationships;
/**
- * List of WordPress tables
+ * List of WordPress per-blog tables
*
* @since {@internal Version Unknown}}
* @access private
+ * @see wpdb::tables()
* @var array
*/
- var $tables = array('posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options',
- 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta');
+ var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
+ 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' );
/**
* List of deprecated WordPress tables
*
* @since 2.9.0
* @access private
+ * @see wpdb::tables()
* @var array
*/
- var $old_tables = array('categories', 'post2cat', 'link2cat');
-
+ var $old_tables = array( 'categories', 'post2cat', 'link2cat' );
/**
- * Format specifiers for DB columns. Columns not listed here default to %s. Initialized in wp-settings.php.
+ * Multisite Blogs table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $blogs;
+
+ /**
+ * Multisite Signups table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $signups;
+
+ /**
+ * Multisite Sites table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $site;
+
+ /**
+ * Multisite Site Metadata table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $sitemeta;
+
+ /**
+ * Multisite Sitewide Terms table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $sitecategories;
+
+ /**
+ * Multisite Registration Log table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $registration_log;
+
+ /**
+ * Multisite Blog Versions table
+ *
+ * @since 3.0.0
+ * @access public
+ * @var string
+ */
+ var $blog_versions;
+
+ /**
+ * List of Multisite global tables
+ *
+ * @since 3.0.0
+ * @access private
+ * @see wpdb::tables()
+ * @var array
+ */
+ var $ms_tables = array( 'blogs', 'signups', 'site', 'sitemeta',
+ 'sitecategories', 'registration_log', 'blog_versions' );
+
+ /**
+ * List of WordPress global tables
+ *
+ * @since 3.0.0
+ * @access private
+ * @see wpdb::tables()
+ * @var array
+ */
+ var $global_tables = array( 'users', 'usermeta' );
+
+ /**
+ * Format specifiers for DB columns. Columns not listed here default to %s. Initialized in wp-settings.php.
*
* Keys are colmn names, values are format types: 'ID' => '%d'
*
@@ -290,6 +351,7 @@ class wpdb {
* @see wpdb:prepare()
* @see wpdb:insert()
* @see wpdb:update()
+ * @see wp_set_wpdb_vars()
* @access public
* @var array
*/
@@ -439,7 +501,7 @@ class wpdb {
* @param string $prefix Alphanumeric name for the new prefix.
* @return string|WP_Error Old prefix or WP_Error on error
*/
- function set_prefix($prefix) {
+ function set_prefix( $prefix ) {
if ( preg_match('|[^a-z0-9_]|i', $prefix) )
return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/);
@@ -452,15 +514,18 @@ class wpdb {
if ( isset( $this->base_prefix ) )
$old_prefix = $this->base_prefix;
$this->base_prefix = $prefix;
- foreach ( $this->global_tables as $table )
+ foreach ( $this->tables( 'global' ) as $table )
$this->$table = $prefix . $table;
- if ( defined('VHOST') && empty($this->blogid) )
+ if ( defined('VHOST') && empty( $this->blogid ) )
return $old_prefix;
$this->prefix = $this->get_blog_prefix( $this->blogid );
- foreach ( (array) $this->tables as $table )
+ foreach ( (array) $this->tables( 'blog' ) as $table )
+ $this->$table = $this->prefix . $table;
+
+ foreach ( (array) $this->tables( 'old' ) as $table )
$this->$table = $this->prefix . $table;
if ( defined('CUSTOM_USER_TABLE') )
@@ -481,7 +546,10 @@ class wpdb {
$this->prefix = $this->get_blog_prefix( $this->blogid );
- foreach ( $this->tables as $table )
+ foreach ( $this->tables( 'blog' ) as $table )
+ $this->$table = $this->prefix . $table;
+
+ foreach ( $this->tables( 'old' ) as $table )
$this->$table = $this->prefix . $table;
return $old_blog_id;
@@ -498,6 +566,49 @@ class wpdb {
}
}
+ /**
+ * Returns an array of WordPress tables.
+ *
+ * @since 3.0.0
+ * @uses wpdb::tables
+ * @uses wpdb::old_tables
+ * @uses wpdb::global_tables
+ * @uses is_multisite()
+ *
+ * @param string $scope Can be all, global, blog, or old tables. Default all.
+ * All returns all global tables and the blog tables for the queried blog.
+ * @param bool $prefix Whether to include the blog prefix. Default false.
+ * @param int $blog_id The blog_id to prefix. Defaults to main blog.
+ * @return array Table names.
+ */
+ function tables( $scope = 'all', $prefix = false, $blog_id = 0 ) {
+ switch ( $scope ) {
+ case 'old' :
+ $tables = $this->old_tables;
+ break;
+ case 'blog' :
+ $tables = $this->tables;
+ break;
+ case 'global' :
+ $tables = array_merge( $this->global_tables, $this->ms_tables );
+ break;
+ case 'all' :
+ $tables = array_merge( $this->global_tables, $this->tables );
+ if ( is_multisite() )
+ $tables = array_merge( $tables, $this->ms_tables );
+ break;
+ }
+
+ if ( $prefix ) {
+ $prefix = $this->get_blog_prefix( $blog_id );
+ foreach ( $tables as &$table ) {
+ $table = $prefix . $table;
+ }
+ }
+
+ return $tables;
+ }
+
/**
* Selects a database using the current database connection.
*