Make WordPress Core

Changeset 52955


Ignore:
Timestamp:
03/18/2022 08:46:17 PM (4 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.