WordPress.org

Make WordPress Core

Ticket #43658: 43658.2.diff

File 43658.2.diff, 9.3 KB (added by adamsilverstein, 5 months ago)
  • src/wp-includes/media.php

    diff --git src/wp-includes/media.php src/wp-includes/media.php
    index ace9021fd7..a96e293ec7 100644
    function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co 
    6666        if ( is_array( $size ) ) {
    6767                $max_width  = $size[0];
    6868                $max_height = $size[1];
    69         } elseif ( $size == 'thumb' || $size == 'thumbnail' ) {
     69        } elseif ( 'thumb' === $size || 'thumbnail' === $size ) {
    7070                $max_width  = intval( get_option( 'thumbnail_size_w' ) );
    7171                $max_height = intval( get_option( 'thumbnail_size_h' ) );
    7272                // last chance thumbnail size defaults
    function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co 
    7474                        $max_width  = 128;
    7575                        $max_height = 96;
    7676                }
    77         } elseif ( $size == 'medium' ) {
     77        } elseif ( 'medium' === $size ) {
    7878                $max_width  = intval( get_option( 'medium_size_w' ) );
    7979                $max_height = intval( get_option( 'medium_size_h' ) );
    8080
    81         } elseif ( $size == 'medium_large' ) {
     81        } elseif ( 'medium_large' === $size ) {
    8282                $max_width  = intval( get_option( 'medium_large_size_w' ) );
    8383                $max_height = intval( get_option( 'medium_large_size_h' ) );
    8484
    8585                if ( intval( $content_width ) > 0 ) {
    8686                        $max_width = min( intval( $content_width ), $max_width );
    8787                }
    88         } elseif ( $size == 'large' ) {
     88        } elseif ( 'large' === $size ) {
    8989                /*
    9090                 * We're inserting a large size image into the editor. If it's a really
    9191                 * big image we'll scale it down to fit reasonably within the editor
    function image_downsize( $id, $size = 'medium' ) { 
    195195         * @param array|string $size     Size of image. Image size or array of width and height values (in that order).
    196196         *                               Default 'medium'.
    197197         */
    198         if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) {
     198        $out = apply_filters( 'image_downsize', false, $id, $size );
     199        if ( $out ) {
    199200                return $out;
    200201        }
    201202
    202203        $img_url          = wp_get_attachment_url( $id );
    203204        $meta             = wp_get_attachment_metadata( $id );
    204         $width            = $height = 0;
     205        $height           = 0;
     206        $width            = $height;
    205207        $is_intermediate  = false;
    206208        $img_url_basename = wp_basename( $img_url );
     209        $intermediate     = image_get_intermediate_size( $id, $size );
     210        $thumb_file       = wp_get_attachment_thumb_file( $id );
     211        $info             = $thumb_file && getimagesize( $thumb_file );
    207212
    208213        // If the file isn't an image, attempt to replace its URL with a rendered image from its meta.
    209214        // Otherwise, a non-image type could be returned.
    function image_downsize( $id, $size = 'medium' ) { 
    219224        }
    220225
    221226        // try for a new style intermediate size
    222         if ( $intermediate = image_get_intermediate_size( $id, $size ) ) {
     227        if ( $intermediate ) {
    223228                $img_url         = str_replace( $img_url_basename, $intermediate['file'], $img_url );
    224229                $width           = $intermediate['width'];
    225230                $height          = $intermediate['height'];
    226231                $is_intermediate = true;
    227         } elseif ( $size == 'thumbnail' ) {
     232        } elseif ( 'thumbnail' === $size ) {
    228233                // fall back to the old thumbnail
    229                 if ( ( $thumb_file = wp_get_attachment_thumb_file( $id ) ) && $info = getimagesize( $thumb_file ) ) {
     234                if ( $thumb_file && $info ) {
    230235                        $img_url         = str_replace( $img_url_basename, wp_basename( $thumb_file ), $img_url );
    231236                        $width           = $info[0];
    232237                        $height          = $info[1];
    function wp_constrain_dimensions( $current_width, $current_height, $max_width = 
    412417                return array( $current_width, $current_height );
    413418        }
    414419
    415         $width_ratio = $height_ratio = 1.0;
    416         $did_width   = $did_height = false;
     420        $height_ratio = 1.0;
     421        $width_ratio  = $height_ratio;
     422        $did_height   = false;
     423        $did_width    = $did_height;
    417424
    418425        if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width ) {
    419426                $width_ratio = $max_width / $current_width;
    function wp_image_matches_ratio( $source_width, $source_height, $target_width, $ 
    687694 * }
    688695 */
    689696function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
    690         if ( ! $size || ! is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) || empty( $imagedata['sizes'] ) ) {
     697        $imagedata = wp_get_attachment_metadata( $post_id );
     698        if ( ! $size || ! is_array( $imagedata ) || empty( $imagedata['sizes'] ) ) {
    691699                return false;
    692700        }
    693701
    function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon 
    826834        if ( ! $image ) {
    827835                $src = false;
    828836
    829                 if ( $icon && $src = wp_mime_type_icon( $attachment_id ) ) {
     837                if ( $icon && wp_mime_type_icon( $attachment_id ) ) {
     838                        $src = wp_mime_type_icon( $attachment_id );
    830839                        /** This filter is documented in wp-includes/post.php */
    831840                        $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' );
    832841
    function _wp_get_attachment_relative_path( $file ) { 
    984993 *                    or false if the size doesn't exist.
    985994 */
    986995function _wp_get_image_size_from_meta( $size_name, $image_meta ) {
    987         if ( $size_name === 'full' ) {
     996        if ( 'full' === $size_name ) {
    988997                return array(
    989998                        absint( $image_meta['width'] ),
    990999                        absint( $image_meta['height'] ),
    function _wp_get_image_size_from_meta( $size_name, $image_meta ) { 
    10141023 * @return string|bool A 'srcset' value string or false.
    10151024 */
    10161025function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $image_meta = null ) {
    1017         if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
     1026        $image = wp_get_attachment_image_src( $attachment_id, $size );
     1027        if ( ! $image ) {
    10181028                return false;
    10191029        }
    10201030
    function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac 
    11461156
    11471157                // If the file name is part of the `src`, we've confirmed a match.
    11481158                if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image['file'] ) ) {
    1149                         $src_matched = $is_src = true;
     1159                        $is_src      = true;
     1160                        $src_matched = $is_src;
    11501161                }
    11511162
    11521163                // Filter out images that are from previous edits.
    function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac 
    12321243 * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
    12331244 */
    12341245function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
    1235         if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
     1246        $image = wp_get_attachment_image_src( $attachment_id, $size );
     1247        if ( ! $image ) {
    12361248                return false;
    12371249        }
    12381250
    function wp_enqueue_media( $args = array() ) { 
    35763588                $month_year->text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month_year->month ), $month_year->year );
    35773589        }
    35783590
     3591        // Filter to show only available mime types.
     3592        $avail_post_mime_types = get_available_post_mime_types( 'attachment' );
     3593        $mimeTypes             = wp_list_pluck( get_post_mime_types(), 0 );
     3594        foreach ( $mimeTypes as $mime_type => $label ) {
     3595                if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
     3596                        unset( $mimeTypes[ $mime_type ] );
     3597                }
     3598        }
    35793599        $settings = array(
    35803600                'tabs'             => $tabs,
    35813601                'tabUrl'           => add_query_arg( array( 'chromeless' => true ), admin_url( 'media-upload.php' ) ),
    3582                 'mimeTypes'        => wp_list_pluck( get_post_mime_types(), 0 ),
     3602                'mimeTypes'        => $mimeTypes,
    35833603                /** This filter is documented in wp-admin/includes/media.php */
    35843604                'captions'         => ! apply_filters( 'disable_captions', '' ),
    35853605                'nonce'            => array(
  • tests/phpunit/tests/functions.php

    diff --git tests/phpunit/tests/functions.php tests/phpunit/tests/functions.php
    index 88b9a46475..94a1c48c69 100644
    class Tests_Functions extends WP_UnitTestCase { 
    465465                $this->assertNotEmpty( $mimes );
    466466        }
    467467
     468        function check_settings_for_single( $settings ) {
     469                $this->assertEquals( array( 'image' ), array_keys( $settings['mimeTypes'] ) );
     470                return $settings;
     471        }
     472
     473        function check_settings_for_multiple( $settings ) {
     474                $this->assertEquals( array( 'image', 'audio' ), array_keys( $settings['mimeTypes'] ) );
     475                return $settings;
     476        }
     477
     478        /**
     479         * Test that the media grid uses the correct available single media type.
     480         * @ticket 43658
     481         */
     482        function test_wp_enqueue_media_single_mime_type() {
     483                $filename      = DIR_TESTDATA . '/images/test-image.jpg';
     484                $contents      = file_get_contents( $filename );
     485                $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     486                $attachment_id = $this->_make_attachment( $upload );
     487
     488                add_filter(
     489                        'media_view_settings',
     490                        array( $this, 'check_settings_for_single' )
     491                );
     492                wp_enqueue_media();
     493                remove_all_filters( 'media_view_settings' );
     494        }
     495
     496        /**
     497         * Test that the media grid uses the correct available multiple media types.
     498         * @ticket 43658
     499         */
     500        function test_wp_enqueue_media_multiple_mime_types() {
     501                $filename      = DIR_TESTDATA . '/images/test-image.jpg';
     502                $contents      = file_get_contents( $filename );
     503                $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     504                $attachment_id = $this->_make_attachment( $upload );
     505
     506                $filename      = DIR_TESTDATA . '/uploads/small-audio.mp3';
     507                $contents      = file_get_contents( $filename );
     508                $upload        = wp_upload_bits( basename( $filename ), null, $contents );
     509                $attachment_id = $this->_make_attachment( $upload );
     510
     511                add_filter(
     512                        'media_view_settings',
     513                        array( $this, 'check_settings_for_multiple' )
     514                );
     515                wp_enqueue_media();
     516        }
     517
    468518        /**
    469519         * @ticket 21594
    470520         */