When checking filesystem permissions for core updates, only check the permissions of the files which we need to alter. Props nacin for initial patch. Fixes #25771 for trunk

Built from https://develop.svn.wordpress.org/trunk@26014


git-svn-id: http://core.svn.wordpress.org/trunk@25945 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Dion Hulse 2013-11-05 05:43:09 +00:00
parent 21a3164b3b
commit b511346319
1 changed files with 8 additions and 4 deletions

View File

@ -697,6 +697,9 @@ function update_core($from, $to) {
// 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
@ -706,6 +709,8 @@ function update_core($from, $to) {
continue;
if ( ! file_exists( ABSPATH . $file ) )
continue;
if ( ! file_exists( $working_dir_local . $file ) )
continue;
if ( md5_file( ABSPATH . $file ) === $checksum )
$skip[] = $file;
else
@ -752,9 +757,10 @@ function update_core($from, $to) {
$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
@ -765,8 +771,6 @@ function update_core($from, $to) {
// 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 );