WordPress.org

Make WordPress Core

Changeset 21387


Ignore:
Timestamp:
08/01/2012 01:52:06 PM (7 years ago)
Author:
westi
Message:

Multisite: Rework the upload space usage tracking code so as to be fully pluggable.

  • Moves some admin only functions into wp-admin/includes/ms.php from wp-includes/ms-functions.php
  • Reworked the variable naming to be more in line with the Coding Standards
  • Introduced a new get_space_used() function instead of calculating it in multiple places.

Fixes #21181 props dllh and jkudish for inital work on this.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/dashboard.php

    r21364 r21387  
    10981098
    10991099    $quota = get_space_allowed();
    1100     $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
     1100    $used = get_space_used();
    11011101
    11021102    if ( $used > $quota )
  • trunk/wp-admin/includes/ms.php

    r20952 r21387  
    2626        return $file;
    2727
    28     $space_allowed = 1048576 * get_space_allowed();
    29     $space_used = get_dirsize( BLOGUPLOADDIR );
    30     $space_left = $space_allowed - $space_used;
     28    $space_left = get_upload_space_available();
     29
    3130    $file_size = filesize( $file['tmp_name'] );
    3231    if ( $space_left < $file_size )
     
    311310        return $space_allowed;
    312311
    313     $dir_name = trailingslashit( BLOGUPLOADDIR );
    314     if ( !( is_dir( $dir_name) && is_readable( $dir_name ) ) )
    315         return $space_allowed;
    316 
    317     $dir = dir( $dir_name );
    318     $size = 0;
    319 
    320     while ( $file = $dir->read() ) {
    321         if ( $file != '.' && $file != '..' ) {
    322             if ( is_dir( $dir_name . $file) ) {
    323                 $size += get_dirsize( $dir_name . $file );
    324             } else {
    325                 $size += filesize( $dir_name . $file );
    326             }
    327         }
    328     }
    329     $dir->close();
    330 
    331     if ( ( $space_allowed - $size ) <= 0 )
     312    $space_used = get_space_used() * 1024 * 1024;
     313
     314    if ( ( $space_allowed - $space_used ) <= 0 )
    332315        return 0;
    333316
    334     return $space_allowed - $size;
     317    return $space_allowed - $space_used;
     318}
     319
     320/**
     321 * Check whether a blog has used its allotted upload space.
     322 *
     323 * @since MU
     324 *
     325 * @param bool $echo Optional. If $echo is set and the quota is exceeded, a warning message is echoed. Default is true.
     326 * @return int
     327 */
     328function upload_is_user_over_quota( $echo = true ) {
     329    if ( get_site_option( 'upload_space_check_disabled' ) )
     330        return false;
     331
     332    $space_allowed = get_space_allowed();
     333    if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) )
     334        $space_allowed = 10;// Default space allowed is 10 MB
     335
     336    $space_used = get_space_used();
     337
     338    if ( ($space_allowed - $space_used ) < 0 ) {
     339        if ( $echo )
     340            _e( 'Sorry, you have used your space allocation. Please delete some files to upload more files.' );
     341        return true;
     342    } else {
     343        return false;
     344    }
     345}
     346
     347function get_space_used() {
     348    // Allow for an alternative way of tracking storage space used
     349    $space_used = apply_filters( 'pre_get_space_used', false );
     350    if ( false === $space_used )
     351        $space_used = get_dirsize( BLOGUPLOADDIR );
     352
     353    return $space_used;
    335354}
    336355
     
    353372
    354373function display_space_usage() {
    355     $space = get_space_allowed();
    356     $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
    357 
    358     $percentused = ( $used / $space ) * 100;
    359 
    360     if ( $space > 1000 ) {
    361         $space = number_format( $space / 1024 );
     374    $space_allowed = get_space_allowed();
     375    $space_used = get_space_used();
     376
     377    $percent_used = ( $space_used / $space_allowed ) * 100;
     378
     379    if ( $space_allowed > 1000 ) {
     380        $space = number_format( $space_allowed / 1024 );
    362381        /* translators: Gigabytes */
    363382        $space .= __( 'GB' );
    364383    } else {
     384        $space = number_format( $space_allowed );
    365385        /* translators: Megabytes */
    366386        $space .= __( 'MB' );
    367387    }
    368388    ?>
    369     <strong><?php printf( __( 'Used: %1s%% of %2s' ), number_format( $percentused ), $space ); ?></strong>
     389    <strong><?php printf( __( 'Used: %1s%% of %2s' ), number_format( $percent_used ), $space ); ?></strong>
    370390    <?php
     391}
     392
     393/**
     394 * Get the remaining upload space for this blog.
     395 *
     396 * @since MU
     397 * @uses upload_is_user_over_quota()
     398 * @uses get_space_allowed()
     399 * @uses get_upload_space_available()
     400 *
     401 * @param int $size Current max size in bytes
     402 * @return int Max size in bytes
     403 */
     404function fix_import_form_size( $size ) {
     405    if ( upload_is_user_over_quota( false ) == true )
     406        return 0;
     407
     408    $available = get_upload_space_available();
     409    return min( $size, $available);
    371410}
    372411
  • trunk/wp-includes/ms-functions.php

    r21237 r21387  
    14601460
    14611461/**
    1462  * Check whether a blog has used its allotted upload space.
    1463  *
    1464  * @since MU
    1465  * @uses get_dirsize()
    1466  *
    1467  * @param bool $echo Optional. If $echo is set and the quota is exceeded, a warning message is echoed. Default is true.
    1468  * @return int
    1469  */
    1470 function upload_is_user_over_quota( $echo = true ) {
    1471     if ( get_site_option( 'upload_space_check_disabled' ) )
    1472         return false;
    1473 
    1474     $spaceAllowed = get_space_allowed();
    1475     if ( empty( $spaceAllowed ) || !is_numeric( $spaceAllowed ) )
    1476         $spaceAllowed = 10; // Default space allowed is 10 MB
    1477 
    1478     $size = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024;
    1479 
    1480     if ( ($spaceAllowed-$size) < 0 ) {
    1481         if ( $echo )
    1482             _e( 'Sorry, you have used your space allocation. Please delete some files to upload more files.' ); // No space left
    1483         return true;
    1484     } else {
    1485         return false;
    1486     }
    1487 }
    1488 
    1489 /**
    14901462 * Check an array of MIME types against a whitelist.
    14911463 *
     
    15391511    $user = new WP_User( (int) $user_id );
    15401512    $wpdb->insert( $wpdb->registration_log, array('email' => $user->user_email, 'IP' => preg_replace( '/[^0-9., ]/', '',$_SERVER['REMOTE_ADDR'] ), 'blog_id' => $blog_id, 'date_registered' => current_time('mysql')) );
    1541 }
    1542 
    1543 /**
    1544  * Get the remaining upload space for this blog.
    1545  *
    1546  * @since MU
    1547  * @uses upload_is_user_over_quota()
    1548  * @uses get_space_allowed()
    1549  * @uses get_dirsize()
    1550  *
    1551  * @param int $size
    1552  * @return int
    1553  */
    1554 function fix_import_form_size( $size ) {
    1555     if ( upload_is_user_over_quota( false ) == true )
    1556         return 0;
    1557 
    1558     $spaceAllowed = 1024 * 1024 * get_space_allowed();
    1559     $dirsize = get_dirsize( BLOGUPLOADDIR );
    1560     if ( $size > $spaceAllowed - $dirsize )
    1561         return $spaceAllowed - $dirsize; // remaining space
    1562     else
    1563         return $size; // default
    15641513}
    15651514
Note: See TracChangeset for help on using the changeset viewer.