X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/899389d1e4043331309c0433543419258b230b60..refs/tags/wordpress-4.2.3:/wp-admin/includes/upgrade.php diff --git a/wp-admin/includes/upgrade.php b/wp-admin/includes/upgrade.php index 495d5b43..cb2188b4 100644 --- a/wp-admin/includes/upgrade.php +++ b/wp-admin/includes/upgrade.php @@ -524,14 +524,11 @@ function upgrade_all() { if ( $wp_current_db_version < 29630 ) upgrade_400(); - // Don't harsh my mellow. upgrade_422() must be called before - // upgrade_420() to catch bad comments prior to any auto-expansion of - // MySQL column widths. if ( $wp_current_db_version < 31534 ) upgrade_422(); - if ( $wp_current_db_version < 31351 ) - upgrade_420(); + if ( $wp_current_db_version < 31536 ) + upgrade_423(); maybe_disable_link_manager(); @@ -1426,19 +1423,6 @@ function upgrade_400() { * @since 4.2.0 */ function upgrade_420() { - global $wp_current_db_version, $wpdb; - - if ( $wp_current_db_version < 31351 && $wpdb->charset === 'utf8mb4' ) { - if ( is_multisite() ) { - $tables = $wpdb->tables( 'blog' ); - } else { - $tables = $wpdb->tables( 'all' ); - } - - foreach ( $tables as $table ) { - maybe_convert_table_to_utf8mb4( $table ); - } - } } /** @@ -1497,6 +1481,31 @@ function upgrade_422() { } } +/** + * Execute changes made in WordPress 4.2.0. + * + * @since 4.2.3 + */ +function upgrade_423() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 31536 && $wpdb->charset === 'utf8mb4' ) { + if ( is_multisite() ) { + $tables = $wpdb->tables( 'blog' ); + } else { + $tables = $wpdb->tables( 'all' ); + if ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $global_tables = $wpdb->tables( 'global' ); + $tables = array_diff_assoc( $tables, $global_tables ); + } + } + + foreach ( $tables as $table ) { + maybe_convert_table_to_utf8mb4( $table ); + } + } +} + /** * Executes network-level upgrade routines. * @@ -1596,7 +1605,7 @@ function upgrade_network() { // 4.2 if ( $wp_current_db_version < 31351 && $wpdb->charset === 'utf8mb4' ) { - if ( ! ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) && DO_NOT_UPGRADE_GLOBAL_TABLES ) ) { + if ( ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { $wpdb->query( "ALTER TABLE $wpdb->usermeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" ); $wpdb->query( "ALTER TABLE $wpdb->site DROP INDEX domain, ADD INDEX domain(domain(140),path(51))" ); $wpdb->query( "ALTER TABLE $wpdb->sitemeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" ); @@ -1612,7 +1621,7 @@ function upgrade_network() { // 4.2.2 if ( $wp_current_db_version < 31535 && 'utf8mb4' === $wpdb->charset ) { - if ( ! ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) && DO_NOT_UPGRADE_GLOBAL_TABLES ) ) { + if ( ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { $upgrade = false; $indexes = $wpdb->get_results( "SHOW INDEXES FROM $wpdb->signups" ); foreach( $indexes as $index ) { @@ -1627,6 +1636,17 @@ function upgrade_network() { } } } + + // 4.2.3 + if ( $wp_current_db_version < 31536 && $wpdb->charset === 'utf8mb4' ) { + if ( ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { + $tables = $wpdb->tables( 'global' ); + + foreach ( $tables as $table ) { + maybe_convert_table_to_utf8mb4( $table ); + } + } + } } // @@ -1759,6 +1779,17 @@ function maybe_convert_table_to_utf8mb4( $table ) { } } + $table_details = $wpdb->get_row( "SHOW TABLE STATUS LIKE '$table'" ); + if ( ! $table_details ) { + return false; + } + + list( $table_charset ) = explode( '_', $table_details->Collation ); + $table_charset = strtolower( $table_charset ); + if ( 'utf8mb4' === $table_charset ) { + return true; + } + return $wpdb->query( "ALTER TABLE $table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" ); } @@ -2446,14 +2477,9 @@ function pre_schema_upgrade() { } } - if ( $wp_current_db_version < 30133 ) { - // dbDelta() can recreate but can't drop the index. - $wpdb->query( "ALTER TABLE $wpdb->terms DROP INDEX slug" ); - } - // Upgrade versions prior to 4.2. if ( $wp_current_db_version < 31351 ) { - if ( ! is_multisite() ) { + if ( ! is_multisite() && ! defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) { $wpdb->query( "ALTER TABLE $wpdb->usermeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" ); } $wpdb->query( "ALTER TABLE $wpdb->terms DROP INDEX slug, ADD INDEX slug(slug(191))" );