Make WordPress Core

Changeset 52955


Ignore:
Timestamp:
03/18/2022 08:46:17 PM (2 years ago)
Author:
johnbillion
Message:

Formatting: Add support for formatting sizes as PB, EB, ZB, and YB.

Props henry.wright, Presskopp

Fixes #40875

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/default-constants.php

    r52610 r52955  
    2323     *
    2424     * @since 4.4.0
     25     * @since 6.0.0 `PB_IN_BYTES`, `EB_IN_BYTES`, `ZB_IN_BYTES`, and `YB_IN_BYTES` were added.
    2526     */
    2627    define( 'KB_IN_BYTES', 1024 );
     
    2829    define( 'GB_IN_BYTES', 1024 * MB_IN_BYTES );
    2930    define( 'TB_IN_BYTES', 1024 * GB_IN_BYTES );
     31    define( 'PB_IN_BYTES', 1024 * TB_IN_BYTES );
     32    define( 'EB_IN_BYTES', 1024 * PB_IN_BYTES );
     33    define( 'ZB_IN_BYTES', 1024 * EB_IN_BYTES );
     34    define( 'YB_IN_BYTES', 1024 * ZB_IN_BYTES );
    3035    /**#@-*/
    3136
  • trunk/src/wp-includes/functions.php

    r52933 r52955  
    442442
    443443/**
    444  * Convert number of bytes largest unit bytes will fit into.
     444 * Converts a number of bytes to the largest unit the bytes will fit into.
    445445 *
    446446 * It is easier to read 1 KB than 1024 bytes and 1 MB than 1048576 bytes. Converts
    447447 * number of bytes to human readable number by taking the number of that unit
    448  * that the bytes will go into it. Supports TB value.
     448 * that the bytes will go into it. Supports YB value.
    449449 *
    450450 * Please note that integers in PHP are limited to 32 bits, unless they are on
     
    456456 *
    457457 * @since 2.3.0
     458 * @since 6.0.0 Support for PB, EB, ZB, and YB was added.
    458459 *
    459460 * @param int|string $bytes    Number of bytes. Note max integer size for integers.
     
    463464function size_format( $bytes, $decimals = 0 ) {
    464465    $quant = array(
     466        /* translators: Unit symbol for yottabyte. */
     467        _x( 'YB', 'unit symbol' ) => YB_IN_BYTES,
     468        /* translators: Unit symbol for zettabyte. */
     469        _x( 'ZB', 'unit symbol' ) => ZB_IN_BYTES,
     470        /* translators: Unit symbol for exabyte. */
     471        _x( 'EB', 'unit symbol' ) => EB_IN_BYTES,
     472        /* translators: Unit symbol for petabyte. */
     473        _x( 'PB', 'unit symbol' ) => PB_IN_BYTES,
    465474        /* translators: Unit symbol for terabyte. */
    466475        _x( 'TB', 'unit symbol' ) => TB_IN_BYTES,
  • trunk/tests/phpunit/tests/functions/sizeFormat.php

    r49006 r52955  
    44 * Tests for size_format()
    55 *
     6 * @ticket 22405
    67 * @ticket 36635
     8 * @ticket 40875
    79 *
    810 * @group functions.php
     
    1315    public function _data_size_format() {
    1416        return array(
     17            // Invalid values
    1518            array( array(), 0, false ),
    1619            array( 'baba', 0, false ),
     
    1821            array( '-1', 0, false ),
    1922            array( -1, 0, false ),
     23            // Bytes
    2024            array( 0, 0, '0 B' ),
    2125            array( 1, 0, '1 B' ),
    2226            array( 1023, 0, '1,023 B' ),
     27            // Kilobytes
    2328            array( KB_IN_BYTES, 0, '1 KB' ),
    2429            array( KB_IN_BYTES, 2, '1.00 KB' ),
     
    2631            array( 2.5 * KB_IN_BYTES, 2, '2.50 KB' ),
    2732            array( 10 * KB_IN_BYTES, 0, '10 KB' ),
     33            // Megabytes
    2834            array( (string) 1024 * KB_IN_BYTES, 2, '1.00 MB' ),
    2935            array( MB_IN_BYTES, 0, '1 MB' ),
    3036            array( 2.5 * MB_IN_BYTES, 0, '3 MB' ),
    3137            array( 2.5 * MB_IN_BYTES, 2, '2.50 MB' ),
     38            // Gigabytes
    3239            array( (string) 1024 * MB_IN_BYTES, 2, '1.00 GB' ),
    3340            array( GB_IN_BYTES, 0, '1 GB' ),
    3441            array( 2.5 * GB_IN_BYTES, 0, '3 GB' ),
    3542            array( 2.5 * GB_IN_BYTES, 2, '2.50 GB' ),
     43            // Terabytes
    3644            array( (string) 1024 * GB_IN_BYTES, 2, '1.00 TB' ),
    3745            array( TB_IN_BYTES, 0, '1 TB' ),
    3846            array( 2.5 * TB_IN_BYTES, 0, '3 TB' ),
    3947            array( 2.5 * TB_IN_BYTES, 2, '2.50 TB' ),
     48            // Petabytes
     49            array( (string) 1024 * TB_IN_BYTES, 2, '1.00 PB' ),
     50            array( PB_IN_BYTES, 0, '1 PB' ),
     51            array( 2.5 * PB_IN_BYTES, 0, '3 PB' ),
     52            array( 2.5 * PB_IN_BYTES, 2, '2.50 PB' ),
     53            // Exabytes
     54            array( (string) 1024 * PB_IN_BYTES, 2, '1.00 EB' ),
     55            array( EB_IN_BYTES, 0, '1 EB' ),
     56            array( 2.5 * EB_IN_BYTES, 0, '3 EB' ),
     57            array( 2.5 * EB_IN_BYTES, 2, '2.50 EB' ),
     58            // Zettabytes
     59            array( (string) 1024 * EB_IN_BYTES, 2, '1.00 ZB' ),
     60            array( ZB_IN_BYTES, 0, '1 ZB' ),
     61            array( 2.5 * ZB_IN_BYTES, 0, '3 ZB' ),
     62            array( 2.5 * ZB_IN_BYTES, 2, '2.50 ZB' ),
     63            // Yottabytes
     64            array( (string) 1024 * ZB_IN_BYTES, 2, '1.00 YB' ),
     65            array( YB_IN_BYTES, 0, '1 YB' ),
     66            array( 2.5 * YB_IN_BYTES, 0, '3 YB' ),
     67            array( 2.5 * YB_IN_BYTES, 2, '2.50 YB' ),
     68            // Edge values
    4069            array( TB_IN_BYTES + ( TB_IN_BYTES / 2 ) + MB_IN_BYTES, 1, '1.5 TB' ),
    4170            array( TB_IN_BYTES - MB_IN_BYTES - KB_IN_BYTES, 3, '1,023.999 GB' ),
Note: See TracChangeset for help on using the changeset viewer.