WordPress.org

Make WordPress Core

Ticket #16764: 16764.patch

File 16764.patch, 38.6 KB (added by hakre, 3 years ago)

wpdb with interface and base class

  • wp-admin/includes/deprecated.php

     
    493493                $this->query_from = " FROM $wpdb->users"; 
    494494                $this->query_where = " WHERE 1=1 $search_sql"; 
    495495 
     496                $prefix = $wpdb->get_blog_prefix(); 
    496497                if ( $this->role ) { 
    497498                        $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; 
    498                         $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); 
     499                        $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); 
    499500                } elseif ( is_multisite() ) { 
    500                         $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels 
     501                        $level_key = $prefix . 'capabilities'; // wpmu site admins don't have user_levels 
    501502                        $this->query_from .= ", $wpdb->usermeta"; 
    502503                        $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; 
    503504                } 
  • wp-admin/includes/upgrade.php

     
    645645        } 
    646646 
    647647        // Obsolete tables 
    648         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optionvalues'); 
    649         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiontypes'); 
    650         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroups'); 
    651         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroup_options'); 
     648        $prefix = $wpdb->get_blog_prefix(); 
     649        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'optionvalues'); 
     650        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'optiontypes'); 
     651        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'optiongroups'); 
     652        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'optiongroup_options'); 
    652653 
    653654        // Update comments table to use comment_type 
    654655        $wpdb->query("UPDATE $wpdb->comments SET comment_type='trackback', comment_content = REPLACE(comment_content, '<trackback />', '') WHERE comment_content LIKE '<trackback />%'"); 
     
    689690                if ( !empty( $user->user_nickname ) ) 
    690691                        update_user_meta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) ); 
    691692                if ( !empty( $user->user_level ) ) 
    692                         update_user_meta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level ); 
     693                        update_user_meta( $user->ID, $wpdb->get_blog_prefix() . 'user_level', $user->user_level ); 
    693694                if ( !empty( $user->user_icq ) ) 
    694695                        update_user_meta( $user->ID, 'icq', $wpdb->escape($user->user_icq) ); 
    695696                if ( !empty( $user->user_aim ) ) 
     
    714715                endif; 
    715716 
    716717                // FIXME: RESET_CAPS is temporary code to reset roles and caps if flag is set. 
    717                 $caps = get_user_meta( $user->ID, $wpdb->prefix . 'capabilities'); 
     718                $prefix = $wpdb->get_blog_prefix(); 
     719                $caps = get_user_meta( $user->ID, $prefix . 'capabilities'); 
    718720                if ( empty($caps) || defined('RESET_CAPS') ) { 
    719                         $level = get_user_meta($user->ID, $wpdb->prefix . 'user_level', true); 
     721                        $level = get_user_meta($user->ID, $prefix . 'user_level', true); 
    720722                        $role = translate_level_to_role($level); 
    721                         update_user_meta( $user->ID, $wpdb->prefix . 'capabilities', array($role => true) ); 
     723                        update_user_meta( $user->ID, $prefix . 'capabilities', array($role => true) ); 
    722724                } 
    723725 
    724726        endforeach; 
     
    897899                $link_cat_id_map = array(); 
    898900                $default_link_cat = 0; 
    899901                $tt_ids = array(); 
    900                 $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories'); 
     902                $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->get_blog_prefix() . 'linkcategories'); 
    901903                foreach ( $link_cats as $category) { 
    902904                        $cat_id = (int) $category->cat_id; 
    903905                        $term_id = 0; 
     
    955957 
    956958        if ( $wp_current_db_version < 4772 ) { 
    957959                // Obsolete linkcategories table 
    958                 $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories'); 
     960                $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->get_blog_prefix() . 'linkcategories'); 
    959961        } 
    960962 
    961963        // Recalculate all counts 
     
    990992 */ 
    991993function upgrade_230_old_tables() { 
    992994        global $wpdb; 
    993         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'categories'); 
    994         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'link2cat'); 
    995         $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'post2cat'); 
     995        $prefix = $wpdb->get_blog_prefix(); 
     996        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'categories'); 
     997        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'link2cat'); 
     998        $wpdb->query('DROP TABLE IF EXISTS ' . $prefix . 'post2cat'); 
    996999} 
    9971000 
    9981001/** 
  • wp-includes/capabilities.php

     
    9898         */ 
    9999        function _init () { 
    100100                global $wpdb, $wp_user_roles; 
    101                 $this->role_key = $wpdb->prefix . 'user_roles'; 
     101                $this->role_key = $wpdb->get_blog_prefix() . 'user_roles'; 
    102102                if ( ! empty( $wp_user_roles ) ) { 
    103103                        $this->roles = $wp_user_roles; 
    104104                        $this->use_db = false; 
     
    516516        function _init_caps( $cap_key = '' ) { 
    517517                global $wpdb; 
    518518                if ( empty($cap_key) ) 
    519                         $this->cap_key = $wpdb->prefix . 'capabilities'; 
     519                        $this->cap_key = $wpdb->get_blog_prefix() . 'capabilities'; 
    520520                else 
    521521                        $this->cap_key = $cap_key; 
    522522                $this->caps = &$this->{$this->cap_key}; 
     
    662662        function update_user_level_from_caps() { 
    663663                global $wpdb; 
    664664                $this->user_level = array_reduce( array_keys( $this->allcaps ), array( &$this, 'level_reduction' ), 0 ); 
    665                 update_user_meta( $this->ID, $wpdb->prefix . 'user_level', $this->user_level ); 
     665                update_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level', $this->user_level ); 
    666666        } 
    667667 
    668668        /** 
     
    704704                global $wpdb; 
    705705                $this->caps = array(); 
    706706                delete_user_meta( $this->ID, $this->cap_key ); 
    707                 delete_user_meta( $this->ID, $wpdb->prefix . 'user_level' ); 
     707                delete_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level' ); 
    708708                $this->get_role_caps(); 
    709709        } 
    710710 
  • wp-includes/ms-blogs.php

     
    475475        } 
    476476 
    477477        $wpdb->set_blog_id($new_blog); 
    478         $table_prefix = $wpdb->prefix; 
     478        $table_prefix = $wpdb->get_blog_prefix(); 
    479479        $prev_blog_id = $blog_id; 
    480480        $blog_id = $new_blog; 
    481481 
     
    541541        $wpdb->set_blog_id($blog); 
    542542        $prev_blog_id = $blog_id; 
    543543        $blog_id = $blog; 
    544         $table_prefix = $wpdb->prefix; 
     544        $table_prefix = $wpdb->get_blog_prefix(); 
    545545 
    546546        if ( is_object( $wp_roles ) ) { 
    547547                $wpdb->suppress_errors(); 
  • wp-includes/user.php

     
    262262 
    263263        // Keys used as object vars cannot have dashes. 
    264264        $key = str_replace('-', '', $option); 
    265  
    266         if ( isset( $user->{$wpdb->prefix . $key} ) ) // Blog specific 
    267                 $result = $user->{$wpdb->prefix . $key}; 
     265        $prefix = $wpdb->get_blog_prefix(); 
     266        if ( isset( $user->{$prefix . $key} ) ) // Blog specific 
     267                $result = $user->{$prefix . $key}; 
    268268        elseif ( isset( $user->{$key} ) ) // User specific and cross-blog 
    269269                $result = $user->{$key}; 
    270270        else 
     
    295295        global $wpdb; 
    296296 
    297297        if ( !$global ) 
    298                 $option_name = $wpdb->prefix . $option_name; 
     298                $option_name = $wpdb->get_blog_prefix() . $option_name; 
    299299 
    300300        // For backward compatibility. See differences between update_user_meta() and deprecated update_usermeta(). 
    301301        // http://core.trac.wordpress.org/ticket/13088 
     
    324324        global $wpdb; 
    325325 
    326326        if ( !$global ) 
    327                 $option_name = $wpdb->prefix . $option_name; 
     327                $option_name = $wpdb->get_blog_prefix() . $option_name; 
    328328        return delete_user_meta( $user_id, $option_name ); 
    329329} 
    330330 
     
    11011101                $user->{$key} = $value; 
    11021102        } 
    11031103 
    1104         $level = $wpdb->prefix . 'user_level'; 
     1104        $level = $wpdb->get_blog_prefix() . 'user_level'; 
    11051105        if ( isset( $user->{$level} ) ) 
    11061106                $user->user_level = $user->{$level}; 
    11071107 
  • wp-includes/wp-db.php

     
    3535define( 'ARRAY_N', 'ARRAY_N' ); 
    3636 
    3737/** 
    38  * WordPress Database Access Abstraction Object 
     38 * WordPress Database Access Abstraction Object Methods 
    3939 * 
    40  * It is possible to replace this class with your own 
    41  * by setting the $wpdb global variable in wp-content/db.php 
    42  * file with your class. You can name it wpdb also, since 
    43  * this file will not be included, if the other file is 
    44  * available. 
     40 * @package WordPress 
     41 * @subpackage Database 
     42 * @since 3.2 
     43 */ 
     44Interface WP_Db_Methods { 
     45        public function set_prefix( $prefix, $set_table_names = true ); 
     46        public function set_blog_id( $blog_id, $site_id = 0 ); 
     47        public function get_blog_prefix( $blog_id = null ); 
     48        public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ); 
     49        public function escape( $data ); 
     50        public function escape_by_ref( &$string ); 
     51        public function prepare( $query = null ); 
     52        public function show_errors( $show = true ); 
     53        public function hide_errors(); 
     54        public function suppress_errors( $suppress = true ); 
     55        public function query( $query ); 
     56        public function insert( $table, $data, $format = null ); 
     57        public function replace( $table, $data, $format = null ); 
     58        public function update( $table, $data, $where, $format = null, $where_format = null ); 
     59        public function get_var( $query = null, $column = 0, $row = 0 ); 
     60        public function get_row( $query = null, $output = null, $row = 0 ); 
     61        public function get_col( $query = null , $column = 0 ); 
     62        public function get_results( $query = null, $output = null ); 
     63        public function get_col_info( $info_type = 'name', $col_offset = null ); 
     64        public function has_cap( $feature ); 
     65        public function db_version(); 
     66} 
     67 
     68/** 
     69 * WordPress Database Access Abstraction Data Object 
    4570 * 
    46  * @link http://codex.wordpress.org/Function_Reference/wpdb_Class 
     71 * All public object variables of the WordPress Database  
     72 * Acccess Abstraction Object. 
    4773 * 
    4874 * @package WordPress 
    4975 * @subpackage Database 
    50  * @since 0.71 
     76 * @since 3.2 
    5177 */ 
    52 class wpdb { 
     78Class WP_Db_Variables { 
    5379 
    5480        /** 
    55          * Whether to show SQL/DB errors 
    56          * 
    57          * @since 0.71 
    58          * @access private 
    59          * @var bool 
    60          */ 
    61         var $show_errors = false; 
    62  
    63         /** 
    64          * Whether to suppress errors during the DB bootstrapping. 
    65          * 
    66          * @access private 
    67          * @since 2.5.0 
    68          * @var bool 
    69          */ 
    70         var $suppress_errors = false; 
    71  
    72         /** 
    73          * The last error during query. 
    74          * 
    75          * @see get_last_error() 
    76          * @since 2.5.0 
    77          * @access private 
    78          * @var string 
    79          */ 
    80         var $last_error = ''; 
    81  
    82         /** 
    83          * Amount of queries made 
    84          * 
    85          * @since 1.2.0 
    86          * @access private 
    87          * @var int 
    88          */ 
    89         var $num_queries = 0; 
    90  
    91         /** 
    92          * Count of rows returned by previous query 
    93          * 
    94          * @since 1.2.0 
    95          * @access private 
    96          * @var int 
    97          */ 
    98         var $num_rows = 0; 
    99  
    100         /** 
    101          * Count of affected rows by previous query 
    102          * 
    103          * @since 0.71 
    104          * @access private 
    105          * @var int 
    106          */ 
    107         var $rows_affected = 0; 
    108  
    109         /** 
    11081         * The ID generated for an AUTO_INCREMENT column by the previous query (usually INSERT). 
    11182         * 
    11283         * @since 0.71 
    11384         * @access public 
    11485         * @var int 
    11586         */ 
    116         var $insert_id = 0; 
     87        public $insert_id = 0; 
    11788 
    11889        /** 
    119          * Saved result of the last query made 
    120          * 
    121          * @since 1.2.0 
    122          * @access private 
    123          * @var array 
    124          */ 
    125         var $last_query; 
    126  
    127         /** 
    128          * Results of the last query made 
    129          * 
    130          * @since 1.0.0 
    131          * @access private 
    132          * @var array|null 
    133          */ 
    134         var $last_result; 
    135  
    136         /** 
    137          * Saved info on the table column 
    138          * 
    139          * @since 1.2.0 
    140          * @access private 
    141          * @var array 
    142          */ 
    143         var $col_info; 
    144  
    145         /** 
    146          * Saved queries that were executed 
    147          * 
    148          * @since 1.5.0 
    149          * @access private 
    150          * @var array 
    151          */ 
    152         var $queries; 
    153  
    154         /** 
    155          * WordPress table prefix 
    156          * 
    157          * You can set this to have multiple WordPress installations 
    158          * in a single database. The second reason is for possible 
    159          * security precautions. 
    160          * 
    161          * @since 0.71 
    162          * @access private 
    163          * @var string 
    164          */ 
    165         var $prefix = ''; 
    166  
    167         /** 
    168          * Whether the database queries are ready to start executing. 
    169          * 
    170          * @since 2.5.0 
    171          * @access private 
    172          * @var bool 
    173          */ 
    174         var $ready = false; 
    175  
    176         /** 
    17790         * {@internal Missing Description}} 
    17891         * 
    17992         * @since 3.0.0 
    18093         * @access public 
    18194         * @var int 
    18295         */ 
    183         var $blogid = 0; 
     96        public $blogid = 0; 
    18497 
    18598        /** 
    18699         * {@internal Missing Description}} 
     
    189102         * @access public 
    190103         * @var int 
    191104         */ 
    192         var $siteid = 0; 
     105        public $siteid = 0; 
    193106 
    194107        /** 
    195          * List of WordPress per-blog tables 
    196          * 
    197          * @since 2.5.0 
    198          * @access private 
    199          * @see wpdb::tables() 
    200          * @var array 
    201          */ 
    202         var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 
    203                 'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' ); 
    204  
    205         /** 
    206          * List of deprecated WordPress tables 
    207          * 
    208          * categories, post2cat, and link2cat were deprecated in 2.3.0, db version 5539 
    209          * 
    210          * @since 2.9.0 
    211          * @access private 
    212          * @see wpdb::tables() 
    213          * @var array 
    214          */ 
    215         var $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 
    216  
    217         /** 
    218          * List of WordPress global tables 
    219          * 
    220          * @since 3.0.0 
    221          * @access private 
    222          * @see wpdb::tables() 
    223          * @var array 
    224          */ 
    225         var $global_tables = array( 'users', 'usermeta' ); 
    226  
    227         /** 
    228          * List of Multisite global tables 
    229          * 
    230          * @since 3.0.0 
    231          * @access private 
    232          * @see wpdb::tables() 
    233          * @var array 
    234          */ 
    235         var $ms_global_tables = array( 'blogs', 'signups', 'site', 'sitemeta', 
    236                 'sitecategories', 'registration_log', 'blog_versions' ); 
    237  
    238         /** 
    239108         * WordPress Comments table 
    240109         * 
    241110         * @since 1.5.0 
    242111         * @access public 
    243112         * @var string 
    244113         */ 
    245         var $comments; 
     114        public $comments; 
    246115 
    247116        /** 
    248117         * WordPress Comment Metadata table 
     
    251120         * @access public 
    252121         * @var string 
    253122         */ 
    254         var $commentmeta; 
     123        public $commentmeta; 
    255124 
    256125        /** 
    257126         * WordPress Links table 
     
    260129         * @access public 
    261130         * @var string 
    262131         */ 
    263         var $links; 
     132        public $links; 
    264133 
    265134        /** 
    266135         * WordPress Options table 
     
    269138         * @access public 
    270139         * @var string 
    271140         */ 
    272         var $options; 
     141        public $options; 
    273142 
    274143        /** 
    275144         * WordPress Post Metadata table 
     
    278147         * @access public 
    279148         * @var string 
    280149         */ 
    281         var $postmeta; 
     150        public $postmeta; 
    282151 
    283152        /** 
    284153         * WordPress Posts table 
     
    287156         * @access public 
    288157         * @var string 
    289158         */ 
    290         var $posts; 
     159        public $posts; 
    291160 
    292161        /** 
    293162         * WordPress Terms table 
     
    296165         * @access public 
    297166         * @var string 
    298167         */ 
    299         var $terms; 
     168        public $terms; 
    300169 
    301170        /** 
    302171         * WordPress Term Relationships table 
     
    305174         * @access public 
    306175         * @var string 
    307176         */ 
    308         var $term_relationships; 
     177        public $term_relationships; 
    309178 
    310179        /** 
    311180         * WordPress Term Taxonomy table 
     
    314183         * @access public 
    315184         * @var string 
    316185         */ 
    317         var $term_taxonomy; 
     186        public $term_taxonomy; 
    318187 
    319188        /* 
    320189         * Global and Multisite tables 
     
    327196         * @access public 
    328197         * @var string 
    329198         */ 
    330         var $usermeta; 
     199        public $usermeta; 
    331200 
    332201        /** 
    333202         * WordPress Users table 
     
    336205         * @access public 
    337206         * @var string 
    338207         */ 
    339         var $users; 
     208        public $users; 
    340209 
    341210        /** 
    342211         * Multisite Blogs table 
     
    345214         * @access public 
    346215         * @var string 
    347216         */ 
    348         var $blogs; 
     217        public $blogs; 
    349218 
    350219        /** 
    351220         * Multisite Blog Versions table 
     
    354223         * @access public 
    355224         * @var string 
    356225         */ 
    357         var $blog_versions; 
     226        public $blog_versions; 
    358227 
    359228        /** 
    360229         * Multisite Registration Log table 
     
    363232         * @access public 
    364233         * @var string 
    365234         */ 
    366         var $registration_log; 
     235        public $registration_log; 
    367236 
    368237        /** 
    369238         * Multisite Signups table 
     
    372241         * @access public 
    373242         * @var string 
    374243         */ 
    375         var $signups; 
     244        public $signups; 
    376245 
    377246        /** 
    378247         * Multisite Sites table 
     
    381250         * @access public 
    382251         * @var string 
    383252         */ 
    384         var $site; 
     253        public $site; 
    385254 
    386255        /** 
    387256         * Multisite Sitewide Terms table 
     
    390259         * @access public 
    391260         * @var string 
    392261         */ 
    393         var $sitecategories; 
     262        public $sitecategories; 
    394263 
    395264        /** 
    396265         * Multisite Site Metadata table 
     
    399268         * @access public 
    400269         * @var string 
    401270         */ 
    402         var $sitemeta; 
     271        public $sitemeta; 
    403272 
    404273        /** 
    405274         * Format specifiers for DB columns. Columns not listed here default to %s. Initialized during WP load. 
     
    414283         * @access public 
    415284         * @var array 
    416285         */ 
    417         var $field_types = array(); 
     286        public $field_types = array(); 
    418287 
    419288        /** 
    420289         * Database table columns charset 
     
    423292         * @access public 
    424293         * @var string 
    425294         */ 
    426         var $charset; 
     295        public $charset; 
    427296 
    428297        /** 
    429298         * Database table columns collate 
     
    432301         * @access public 
    433302         * @var string 
    434303         */ 
    435         var $collate; 
     304        public $collate; 
    436305 
    437306        /** 
    438307         * Whether to use mysql_real_escape_string 
     
    441310         * @access public 
    442311         * @var bool 
    443312         */ 
    444         var $real_escape = false; 
     313        public $real_escape = false; 
    445314 
    446315        /** 
    447          * Database Username 
     316         * A textual description of the last query/get_row/get_var call 
    448317         * 
    449          * @since 2.9.0 
    450          * @access private 
     318         * @since 3.0.0 
     319         * @access public 
    451320         * @var string 
    452321         */ 
    453         var $dbuser; 
     322        public $func_call; 
     323} 
    454324 
     325/** 
     326 * WordPress Database Access Abstraction Object Base Class 
     327 * 
     328 * It is possible to replace the database abstraction by  
     329 * extending this abtract class. 
     330 * 
     331 * @link http://core.trac.wordpress.org/ticket/3354 
     332 * 
     333 * @package WordPress 
     334 * @subpackage Database 
     335 * @since 3.2 
     336 */ 
     337abstract class WP_Db_Base extends WP_Db_Variables implements WP_Db_Methods { 
     338        public function __construct() { 
     339                register_shutdown_function( array( $this, '__destruct' ) ); 
     340        } 
     341 
    455342        /** 
    456          * A textual description of the last query/get_row/get_var call 
     343         * Destructor that will run when database object is destroyed. 
    457344         * 
    458          * @since 3.0.0 
    459          * @access public 
     345         * Callback of register_shutdown_function 
     346         * 
     347         * @see __construct() 
     348         * @since 2.0.8 
     349         * @return bool true 
     350         */ 
     351        public function __destruct() { 
     352                return true; 
     353        } 
     354} 
     355 
     356 
     357/** 
     358 * WordPress Database Access Abstraction Object 
     359 * 
     360 * It is possible to replace this class with your own 
     361 * by setting the $wpdb global variable in wp-content/db.php 
     362 * file with your class. 
     363 *  
     364 * You can not name it wpdb, because this file will be included. 
     365 * 
     366 * @link http://codex.wordpress.org/Function_Reference/wpdb_Class 
     367 * 
     368 * @package WordPress 
     369 * @subpackage Database 
     370 * @since 0.71 
     371 */ 
     372class wpdb extends WP_Db_Base { 
     373 
     374        /** 
     375         * Whether to show SQL/DB errors 
     376         * 
     377         * @since 0.71 
     378         * @access private 
     379         * @var bool 
     380         */ 
     381        private $show_errors = false; 
     382 
     383        /** 
     384         * Whether to suppress errors during the DB bootstrapping. 
     385         * 
     386         * @access private 
     387         * @since 2.5.0 
     388         * @var bool 
     389         */ 
     390        private $suppress_errors = false; 
     391 
     392        /** 
     393         * The last error during query. 
     394         * 
     395         * @see get_last_error() 
     396         * @since 2.5.0 
     397         * @access private 
    460398         * @var string 
    461399         */ 
    462         var $func_call; 
     400        private $last_error = ''; 
    463401 
    464402        /** 
    465          * Connects to the database server and selects a database 
     403         * Amount of queries made 
    466404         * 
    467          * PHP4 compatibility layer for calling the PHP5 constructor. 
     405         * @since 1.2.0 
     406         * @access private 
     407         * @var int 
     408         */ 
     409        private $num_queries = 0; 
     410 
     411        /** 
     412         * Count of rows returned by previous query 
    468413         * 
    469          * @uses wpdb::__construct() Passes parameters and returns result 
     414         * @since 1.2.0 
     415         * @access private 
     416         * @var int 
     417         */ 
     418        private $num_rows = 0; 
     419 
     420        /** 
     421         * Count of affected rows by previous query 
     422         * 
    470423         * @since 0.71 
     424         * @access private 
     425         * @var int 
     426         */ 
     427        private $rows_affected = 0; 
     428 
     429        /** 
     430         * Saved result of the last query made 
    471431         * 
    472          * @param string $dbuser MySQL database user 
    473          * @param string $dbpassword MySQL database password 
    474          * @param string $dbname MySQL database name 
    475          * @param string $dbhost MySQL database host 
     432         * @since 1.2.0 
     433         * @access private 
     434         * @var array 
    476435         */ 
    477         function wpdb( $dbuser, $dbpassword, $dbname, $dbhost ) { 
    478                 return $this->__construct( $dbuser, $dbpassword, $dbname, $dbhost ); 
    479         } 
     436        private $last_query; 
    480437 
    481438        /** 
     439         * Results of the last query made 
     440         * 
     441         * @since 1.0.0 
     442         * @access private 
     443         * @var array|null 
     444         */ 
     445        private $last_result; 
     446 
     447        /** 
     448         * Saved info on the table column 
     449         * 
     450         * @since 1.2.0 
     451         * @access private 
     452         * @var array 
     453         */ 
     454        private $col_info; 
     455 
     456        /** 
     457         * Saved queries that were executed 
     458         * 
     459         * @since 1.5.0 
     460         * @access private 
     461         * @var array 
     462         */ 
     463        private $queries; 
     464 
     465        /** 
     466         * Timer start value, for debugging purposes. 
     467         * 
     468         * @since 1.5.0 
     469         * @access private 
     470         * @var float 
     471         * @see timer_stop() 
     472         * @see timer_start() 
     473         */ 
     474        private $time_start; 
     475 
     476        /** 
     477         * WordPress table prefix 
     478         * 
     479         * You can set this to have multiple WordPress installations 
     480         * in a single database. The second reason is for possible 
     481         * security precautions. 
     482         * 
     483         * @since 0.71 
     484         * @access private 
     485         * @var string 
     486         */ 
     487        private $prefix = ''; 
     488 
     489        /** 
     490         * Whether the database queries are ready to start executing. 
     491         * 
     492         * @since 2.5.0 
     493         * @access private 
     494         * @var bool 
     495         */ 
     496        private $ready = false; 
     497 
     498        /** 
     499         * List of WordPress per-blog tables 
     500         * 
     501         * @since 2.5.0 
     502         * @access private 
     503         * @see wpdb::tables() 
     504         * @var array 
     505         */ 
     506        private $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 
     507                'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' ); 
     508 
     509        /** 
     510         * List of deprecated WordPress tables 
     511         * 
     512         * categories, post2cat, and link2cat were deprecated in 2.3.0, db version 5539 
     513         * 
     514         * @since 2.9.0 
     515         * @access private 
     516         * @see wpdb::tables() 
     517         * @var array 
     518         */ 
     519        private $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 
     520 
     521        /** 
     522         * List of WordPress global tables 
     523         * 
     524         * @since 3.0.0 
     525         * @access private 
     526         * @see wpdb::tables() 
     527         * @var array 
     528         */ 
     529        private $global_tables = array( 'users', 'usermeta' ); 
     530 
     531        /** 
     532         * List of Multisite global tables 
     533         * 
     534         * @since 3.0.0 
     535         * @access private 
     536         * @see wpdb::tables() 
     537         * @var array 
     538         */ 
     539        private $ms_global_tables = array( 'blogs', 'signups', 'site', 'sitemeta', 
     540                'sitecategories', 'registration_log', 'blog_versions' ); 
     541 
     542        /** 
     543         * Database Username 
     544         * 
     545         * @since 2.9.0 
     546         * @access private 
     547         * @var string 
     548         */ 
     549        private $dbuser; 
     550 
     551        /** 
    482552         * Connects to the database server and selects a database 
    483553         * 
    484          * PHP5 style constructor for compatibility with PHP5. Does 
     554         * Does 
    485555         * the actual setting up of the class properties and connection 
    486556         * to the database. 
    487557         * 
    488          * @link http://core.trac.wordpress.org/ticket/3354 
    489558         * @since 2.0.8 
    490559         * 
    491560         * @param string $dbuser MySQL database user 
     
    493562         * @param string $dbname MySQL database name 
    494563         * @param string $dbhost MySQL database host 
    495564         */ 
    496         function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { 
    497                 register_shutdown_function( array( &$this, '__destruct' ) ); 
     565        public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { 
     566                parent::__construct(); 
    498567 
    499                 if ( WP_DEBUG ) 
    500                         $this->show_errors(); 
    501  
    502568                $this->init_charset(); 
    503569 
    504570                $this->dbuser = $dbuser; 
     
    510576        } 
    511577 
    512578        /** 
    513          * PHP5 style destructor and will run when database object is destroyed. 
    514          * 
    515          * @see wpdb::__construct() 
    516          * @since 2.0.8 
    517          * @return bool true 
    518          */ 
    519         function __destruct() { 
    520                 return true; 
    521         } 
    522  
    523         /** 
    524579         * Set $this->charset and $this->collate 
    525580         * 
    526581         * @since 3.1.0 
    527582         */ 
    528         function init_charset() { 
     583        private function init_charset() { 
    529584                if ( function_exists('is_multisite') && is_multisite() ) { 
    530585                        $this->charset = 'utf8'; 
    531586                        if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) 
     
    549604         * @param string   $charset The character set (optional) 
    550605         * @param string   $collate The collation (optional) 
    551606         */ 
    552         function set_charset($dbh, $charset = null, $collate = null) { 
     607        private function set_charset($dbh, $charset = null, $collate = null) { 
    553608                if ( !isset($charset) ) 
    554609                        $charset = $this->charset; 
    555610                if ( !isset($collate) ) 
     
    575630         * @param string $prefix Alphanumeric name for the new prefix. 
    576631         * @return string|WP_Error Old prefix or WP_Error on error 
    577632         */ 
    578         function set_prefix( $prefix, $set_table_names = true ) { 
     633        public function set_prefix( $prefix, $set_table_names = true ) { 
    579634 
    580635                if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) 
    581636                        return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/); 
     
    614669         * @param int $site_id Optional. 
    615670         * @return string previous blog id 
    616671         */ 
    617         function set_blog_id( $blog_id, $site_id = 0 ) { 
     672        public function set_blog_id( $blog_id, $site_id = 0 ) { 
    618673                if ( ! empty( $site_id ) ) 
    619674                        $this->siteid = $site_id; 
    620675 
     
    640695         * @param int $blog_id Optional. 
    641696         * @return string Blog prefix. 
    642697         */ 
    643         function get_blog_prefix( $blog_id = null ) { 
     698        public function get_blog_prefix( $blog_id = null ) { 
    644699                if ( is_multisite() ) { 
    645700                        if ( null === $blog_id ) 
    646701                                $blog_id = $this->blogid; 
     
    681736         * @param int $blog_id Optional. The blog_id to prefix. Defaults to wpdb::$blogid. Used only when prefix is requested. 
    682737         * @return array Table names. When a prefix is requested, the key is the unprefixed table name. 
    683738         */ 
    684         function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { 
     739        public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { 
    685740                switch ( $scope ) { 
    686741                        case 'all' : 
    687742                                $tables = array_merge( $this->global_tables, $this->tables ); 
     
    743798         * @param resource $dbh Optional link identifier. 
    744799         * @return null Always null. 
    745800         */ 
    746         function select( $db, $dbh = null) { 
     801        private function select( $db, $dbh = null) { 
    747802                if ( is_null($dbh) ) 
    748803                        $dbh = $this->dbh; 
    749804 
     
    771826         * @param string $string 
    772827         * @return string 
    773828         */ 
    774         function _weak_escape( $string ) { 
     829        private function _weak_escape( $string ) { 
    775830                return addslashes( $string ); 
    776831        } 
    777832 
     
    786841         * @param  string $string to escape 
    787842         * @return string escaped 
    788843         */ 
    789         function _real_escape( $string ) { 
     844        private function _real_escape( $string ) { 
    790845                if ( $this->dbh && $this->real_escape ) 
    791846                        return mysql_real_escape_string( $string, $this->dbh ); 
    792847                else 
     
    804859         * @param  string|array $data 
    805860         * @return string|array escaped 
    806861         */ 
    807         function _escape( $data ) { 
     862        private function _escape( $data ) { 
    808863                if ( is_array( $data ) ) { 
    809864                        foreach ( (array) $data as $k => $v ) { 
    810865                                if ( is_array($v) ) 
     
    828883         * @param string|array $data to escape 
    829884         * @return string|array escaped as query safe string 
    830885         */ 
    831         function escape( $data ) { 
     886        public function escape( $data ) { 
    832887                if ( is_array( $data ) ) { 
    833888                        foreach ( (array) $data as $k => $v ) { 
    834889                                if ( is_array( $v ) ) 
     
    851906         * @param string $string to escape 
    852907         * @return void 
    853908         */ 
    854         function escape_by_ref( &$string ) { 
     909        public function escape_by_ref( &$string ) { 
    855910                $string = $this->_real_escape( $string ); 
    856911        } 
    857912 
     
    891946         * @return null|false|string Sanitized query string, null if there is no query, false if there is an error and string 
    892947         *      if there was something to prepare 
    893948         */ 
    894         function prepare( $query = null ) { // ( $query, *$args ) 
     949        public function prepare( $query = null ) { // ( $query, *$args ) 
    895950                if ( is_null( $query ) ) 
    896951                        return; 
    897952 
     
    916971         * @param string $str The error to display 
    917972         * @return bool False if the showing of errors is disabled. 
    918973         */ 
    919         function print_error( $str = '' ) { 
     974        private function print_error( $str = '' ) { 
    920975                global $EZSQL_ERROR; 
    921976 
    922977                if ( !$str ) 
     
    9731028         * @param bool $show Whether to show or hide errors 
    9741029         * @return bool Old value for showing errors. 
    9751030         */ 
    976         function show_errors( $show = true ) { 
     1031        public function show_errors( $show = true ) { 
    9771032                $errors = $this->show_errors; 
    9781033                $this->show_errors = $show; 
    9791034                return $errors; 
     
    9891044         * 
    9901045         * @return bool Whether showing of errors was active 
    9911046         */ 
    992         function hide_errors() { 
     1047        public function hide_errors() { 
    9931048                $show = $this->show_errors; 
    9941049                $this->show_errors = false; 
    9951050                return $show; 
     
    10061061         * @param bool $suppress Optional. New value. Defaults to true. 
    10071062         * @return bool Old value 
    10081063         */ 
    1009         function suppress_errors( $suppress = true ) { 
     1064        public function suppress_errors( $suppress = true ) { 
    10101065                $errors = $this->suppress_errors; 
    10111066                $this->suppress_errors = (bool) $suppress; 
    10121067                return $errors; 
     
    10181073         * @since 0.71 
    10191074         * @return void 
    10201075         */ 
    1021         function flush() { 
     1076        private function flush() { 
    10221077                $this->last_result = array(); 
    10231078                $this->col_info    = null; 
    10241079                $this->last_query  = null; 
     
    10291084         * 
    10301085         * @since 3.0.0 
    10311086         */ 
    1032         function db_connect() { 
    1033                 global $db_list, $global_db_list; 
    1034  
     1087        private function db_connect() { 
    10351088                if ( WP_DEBUG ) { 
    10361089                        $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, true ); 
    10371090                } else { 
     
    10751128         * @param string $query Database query 
    10761129         * @return int|false Number of rows affected/selected or false on error 
    10771130         */ 
    1078         function query( $query ) { 
     1131        public function query( $query ) { 
    10791132                if ( ! $this->ready ) 
    10801133                        return false; 
    10811134 
     
    11571210         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    11581211         * @return int|false The number of rows inserted, or false on error. 
    11591212         */ 
    1160         function insert( $table, $data, $format = null ) { 
     1213        public function insert( $table, $data, $format = null ) { 
    11611214                return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' ); 
    11621215        } 
    11631216 
     
    11801233         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    11811234         * @return int|false The number of rows affected, or false on error. 
    11821235         */ 
    1183         function replace( $table, $data, $format = null ) { 
     1236        public function replace( $table, $data, $format = null ) { 
    11841237                return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' ); 
    11851238        } 
    11861239 
     
    12011254         *      A format is one of '%d', '%s' (decimal number, string). If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 
    12021255         * @return int|false The number of rows affected, or false on error. 
    12031256         */ 
    1204         function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) { 
     1257        private function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) { 
    12051258                if ( ! in_array( strtoupper( $type ), array( 'REPLACE', 'INSERT' ) ) ) 
    12061259                        return false; 
    12071260                $formats = $format = (array) $format; 
     
    12411294         * @param array|string $format_where Optional. An array of formats to be mapped to each of the values in $where. If string, that format will be used for all of the items in $where.  A format is one of '%d', '%s' (decimal number, string).  If omitted, all values in $where will be treated as strings. 
    12421295         * @return int|false The number of rows updated, or false on error. 
    12431296         */ 
    1244         function update( $table, $data, $where, $format = null, $where_format = null ) { 
     1297        public function update( $table, $data, $where, $format = null, $where_format = null ) { 
    12451298                if ( ! is_array( $data ) || ! is_array( $where ) ) 
    12461299                        return false; 
    12471300 
     
    12821335         * @since 0.71 
    12831336         * 
    12841337         * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query. 
    1285          * @param int $x Optional. Column of value to return.  Indexed from 0. 
    1286          * @param int $y Optional. Row of value to return.  Indexed from 0. 
     1338         * @param int $column Optional. Column of value to return.  Indexed from 0. 
     1339         * @param int $row Optional. Row of value to return.  Indexed from 0. 
    12871340         * @return string|null Database query result (as string), or null on failure 
    12881341         */ 
    1289         function get_var( $query = null, $x = 0, $y = 0 ) { 
    1290                 $this->func_call = "\$db->get_var(\"$query\", $x, $y)"; 
     1342        public function get_var( $query = null, $column = 0, $row = 0 ) { 
     1343                $this->func_call = "\$db->get_var(\"$query\", $column, $row)"; 
    12911344                if ( $query ) 
    12921345                        $this->query( $query ); 
    12931346 
    12941347                // Extract var out of cached results based x,y vals 
    1295                 if ( !empty( $this->last_result[$y] ) ) { 
    1296                         $values = array_values( get_object_vars( $this->last_result[$y] ) ); 
     1348                if ( !empty( $this->last_result[$row] ) ) { 
     1349                        $values = array_values( get_object_vars( $this->last_result[$row] ) ); 
    12971350                } 
    12981351 
    12991352                // If there is a value return it else return null 
    1300                 return ( isset( $values[$x] ) && $values[$x] !== '' ) ? $values[$x] : null; 
     1353                return ( isset( $values[$column] ) && $values[$column] !== '' ) ? $values[$column] : null; 
    13011354        } 
    13021355 
    13031356        /** 
     
    13101363         * @param string|null $query SQL query. 
    13111364         * @param string $output Optional. one of ARRAY_A | ARRAY_N | OBJECT constants. Return an associative array (column => value, ...), 
    13121365         *      a numerically indexed array (0 => value, ...) or an object ( ->column = value ), respectively. 
    1313          * @param int $y Optional. Row to return. Indexed from 0. 
     1366         * @param int $row Optional. Row to return. Indexed from 0. 
    13141367         * @return mixed Database query result in format specifed by $output or null on failure 
    13151368         */ 
    1316         function get_row( $query = null, $output = OBJECT, $y = 0 ) { 
    1317                 $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; 
     1369        public function get_row( $query = null, $output = null, $row = 0 ) { 
     1370                $this->func_call = "\$db->get_row(\"$query\",$output,$row)"; 
    13181371                if ( $query ) 
    13191372                        $this->query( $query ); 
    13201373                else 
    13211374                        return null; 
    13221375 
    1323                 if ( !isset( $this->last_result[$y] ) ) 
     1376                if ( !isset( $this->last_result[$row] ) ) 
    13241377                        return null; 
    13251378 
    1326                 if ( $output == OBJECT ) { 
    1327                         return $this->last_result[$y] ? $this->last_result[$y] : null; 
     1379                if ( null === $output || $output == OBJECT ) { 
     1380                        return $this->last_result[$row] ? $this->last_result[$row] : null; 
    13281381                } elseif ( $output == ARRAY_A ) { 
    1329                         return $this->last_result[$y] ? get_object_vars( $this->last_result[$y] ) : null; 
     1382                        return $this->last_result[$row] ? get_object_vars( $this->last_result[$row] ) : null; 
    13301383                } elseif ( $output == ARRAY_N ) { 
    1331                         return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null; 
     1384                        return $this->last_result[$row] ? array_values( get_object_vars( $this->last_result[$row] ) ) : null; 
    13321385                } else { 
    13331386                        $this->print_error(/*WP_I18N_DB_GETROW_ERROR*/" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"/*/WP_I18N_DB_GETROW_ERROR*/); 
    13341387                } 
     
    13441397         * @since 0.71 
    13451398         * 
    13461399         * @param string|null $query Optional. SQL query. Defaults to previous query. 
    1347          * @param int $x Optional. Column to return. Indexed from 0. 
     1400         * @param int $column Optional. Column to return. Indexed from 0. 
    13481401         * @return array Database query result. Array indexed from 0 by SQL result row number. 
    13491402         */ 
    1350         function get_col( $query = null , $x = 0 ) { 
     1403        public function get_col( $query = null , $column = 0 ) { 
    13511404                if ( $query ) 
    13521405                        $this->query( $query ); 
    13531406 
    13541407                $new_array = array(); 
    13551408                // Extract the column values 
    13561409                for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) { 
    1357                         $new_array[$i] = $this->get_var( null, $x, $i ); 
     1410                        $new_array[$i] = $this->get_var( null, $column, $i ); 
    13581411                } 
    13591412                return $new_array; 
    13601413        } 
     
    13721425         *      With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value.  Duplicate keys are discarded. 
    13731426         * @return mixed Database query results 
    13741427         */ 
    1375         function get_results( $query = null, $output = OBJECT ) { 
     1428        public function get_results( $query = null, $output = null ) { 
    13761429                $this->func_call = "\$db->get_results(\"$query\", $output)"; 
    13771430 
    13781431                if ( $query ) 
     
    13811434                        return null; 
    13821435 
    13831436                $new_array = array(); 
    1384                 if ( $output == OBJECT ) { 
     1437                if ( $output === null || $output == OBJECT ) { 
    13851438                        // Return an integer-keyed array of row objects 
    13861439                        return $this->last_result; 
    13871440                } elseif ( $output == OBJECT_K ) { 
     
    14201473         * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type 
    14211474         * @return mixed Column Results 
    14221475         */ 
    1423         function get_col_info( $info_type = 'name', $col_offset = -1 ) { 
     1476        public function get_col_info( $info_type = 'name', $col_offset = null ) { 
    14241477                if ( $this->col_info ) { 
    1425                         if ( $col_offset == -1 ) { 
     1478                        if ( $col_offset === null ) { 
    14261479                                $i = 0; 
    14271480                                $new_array = array(); 
    14281481                                foreach( (array) $this->col_info as $col ) { 
     
    14431496         * 
    14441497         * @return true 
    14451498         */ 
    1446         function timer_start() { 
    1447                 $mtime            = explode( ' ', microtime() ); 
    1448                 $this->time_start = $mtime[1] + $mtime[0]; 
     1499        private function timer_start() { 
     1500                $this->time_start = microtime( true ); 
    14491501                return true; 
    14501502        } 
    14511503 
     
    14561508         * 
    14571509         * @return int Total time spent on the query, in milliseconds 
    14581510         */ 
    1459         function timer_stop() { 
    1460                 $mtime      = explode( ' ', microtime() ); 
    1461                 $time_end   = $mtime[1] + $mtime[0]; 
    1462                 $time_total = $time_end - $this->time_start; 
    1463                 return $time_total; 
     1511        private function timer_stop() { 
     1512                $time_total = microtime( true ) - $this->time_start; 
     1513                return (int) $time_total; 
    14641514        } 
    14651515 
    14661516        /** 
     
    14741524         * @param string $error_code Optional. A Computer readable string to identify the error. 
    14751525         * @return false|void 
    14761526         */ 
    1477         function bail( $message, $error_code = '500' ) { 
     1527        private function bail( $message, $error_code = '500' ) { 
    14781528                if ( !$this->show_errors ) { 
    14791529                        if ( class_exists( 'WP_Error' ) ) 
    14801530                                $this->error = new WP_Error($error_code, $message); 
     
    14941544         * 
    14951545         * @return WP_Error 
    14961546         */ 
    1497         function check_database_version() { 
     1547        public function check_database_version() { 
    14981548                global $wp_version, $required_mysql_version; 
    14991549                // Make sure the server has the required MySQL version 
    15001550                if ( version_compare($this->db_version(), $required_mysql_version, '<') ) 
     
    15021552        } 
    15031553 
    15041554        /** 
    1505          * Whether the database supports collation. 
    1506          * 
    1507          * Called when WordPress is generating the table scheme. 
    1508          * 
    1509          * @since 2.5.0 
    1510          * 
    1511          * @return bool True if collation is supported, false if version does not 
    1512          */ 
    1513         function supports_collation() { 
    1514                 return $this->has_cap( 'collation' ); 
    1515         } 
    1516  
    1517         /** 
    15181555         * Determine if a database supports a particular feature 
    15191556         * 
    15201557         * @since 2.7.0 
    15211558         * @see   wpdb::db_version() 
    15221559         * 
    1523          * @param string $db_cap the feature 
     1560         * @param string $feature the database capabilitiy feature 
    15241561         * @return bool 
    15251562         */ 
    1526         function has_cap( $db_cap ) { 
     1563        public function has_cap( $feature ) { 
    15271564                $version = $this->db_version(); 
    15281565 
    1529                 switch ( strtolower( $db_cap ) ) { 
     1566                switch ( strtolower( $feature ) ) { 
    15301567                        case 'collation' :    // @since 2.5.0 
    15311568                        case 'group_concat' : // @since 2.7 
    15321569                        case 'subqueries' :   // @since 2.7 
     
    15481585         * 
    15491586         * @return string The name of the calling function 
    15501587         */ 
    1551         function get_caller() { 
     1588        private function get_caller() { 
    15521589                $trace  = array_reverse( debug_backtrace() ); 
    15531590                $caller = array(); 
    15541591 
     
    15681605         * 
    15691606         * @return false|string false on failure, version number on success 
    15701607         */ 
    1571         function db_version() { 
     1608        public function db_version() { 
    15721609                return preg_replace( '/[^0-9.].*/', '', mysql_get_server_info( $this->dbh ) ); 
    15731610        } 
    15741611}