Make WordPress Core


Ignore:
Timestamp:
12/30/2015 12:05:07 AM (9 years ago)
Author:
azaozz
Message:

Responsive images: add compatibility for versions < 2.7 when the full image path was stored in the metadata. Introduces _wp_get_attachment_relative_path() and uses it in wp_get_attachment_url().

Props dd32, SergeyBiryukov.
Fixes #35106 for trunk.

File:
1 edited

Legend:

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

    r36110 r36120  
    864864            $this->assertTrue( false !== strpos( $size, $hash ) );
    865865        }
     866    }
     867
     868    /**
     869     * @ticket 35106
     870     */
     871    function test_wp_calculate_image_srcset_with_absolute_path_in_meta() {
     872        global $_wp_additional_image_sizes;
     873
     874        $year_month = date('Y/m');
     875        $image_meta = wp_get_attachment_metadata( self::$large_id );
     876        $uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
     877
     878        // Set up test cases for all expected size names.
     879        $intermediates = array( 'medium', 'medium_large', 'large', 'full' );
     880
     881        // Add any soft crop intermediate sizes.
     882        foreach ( $_wp_additional_image_sizes as $name => $additional_size ) {
     883            if ( ! $_wp_additional_image_sizes[$name]['crop'] || 0 === $_wp_additional_image_sizes[$name]['height'] ) {
     884                $intermediates[] = $name;
     885            }
     886        }
     887
     888        $expected = '';
     889
     890        foreach( $image_meta['sizes'] as $name => $size ) {
     891            // Whitelist the sizes that should be included so we pick up 'medium_large' in 4.4.
     892            if ( in_array( $name, $intermediates ) ) {
     893                $expected .= $uploads_dir_url . $year_month . '/' . $size['file'] . ' ' . $size['width'] . 'w, ';
     894            }
     895        }
     896
     897        // Add the full size width at the end.
     898        $expected .= $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
     899
     900        // Prepend an absolute path to simulate a pre-2.7 upload
     901        $image_meta['file'] = 'H:\home\wordpress\trunk/wp-content/uploads/' . $image_meta['file'];
     902
     903        foreach ( $intermediates as $int ) {
     904            $image_url = wp_get_attachment_image_url( self::$large_id, $int );
     905            $size_array = $this->_get_image_size_array_from_name( $int );
     906            $this->assertSame( $expected, wp_calculate_image_srcset( $size_array, $image_url, $image_meta ) );
     907        }
    866908    }
    867909
Note: See TracChangeset for help on using the changeset viewer.