Introduce wpdb::tables() to fetch table names on a global or blog scope. Remove very old and long deprecated $table{table} globals, fixes #11614. See #12083
git-svn-id: http://svn.automattic.com/wordpress/trunk@13229 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
3b98150c82
commit
23918aa60d
|
@ -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 "<p>The {$prefix}$table table is okay.";
|
||||
echo "<p>The $table table is okay.";
|
||||
} else {
|
||||
echo "<p>The {$prefix}$table table is not okay. It is reporting the following error: <code>$check->Msg_text</code>. WordPress will attempt to repair this table…";
|
||||
$repair = $wpdb->get_row("REPAIR TABLE {$prefix}$table");
|
||||
echo "<p>The $table table is not okay. It is reporting the following error: <code>$check->Msg_text</code>. WordPress will attempt to repair this table…";
|
||||
$repair = $wpdb->get_row("REPAIR TABLE $table");
|
||||
if ( 'OK' == $check->Msg_text ) {
|
||||
echo "<br /> Successfully repaired the {$prefix}$table table.";
|
||||
echo "<br /> Successfully repaired the $table table.";
|
||||
} else {
|
||||
echo "<br /> Failed to repair the {prefix}$table table. Error: $check->Msg_text<br />";
|
||||
$problems["{$prefix}$table"] = $check->Msg_text;
|
||||
echo "<br /> Failed to repair the $table table. Error: $check->Msg_text<br />";
|
||||
$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 "<br /> The {$prefix}$table table is already optimized.";
|
||||
echo "<br /> 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 "<br /> Successfully optimized the {$prefix}$table table.";
|
||||
echo "<br /> Successfully optimized the $table table.";
|
||||
else
|
||||
echo "<br /> Failed to optimize the {$prefix}$table table. Error: $check->Msg_text";
|
||||
echo "<br /> Failed to optimize the $table table. Error: $check->Msg_text";
|
||||
}
|
||||
}
|
||||
echo '</p>';
|
||||
|
|
|
@ -1,79 +1,13 @@
|
|||
<?php
|
||||
/**
|
||||
* Deprecated functions from past WordPress versions. You shouldn't use these
|
||||
* globals and functions and look for the alternatives instead. The functions
|
||||
* and globals will be removed in a later version.
|
||||
* functions and look for the alternatives instead. The functions will be
|
||||
* removed in a later version.
|
||||
*
|
||||
* @package WordPress
|
||||
* @subpackage Deprecated
|
||||
*/
|
||||
|
||||
/*
|
||||
* Deprecated global variables.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The name of the Posts table
|
||||
* @global string $tableposts
|
||||
* @deprecated Use $wpdb->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.
|
||||
*/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue