diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 81ed9bc130..e7f2d8a264 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -7624,8 +7624,6 @@ function get_dirsize( $directory, $max_execution_time = null ) { * @return int|false|null Size in bytes if a valid directory. False if not. Null if timeout. */ function recurse_dirsize( $directory, $exclude = null, $max_execution_time = null, &$directory_cache = null ) { - $size = 0; - $directory = untrailingslashit( $directory ); $cache_path = untrailingslashit( str_replace( ABSPATH, '', $directory ) ); @@ -7674,11 +7672,13 @@ function recurse_dirsize( $directory, $exclude = null, $max_execution_time = nul * * @since 5.6.0 * - * @param int|false $space_used The amount of used space, in bytes. Default 0. + * @param int|false $space_used The amount of used space, in bytes. Default false. */ - $size = apply_filters( 'calculate_current_dirsize', $size, $directory, $exclude, $max_execution_time, $directory_cache ); + $size = apply_filters( 'pre_recurse_dirsize', false, $directory, $exclude, $max_execution_time, $directory_cache ); + + if ( false === $size ) { + $size = 0; - if ( 0 === $size ) { $handle = opendir( $directory ); if ( $handle ) { while ( ( $file = readdir( $handle ) ) !== false ) { @@ -7703,6 +7703,7 @@ function recurse_dirsize( $directory, $exclude = null, $max_execution_time = nul closedir( $handle ); } } + $directory_cache[ $cache_path ] = $size; // Only write the transient on the top level call and not on recursive calls. diff --git a/src/wp-includes/ms-functions.php b/src/wp-includes/ms-functions.php index 19d644d26e..13704115f2 100644 --- a/src/wp-includes/ms-functions.php +++ b/src/wp-includes/ms-functions.php @@ -2629,6 +2629,7 @@ function get_space_used() { * @param int|false $space_used The amount of used space, in megabytes. Default false. */ $space_used = apply_filters( 'pre_get_space_used', false ); + if ( false === $space_used ) { $upload_dir = wp_upload_dir(); $space_used = get_dirsize( $upload_dir['basedir'] ) / MB_IN_BYTES; diff --git a/tests/phpunit/tests/multisite/cleanDirsizeCache.php b/tests/phpunit/tests/multisite/cleanDirsizeCache.php index e30f50a3bc..975889ba2e 100644 --- a/tests/phpunit/tests/multisite/cleanDirsizeCache.php +++ b/tests/phpunit/tests/multisite/cleanDirsizeCache.php @@ -219,16 +219,16 @@ if ( is_multisite() ) : * * @ticket 19879 */ - function test_recurse_dirsize_calculate_current_dirsize_filter() { - add_filter( 'calculate_current_dirsize', array( $this, '_filter_calculate_current_dirsize' ) ); + function test_pre_recurse_dirsize_filter() { + add_filter( 'pre_recurse_dirsize', array( $this, '_filter_pre_recurse_dirsize' ) ); $upload_dir = wp_upload_dir(); $this->assertSame( 1042, recurse_dirsize( $upload_dir['path'] ) ); - remove_filter( 'calculate_current_dirsize', array( $this, '_filter_calculate_current_dirsize' ) ); + remove_filter( 'pre_recurse_dirsize', array( $this, '_filter_pre_recurse_dirsize' ) ); } - function _filter_calculate_current_dirsize() { + function _filter_pre_recurse_dirsize() { return 1042; }