WordPress.org

Make WordPress Core

Ticket #12083: global_tables.diff

File global_tables.diff, 12.1 KB (added by nacin, 4 years ago)
  • wp-admin/maint/repair.php

     
    3131 
    3232        $okay = true; 
    3333 
    34         $tables = array_merge( $wpdb->tables, is_multisite() ? $wpdb->global_tables : array( 'users', 'usermeta' ) ); 
    35         $prefix = $wpdb->prefix; 
    36         if ( is_multisite() && ! defined('MULTISITE') ) // _1 to get MU-era main blog 
    37                 $prefix .= '_1'; 
    38  
     34        $tables = $wpdb->tables( 'all', true ); 
    3935        // Loop over the WP tables, checking and repairing as needed. 
    4036        foreach ( $tables as $table ) { 
    41                 if ( in_array( $table, $wpdb->old_tables ) ) 
    42                         continue; 
    43  
    44                 $check = $wpdb->get_row("CHECK TABLE {$prefix}$table"); 
     37                $check = $wpdb->get_row("CHECK TABLE $table"); 
    4538                if ( 'OK' == $check->Msg_text ) { 
    46                         echo "<p>The {$prefix}$table table is okay."; 
     39                        echo "<p>The $table table is okay."; 
    4740                } else { 
    48                         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&hellip;"; 
    49                         $repair = $wpdb->get_row("REPAIR TABLE {$prefix}$table"); 
     41                        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&hellip;"; 
     42                        $repair = $wpdb->get_row("REPAIR TABLE $table"); 
    5043                        if ( 'OK' == $check->Msg_text ) { 
    51                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Successfully repaired the {$prefix}$table table."; 
     44                                echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Successfully repaired the $table table."; 
    5245                        } else { 
    53                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to repair the {prefix}$table table. Error: $check->Msg_text<br />"; 
    54                                 $problems["{$prefix}$table"] = $check->Msg_text; 
     46                                echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to repair the $table table. Error: $check->Msg_text<br />"; 
     47                                $problems["$table"] = $check->Msg_text; 
    5548                                $okay = false; 
    5649                        } 
    5750                } 
    5851                if ( $okay && $optimize ) { 
    59                         $check = $wpdb->get_row("ANALYZE TABLE {$prefix}$table"); 
     52                        $check = $wpdb->get_row("ANALYZE TABLE $table"); 
    6053                        if ( 'Table is already up to date' == $check->Msg_text )  { 
    61                                 echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;The {$prefix}$table table is already optimized."; 
     54                                echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;The $table table is already optimized."; 
    6255                        } else { 
    63                                 $check = $wpdb->get_row("OPTIMIZE TABLE {$prefix}$table"); 
     56                                $check = $wpdb->get_row("OPTIMIZE TABLE $table"); 
    6457                                if ( 'OK' == $check->Msg_text || 'Table is already up to date' == $check->Msg_text ) 
    65                                         echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Successfully optimized the {$prefix}$table table."; 
     58                                        echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Successfully optimized the $table table."; 
    6659                                else 
    67                                         echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to optimize the {$prefix}$table table. Error: $check->Msg_text"; 
     60                                        echo "<br />&nbsp;&nbsp;&nbsp;&nbsp;Failed to optimize the $table table. Error: $check->Msg_text"; 
    6861                        } 
    6962                } 
    7063                echo '</p>'; 
  • wp-includes/deprecated.php

     
    11<?php 
    22/** 
    33 * Deprecated functions from past WordPress versions. You shouldn't use these 
    4  * globals and functions and look for the alternatives instead. The functions 
    5  * and globals will be removed in a later version. 
     4 * functions and look for the alternatives instead. The functions will be 
     5 * removed in a later version. 
    66 * 
    77 * @package WordPress 
    88 * @subpackage Deprecated 
    99 */ 
    1010 
    1111/* 
    12  * Deprecated global variables. 
    13  */ 
    14  
    15 /** 
    16  * The name of the Posts table 
    17  * @global string $tableposts 
    18  * @deprecated Use $wpdb->posts 
    19  */ 
    20 $tableposts = $wpdb->posts; 
    21  
    22 /** 
    23  * The name of the Users table 
    24  * @global string $tableusers 
    25  * @deprecated Use $wpdb->users 
    26  */ 
    27 $tableusers = $wpdb->users; 
    28  
    29 /** 
    30  * The name of the Categories table 
    31  * @global string $tablecategories 
    32  * @deprecated Use $wpdb->categories 
    33  */ 
    34 $tablecategories = $wpdb->categories; 
    35  
    36 /** 
    37  * The name of the post to category table 
    38  * @global string $tablepost2cat 
    39  * @deprecated Use $wpdb->post2cat; 
    40  */ 
    41 $tablepost2cat = $wpdb->post2cat; 
    42  
    43 /** 
    44  * The name of the comments table 
    45  * @global string $tablecomments 
    46  * @deprecated Use $wpdb->comments; 
    47  */ 
    48 $tablecomments = $wpdb->comments; 
    49  
    50 /** 
    51  * The name of the links table 
    52  * @global string $tablelinks 
    53  * @deprecated Use $wpdb->links; 
    54  */ 
    55 $tablelinks = $wpdb->links; 
    56  
    57 /** 
    58  * @global string $tablelinkcategories 
    59  * @deprecated Not used anymore; 
    60  */ 
    61 $tablelinkcategories = 'linkcategories_is_gone'; 
    62  
    63 /** 
    64  * The name of the options table 
    65  * @global string $tableoptions 
    66  * @deprecated Use $wpdb->options; 
    67  */ 
    68 $tableoptions = $wpdb->options; 
    69  
    70 /** 
    71  * The name of the postmeta table 
    72  * @global string $tablepostmeta 
    73  * @deprecated Use $wpdb->postmeta; 
    74  */ 
    75 $tablepostmeta = $wpdb->postmeta; 
    76  
    77 /* 
    7812 * Deprecated functions come here to die. 
    7913 */ 
    8014 
  • wp-includes/functions.php

     
    18271827        $tables = $wpdb->get_col('SHOW TABLES'); 
    18281828        $wpdb->suppress_errors( $suppress ); 
    18291829 
     1830        $wp_tables = $wpdb->tables( 'all', true ); 
    18301831        // Loop over the WP tables.  If none exist, then scratch install is allowed. 
    18311832        // If one or more exist, suggest table repair since we got here because the options 
    18321833        // table could not be accessed. 
    1833         foreach ($wpdb->tables as $table) { 
     1834        foreach ( $wp_tables as $table ) { 
    18341835                // If one of the WP tables exist, then we are in an insane state. 
    1835                 if ( in_array($wpdb->prefix . $table, $tables) ) { 
     1836                if ( in_array( $table, $tables ) ) { 
    18361837                        // If visiting repair.php, return true and let it take over. 
    18371838                        if ( defined('WP_REPAIRING') ) 
    18381839                                return true; 
  • wp-includes/wp-db.php

     
    137137        var $ready = false; 
    138138        var $blogid = 0; 
    139139        var $siteid = 0; 
    140         var $blogs; 
    141         var $signups; 
    142         var $site; 
    143         var $sitemeta; 
    144         var $sitecategories; 
    145         var $global_tables = array('blogs', 'signups', 'site', 'sitemeta', 'users', 'usermeta', 'sitecategories', 'registration_log', 'blog_versions'); 
    146140 
    147141        /** 
    148142         * WordPress Posts table 
     
    163157        var $users; 
    164158 
    165159        /** 
    166          * WordPress Categories table 
    167          * 
    168          * @since 1.5.0 
    169          * @access public 
    170          * @var string 
    171          */ 
    172         var $categories; 
    173  
    174         /** 
    175          * WordPress Post to Category table 
    176          * 
    177          * @since 1.5.0 
    178          * @access public 
    179          * @var string 
    180          */ 
    181         var $post2cat; 
    182  
    183         /** 
    184160         * WordPress Comments table 
    185161         * 
    186162         * @since 1.5.0 
     
    262238        var $term_relationships; 
    263239 
    264240        /** 
    265          * List of WordPress tables 
     241         * List of WordPress per-blog tables 
    266242         * 
    267243         * @since {@internal Version Unknown}} 
    268244         * @access private 
     245         * @see wpdb::tables() 
    269246         * @var array 
    270247         */ 
    271         var $tables = array('posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options', 
    272                         'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta'); 
     248        var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 
     249                'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' ); 
    273250 
    274251        /** 
    275252         * List of deprecated WordPress tables 
    276253         * 
    277254         * @since 2.9.0 
    278255         * @access private 
     256         * @see wpdb::tables() 
    279257         * @var array 
    280258         */ 
    281         var $old_tables = array('categories', 'post2cat', 'link2cat'); 
     259        var $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 
    282260 
     261        /** 
     262         * Multisite Blogs table 
     263         * 
     264         * @since 3.0.0 
     265         * @access public 
     266         * @var string 
     267         */ 
     268        var $blogs; 
    283269 
    284270        /** 
    285          * Format specifiers for DB columns. Columns not listed here default to %s.  Initialized in wp-settings.php. 
     271         * Multisite Signups table 
    286272         * 
     273         * @since 3.0.0 
     274         * @access public 
     275         * @var string 
     276         */ 
     277        var $signups; 
     278 
     279        /** 
     280         * Multisite Sites table 
     281         * 
     282         * @since 3.0.0 
     283         * @access public 
     284         * @var string 
     285         */ 
     286        var $site; 
     287 
     288        /** 
     289         * Multisite Site Metadata table 
     290         * 
     291         * @since 3.0.0 
     292         * @access public 
     293         * @var string 
     294         */ 
     295        var $sitemeta; 
     296 
     297        /** 
     298         * Multisite Sitewide Terms table 
     299         * 
     300         * @since 3.0.0 
     301         * @access public 
     302         * @var string 
     303         */ 
     304        var $sitecategories; 
     305 
     306        /** 
     307         * Multisite Registration Log table 
     308         * 
     309         * @since 3.0.0 
     310         * @access public 
     311         * @var string 
     312         */ 
     313        var $registration_log; 
     314 
     315        /** 
     316         * Multisite Blog Versions table 
     317         * 
     318         * @since 3.0.0 
     319         * @access public 
     320         * @var string 
     321         */ 
     322        var $blog_versions; 
     323 
     324        /** 
     325         * List of Multisite global tables 
     326         * 
     327         * @since 3.0.0 
     328         * @access private 
     329         * @see wpdb::tables() 
     330         * @var array 
     331         */ 
     332        var $ms_tables = array( 'blogs', 'signups', 'site', 'sitemeta', 
     333                'sitecategories', 'registration_log', 'blog_versions' ); 
     334 
     335        /** 
     336         * List of WordPress global tables 
     337         * 
     338         * @since 3.0.0 
     339         * @access private 
     340         * @see wpdb::tables() 
     341         * @var array 
     342         */ 
     343        var $global_tables = array( 'users', 'usermeta' ); 
     344 
     345        /** 
     346         * Format specifiers for DB columns. Columns not listed here default to %s. Initialized in wp-settings.php. 
     347         * 
    287348         * Keys are colmn names, values are format types: 'ID' => '%d' 
    288349         * 
    289350         * @since 2.8.0 
    290351         * @see wpdb:prepare() 
    291352         * @see wpdb:insert() 
    292353         * @see wpdb:update() 
     354         * @see wp_set_wpdb_vars() 
    293355         * @access public 
    294356         * @var array 
    295357         */ 
     
    439501         * @param string $prefix Alphanumeric name for the new prefix. 
    440502         * @return string|WP_Error Old prefix or WP_Error on error 
    441503         */ 
    442         function set_prefix($prefix) { 
     504        function set_prefix( $prefix ) { 
    443505 
    444506                if ( preg_match('|[^a-z0-9_]|i', $prefix) ) 
    445507                        return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/); 
     
    452514                if ( isset( $this->base_prefix ) ) 
    453515                        $old_prefix = $this->base_prefix; 
    454516                $this->base_prefix = $prefix; 
    455                 foreach ( $this->global_tables as $table ) 
     517                foreach ( $this->tables( 'global' ) as $table ) 
    456518                        $this->$table = $prefix . $table; 
    457519 
    458                 if ( defined('VHOST') && empty($this->blogid) ) 
     520                if ( defined('VHOST') && empty( $this->blogid ) ) 
    459521                        return $old_prefix; 
    460522 
    461523                $this->prefix = $this->get_blog_prefix( $this->blogid ); 
    462524 
    463                 foreach ( (array) $this->tables as $table ) 
     525                foreach ( (array) $this->tables( 'blog' ) as $table ) 
    464526                        $this->$table = $this->prefix . $table; 
    465527 
     528                foreach ( (array) $this->tables( 'old' ) as $table ) 
     529                        $this->$table = $this->prefix . $table; 
     530 
    466531                if ( defined('CUSTOM_USER_TABLE') ) 
    467532                        $this->users = CUSTOM_USER_TABLE; 
    468533 
     
    481546 
    482547                $this->prefix = $this->get_blog_prefix( $this->blogid ); 
    483548 
    484                 foreach ( $this->tables as $table ) 
     549                foreach ( $this->tables( 'blog' ) as $table ) 
    485550                        $this->$table = $this->prefix . $table; 
    486551 
     552                foreach ( $this->tables( 'old' ) as $table ) 
     553                        $this->$table = $this->prefix . $table; 
     554 
    487555                return $old_blog_id; 
    488556        } 
    489557 
     
    499567        } 
    500568 
    501569        /** 
     570         * Returns an array of WordPress tables. 
     571         * 
     572         * @since 3.0.0 
     573         * @uses wpdb::tables 
     574         * @uses wpdb::old_tables 
     575         * @uses wpdb::global_tables 
     576         * @uses is_multisite() 
     577         * 
     578         * @param string $scope Can be all, global, blog, or old tables. Default all. 
     579         *      All returns all global tables and the blog tables for the queried blog. 
     580         * @param bool $prefix Whether to include the blog prefix. Default false. 
     581         * @param int $blog_id The blog_id to prefix. Defaults to main blog. 
     582         * @return array Table names. 
     583         */ 
     584        function tables( $scope = 'all', $prefix = false, $blog_id = 0 ) { 
     585                switch ( $scope ) { 
     586                        case 'old' : 
     587                                $tables = $this->old_tables; 
     588                                break; 
     589                        case 'blog' : 
     590                                $tables = $this->tables; 
     591                                break; 
     592                        case 'global' : 
     593                                $tables = array_merge( $this->global_tables, $this->ms_tables ); 
     594                                break; 
     595                        case 'all' : 
     596                                $tables = array_merge( $this->global_tables, $this->tables ); 
     597                                if ( is_multisite() ) 
     598                                        $tables = array_merge( $tables, $this->ms_tables ); 
     599                                break; 
     600                } 
     601 
     602                if ( $prefix ) { 
     603                        $prefix = $this->get_blog_prefix( $blog_id ); 
     604                        foreach ( $tables as &$table ) { 
     605                                $table = $prefix . $table; 
     606                        } 
     607                } 
     608 
     609                return $tables; 
     610        } 
     611 
     612        /** 
    502613         * Selects a database using the current database connection. 
    503614         * 
    504615         * The database name will be changed based on the current database