Ticket #30202: 30202.1.diff
File 30202.1.diff, 3.2 KB (added by , 10 years ago) |
---|
-
src/wp-includes/ms-functions.php
1681 1681 * @since MU 1682 1682 * 1683 1683 * @param string $directory 1684 * @param string $exclude Optional. Directory to exclude from the total. 1684 1685 * @return int 1685 1686 */ 1686 function get_dirsize( $directory ) { 1687 $dirsize = get_transient( 'dirsize_cache' ); 1688 if ( is_array( $dirsize ) && isset( $dirsize[ $directory ][ 'size' ] ) ) 1687 function get_dirsize( $directory, $exclude = null ) { 1688 1689 // Don't get cache for calls with excludes unless it's the main site 1690 if ( ! is_null( $exclude ) || ( is_main_site() && '/sites' === $exclude ) ) { 1691 $dirsize = get_transient( 'dirsize_cache' ); 1692 } else { 1693 $dirsize = false; 1694 } 1695 1696 if ( is_array( $dirsize ) && isset( $dirsize[ $directory ][ 'size' ] ) ) { 1689 1697 return $dirsize[ $directory ][ 'size' ]; 1698 } 1690 1699 1691 if ( false == is_array( $dirsize ) ) 1700 if ( false == is_array( $dirsize ) ) { 1692 1701 $dirsize = array(); 1702 } 1693 1703 1694 $dirsize[ $directory ][ 'size' ] = recurse_dirsize( $directory );1704 $dirsize[ $directory ][ 'size' ] = recurse_dirsize( $directory, $exclude ); 1695 1705 1696 set_transient( 'dirsize_cache', $dirsize, HOUR_IN_SECONDS ); 1706 // Don't cache calls with excludes unless it's the main site 1707 if ( ! is_null( $exclude ) || ( is_main_site() && '/sites' === $exclude ) ) { 1708 set_transient( 'dirsize_cache', $dirsize, HOUR_IN_SECONDS ); 1709 } 1697 1710 return $dirsize[ $directory ][ 'size' ]; 1698 1711 } 1699 1712 … … 1706 1719 * @since MU 1707 1720 * 1708 1721 * @param string $directory 1722 * @param string $exclude Optional. Directory to exclude from the total. 1709 1723 * @return int|false 1710 1724 */ 1711 function recurse_dirsize( $directory ) {1725 function recurse_dirsize( $directory, $exclude = null ) { 1712 1726 $size = 0; 1713 1727 1714 1728 $directory = untrailingslashit( $directory ); 1715 1729 1716 if ( ! file_exists($directory) || !is_dir( $directory ) || !is_readable( $directory ) )1730 if ( ! file_exists( $directory ) || ! is_dir( $directory ) || ! is_readable( $directory ) || $directory === $exclude ) { 1717 1731 return false; 1732 } 1718 1733 1719 if ( $handle = opendir($directory)) {1720 while (($file = readdir($handle)) !== false) {1734 if ( $handle = opendir( $directory ) ) { 1735 while ( ( $file = readdir( $handle ) ) !== false ) { 1721 1736 $path = $directory.'/'.$file; 1722 if ( $file != '.' && $file != '..') {1723 if ( is_file($path)) {1724 $size += filesize( $path);1725 } elseif ( is_dir($path)) {1726 $handlesize = recurse_dirsize( $path);1727 if ( $handlesize > 0)1737 if ( $file != '.' && $file != '..' ) { 1738 if ( is_file( $path ) ) { 1739 $size += filesize( $path ); 1740 } elseif ( is_dir( $path ) ) { 1741 $handlesize = recurse_dirsize( $path, $exclude ); 1742 if ( $handlesize > 0 ) { 1728 1743 $size += $handlesize; 1744 } 1729 1745 } 1730 1746 } 1731 1747 } 1732 closedir( $handle);1748 closedir( $handle ); 1733 1749 } 1734 1750 return $size; 1735 1751 } … … 2295 2311 $space_used = apply_filters( 'pre_get_space_used', false ); 2296 2312 if ( false === $space_used ) { 2297 2313 $upload_dir = wp_upload_dir(); 2298 $space_used = get_dirsize( $upload_dir['basedir'] ) / 1024 / 1024; 2314 $exclude = ( is_main_site() ) ? $upload_dir['basedir'] . '/sites' : null; 2315 $space_used = get_dirsize( $upload_dir['basedir'], $exclude ) / 1024 / 1024; 2299 2316 } 2300 2317 2301 2318 return $space_used;