// Check to see which files don't really need updating - only available for 3.7 and higher
if ( function_exists( 'get_core_checksums' ) ) {
+ // Find the local version of the working directory
+ $working_dir_local = WP_CONTENT_DIR . '/upgrade/' . basename( $from ) . $distro;
+
$checksums = get_core_checksums( $wp_version, isset( $wp_local_package ) ? $wp_local_package : 'en_US' );
if ( is_array( $checksums ) && isset( $checksums[ $wp_version ] ) )
$checksums = $checksums[ $wp_version ]; // Compat code for 3.7-beta2
continue;
if ( ! file_exists( ABSPATH . $file ) )
continue;
+ if ( ! file_exists( $working_dir_local . $file ) )
+ continue;
if ( md5_file( ABSPATH . $file ) === $checksum )
$skip[] = $file;
else
$failed = array();
if ( isset( $checksums ) && is_array( $checksums ) ) {
foreach ( $checksums as $file => $checksum ) {
- if ( 0 === strpos( $file, 'wp-content' ) )
+ if ( 'wp-content' == substr( $file, 0, 10 ) )
+ continue;
+ if ( ! file_exists( $working_dir_local . $file ) )
continue;
-
if ( file_exists( ABSPATH . $file ) && md5_file( ABSPATH . $file ) == $checksum )
$skip[] = $file;
else
// Some files didn't copy properly
if ( ! empty( $failed ) ) {
$total_size = 0;
- // Find the local version of the working directory
- $working_dir_local = WP_CONTENT_DIR . '/upgrade/' . basename( $from ) . $distro;
foreach ( $failed as $file ) {
if ( file_exists( $working_dir_local . $file ) )
$total_size += filesize( $working_dir_local . $file );
$db_upgrade_url = admin_url('upgrade.php?step=upgrade_db');
wp_remote_post($db_upgrade_url, array('timeout' => 60));
+ // Clear the cache to prevent an update_option() from saving a stale db_version to the cache
+ wp_cache_flush();
+ // (Not all cache backends listen to 'flush')
+ wp_cache_delete( 'alloptions', 'options' );
+
// Remove working directory
$wp_filesystem->delete($from, true);