WordPress.org

Make WordPress Core


Ignore:
Timestamp:
12/16/2016 08:29:26 PM (3 years ago)
Author:
joemcgill
Message:

Media: Allow PDF fallbacks filter to process custom sizes.

This fixes an oversight in [39246], which added a hook for filtering
the array of sizes used for PDF thumbnails, but failed to provide a way
for sizes added through add_image_size() to be processed.

Props gitlost.
Fixes #39231. See #38594.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/image/functions.php

    r38949 r39617  
    405405        unlink( $test_file );
    406406    }
     407
     408    /**
     409     * @ticket 39231
     410     */
     411    public function test_fallback_intermediate_image_sizes() {
     412        if ( ! wp_image_editor_supports( array( 'mime_type' => 'application/pdf' ) ) ) {
     413            $this->markTestSkipped( 'Rendering PDFs is not supported on this system.' );
     414        }
     415
     416        $orig_file = DIR_TESTDATA . '/images/wordpress-gsoc-flyer.pdf';
     417        $test_file = '/tmp/wordpress-gsoc-flyer.pdf';
     418        copy( $orig_file, $test_file );
     419
     420        $attachment_id = $this->factory->attachment->create_object( $test_file, 0, array(
     421            'post_mime_type' => 'application/pdf',
     422        ) );
     423
     424        $this->assertNotEmpty( $attachment_id );
     425
     426        add_image_size( 'test-size', 100, 100 );
     427        add_filter( 'fallback_intermediate_image_sizes', array( $this, 'filter_fallback_intermediate_image_sizes' ), 10, 2 );
     428
     429        $expected = array(
     430            'file'      => 'wordpress-gsoc-flyer-77x100.jpg',
     431            'width'     => 77,
     432            'height'    => 100,
     433            'mime-type' => 'image/jpeg',
     434        );
     435
     436        $metadata = wp_generate_attachment_metadata( $attachment_id, $test_file );
     437        $this->assertTrue( isset( $metadata['sizes']['test-size'] ), 'The `test-size` was not added to the metadata.' );
     438        $this->assertSame( $metadata['sizes']['test-size'], $expected );
     439
     440        remove_image_size( 'test-size' );
     441        remove_filter( 'fallback_intermediate_image_sizes', array( $this, 'filter_fallback_intermediate_image_sizes' ), 10 );
     442
     443        unlink( $test_file );
     444    }
     445
     446    function filter_fallback_intermediate_image_sizes( $fallback_sizes, $metadata ) {
     447        // Add the 'test-size' to the list of fallback sizes.
     448        $fallback_sizes[] = 'test-size';
     449
     450        return $fallback_sizes;
     451    }
    407452}
Note: See TracChangeset for help on using the changeset viewer.