From fcf1696de4ff140fcc154b8305320a6ba676c47b Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Tue, 25 Oct 2011 05:29:28 +0000 Subject: [PATCH] Introduce ->mysql to allow drop-ins to declare themselves as MySQL and therefore allow minimum version checks to still apply. fixes #18176. git-svn-id: https://develop.svn.wordpress.org/trunk@19060 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-admin/includes/update-core.php | 5 ++++- wp-admin/update-core.php | 8 ++++++-- wp-admin/upgrade.php | 5 ++++- wp-includes/wp-db.php | 17 +++++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/wp-admin/includes/update-core.php b/wp-admin/includes/update-core.php index 911e750bb8..41aeb71485 100644 --- a/wp-admin/includes/update-core.php +++ b/wp-admin/includes/update-core.php @@ -337,7 +337,10 @@ function update_core($from, $to) { $required_mysql_version = '5.0'; $wp_version = '3.3'; $php_compat = version_compare( $php_version, $required_php_version, '>=' ); - $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $this->is_mysql ) ) + $mysql_compat = true; + else + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ); if ( !$mysql_compat || !$php_compat ) $wp_filesystem->delete($from, true); diff --git a/wp-admin/update-core.php b/wp-admin/update-core.php index 4f5efcc291..cf2c727ef9 100644 --- a/wp-admin/update-core.php +++ b/wp-admin/update-core.php @@ -44,8 +44,12 @@ function list_core_update( $update ) { $submit = __('Re-install Now'); $form_action = 'update-core.php?action=do-core-reinstall'; } else { - $php_compat = version_compare( $php_version, $update->php_version, '>=' ); - $mysql_compat = version_compare( $mysql_version, $update->mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + $php_compat = version_compare( $php_version, $update->php_version, '>=' ); + if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; + else + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ); + if ( !$mysql_compat && !$php_compat ) $message = sprintf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $update->current, $update->php_version, $update->mysql_version, $php_version, $mysql_version ); elseif ( !$php_compat ) diff --git a/wp-admin/upgrade.php b/wp-admin/upgrade.php index 84e251baec..4a2a0f4258 100644 --- a/wp-admin/upgrade.php +++ b/wp-admin/upgrade.php @@ -38,7 +38,10 @@ $step = (int) $step; $php_version = phpversion(); $mysql_version = $wpdb->db_version(); $php_compat = version_compare( $php_version, $required_php_version, '>=' ); -$mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); +if ( file_exists( WP_CONTENT_DIR . '/db.php' ) && empty( $wpdb->is_mysql ) ) + $mysql_compat = true; +else + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ); @header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); ?> diff --git a/wp-includes/wp-db.php b/wp-includes/wp-db.php index ebf6a64139..12ce58fd4d 100644 --- a/wp-includes/wp-db.php +++ b/wp-includes/wp-db.php @@ -460,6 +460,20 @@ class wpdb { */ var $func_call; + /** + * Whether MySQL is used as the database engine. + * + * Set in WPDB::db_connect() to true, by default. This is used when checking + * against the required MySQL version for WordPress. Normally, a replacement + * database drop-in (db.php) will skip these checks, but setting this to true + * will force the checks to occur. + * + * @since 3.3.0 + * @access public + * @var bool + */ + public $is_mysql = null; + /** * Connects to the database server and selects a database * @@ -1015,6 +1029,9 @@ class wpdb { * @since 3.0.0 */ function db_connect() { + + $this->is_mysql = true; + if ( WP_DEBUG ) { $this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, true ); } else {