Make WordPress Core


Ignore:
Timestamp:
03/10/2022 01:08:19 PM (3 years ago)
Author:
spacedmonkey
Message:

Media: Store attachment’s file size in metadata.

Store the file size of all newly uploaded attachments, as part of the metadata stored in post meta. Storing file size means, developers will not have to resort to doing filesize function calls, that can be time consuming on assets on offloaded to services like Amazon’s S3.

This change also introduces a new helper function called, wp_filesize. This is a wrapper around the filesize php function, that adds some helpful filters and ensures the return value is an integer.

Props Cybr, Spacedmonkey, SergeyBiryukov, johnwatkins0, swissspidy, desrosj, joemcgill, azaozz, antpb, adamsilverstein, uday17035.
Fixes #49412.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/file.php

    r52389 r52837  
    263263        return $keys;
    264264    }
     265
     266    /**
     267     * @ticket 49412
     268     * @covers ::wp_filesize
     269     */
     270    function test_wp_filesize_with_nonexistent_file() {
     271        $file = 'nonexistent/file.jpg';
     272        $this->assertEquals( 0, wp_filesize( $file ) );
     273    }
     274
     275    /**
     276     * @ticket 49412
     277     * @covers ::wp_filesize
     278     */
     279    function test_wp_filesize() {
     280        $file = DIR_TESTDATA . '/images/test-image-upside-down.jpg';
     281
     282        $this->assertEquals( filesize( $file ), wp_filesize( $file ) );
     283
     284        $filter = function() {
     285            return 999;
     286        };
     287
     288        add_filter( 'wp_filesize', $filter );
     289
     290        $this->assertEquals( 999, wp_filesize( $file ) );
     291
     292        $pre_filter = function() {
     293            return 111;
     294        };
     295
     296        add_filter( 'pre_wp_filesize', $pre_filter );
     297
     298        $this->assertEquals( 111, wp_filesize( $file ) );
     299    }
    265300}
Note: See TracChangeset for help on using the changeset viewer.