Make WordPress Core

Ticket #31050: 31050.3.patch

File 31050.3.patch, 7.8 KB (added by markoheijnen, 9 years ago)

Remove support from audio/video.

  • src/wp-admin/includes/image.php

     
    7878
    7979        $metadata = array();
    8080        $support = false;
    81         if ( preg_match('!^image/!', get_post_mime_type( $attachment )) && file_is_displayable_image($file) ) {
     81        $attachment_fallback_mimetypes = apply_filters( 'attachment_fallback_mimetypes', array( 'application/pdf', 'video/avi' ) );
     82        $mime_type = get_post_mime_type( $attachment );
     83
     84        if ( preg_match( '!^image/!', $mime_type ) && file_is_displayable_image($file) ) {
    8285                $imagesize = getimagesize( $file );
    8386                $metadata['width'] = $imagesize[0];
    8487                $metadata['height'] = $imagesize[1];
     
    133136
    134137        } elseif ( wp_attachment_is( 'video', $attachment ) ) {
    135138                $metadata = wp_read_video_metadata( $file );
    136                 $support = current_theme_supports( 'post-thumbnails', 'attachment:video' ) || post_type_supports( 'attachment:video', 'thumbnail' );
    137139        } elseif ( wp_attachment_is( 'audio', $attachment ) ) {
    138140                $metadata = wp_read_audio_metadata( $file );
    139                 $support = current_theme_supports( 'post-thumbnails', 'attachment:audio' ) || post_type_supports( 'attachment:audio', 'thumbnail' );
    140141        }
    141142
    142         if ( $support && ! empty( $metadata['image']['data'] ) ) {
     143        if ( ! empty( $metadata['image']['data'] ) ) {
    143144                // Check for existing cover.
    144145                $hash = md5( $metadata['image']['data'] );
    145146                $posts = get_posts( array(
     
    191192                                update_post_meta( $attachment_id, '_thumbnail_id', $sub_attachment_id );
    192193                        }
    193194                }
    194         }
    195195
    196         // Remove the blob of binary data from the array.
    197         if ( $metadata ) {
     196                // Remove the blob of binary data from the array.
    198197                unset( $metadata['image']['data'] );
    199198        }
     199        else if ( in_array( $mime_type, $attachment_fallback_mimetypes ) ) {
     200                $editor = wp_get_image_editor( $file );
     201                $sizes = array(
     202                        'thumbnail' => array(
     203                                'width'  => get_option( "thumbnail_size_w" ),
     204                                'height' => get_option( "thumbnail_size_h" ),
     205                                'crop'   => get_option( "thumbnail_crop" )
     206                        )
     207                );
    200208
     209                if ( ! is_wp_error( $editor ) ) { // No support for this type of file
     210                        $uploaded = $editor->save( $file . '.jpg' );
     211
     212                        if ( ! is_wp_error( $uploaded ) ) {
     213                                unset( $uploaded['path'] );
     214
     215                                $metadata = array_merge( $metadata, $uploaded );
     216
     217                                $metadata['sizes'] = $editor->multi_resize( $sizes );
     218                                $metadata['sizes']['full'] = $uploaded;
     219                        }
     220                }
     221        }
     222
    201223        /**
    202224         * Filter the generated attachment meta data.
    203225         *
  • src/wp-admin/includes/media.php

     
    27532753
    27542754                echo wp_video_shortcode( $attr );
    27552755
     2756        else :
     2757                $image = wp_get_attachment_image( $attachment_id, 'full', false, array( 'style' => 'max-width:100%' ) );
     2758
     2759                if ( $image ) {
     2760                        echo '<div class="wp_attachment_image wp-clearfix" id="media-head-' . $attachment_id . '">';
     2761                        echo '<p id="thumbnail-head-<?php echo $attachment_id; ?>">' . $image . '</p>';
     2762                        echo '</div>';
     2763                }
     2764
    27562765        endif; ?>
    27572766        </div>
    27582767        <div class="wp_attachment_details edit-form-section">
  • src/wp-includes/media-template.php

     
    290290                        <div class="thumbnail thumbnail-{{ data.type }}">
    291291                                <# if ( data.uploading ) { #>
    292292                                        <div class="media-progress-bar"><div></div></div>
    293                                 <# } else if ( 'image' === data.type && data.sizes && data.sizes.large ) { #>
     293                                <# } else if ( data.sizes && data.sizes.large ) { #>
    294294                                        <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" />
    295                                 <# } else if ( 'image' === data.type && data.sizes && data.sizes.full ) { #>
     295                                <# } else if ( data.sizes && data.sizes.full ) { #>
    296296                                        <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" />
    297297                                <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #>
    298298                                        <img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" />
     
    450450                                        <div class="centered">
    451451                                                <img src="{{ data.size.url }}" draggable="false" alt="" />
    452452                                        </div>
     453                                <# } else if ( data.sizes ) { #>
     454                                        <div class="centered">
     455                                                <img src="{{ data.sizes.full.url }}" draggable="false" alt="" />
     456                                        </div>
    453457                                <# } else { #>
    454458                                        <div class="centered">
    455459                                                <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #>
  • src/wp-includes/media.php

     
    163163 *                     the image is an intermediate size. False on failure.
    164164 */
    165165function image_downsize( $id, $size = 'medium' ) {
     166        $is_image = wp_attachment_is_image( $id );
    166167
    167         if ( !wp_attachment_is_image($id) )
     168        if ( $is_image ) {
     169                /**
     170                 * Filter whether to preempt the output of image_downsize().
     171                 *
     172                 * Passing a truthy value to the filter will effectively short-circuit
     173                 * down-sizing the image, returning that value as output instead.
     174                 *
     175                 * @since 2.5.0
     176                 *
     177                 * @param bool         $downsize Whether to short-circuit the image downsize. Default false.
     178                 * @param int          $id       Attachment ID for image.
     179                 * @param array|string $size     Size of image. Image size or array of width and height values (in that order).
     180                 *                               Default 'medium'.
     181                 */
     182                if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) {
     183                        return $out;
     184                }
     185        }
     186
     187        $meta = wp_get_attachment_metadata($id);
     188
     189        if ( ! $meta || empty( $meta['sizes'] ) ) {
    168190                return false;
    169 
    170         /**
    171          * Filter whether to preempt the output of image_downsize().
    172          *
    173          * Passing a truthy value to the filter will effectively short-circuit
    174          * down-sizing the image, returning that value as output instead.
    175          *
    176          * @since 2.5.0
    177          *
    178          * @param bool         $downsize Whether to short-circuit the image downsize. Default false.
    179          * @param int          $id       Attachment ID for image.
    180          * @param array|string $size     Size of image. Image size or array of width and height values (in that order).
    181          *                               Default 'medium'.
    182          */
    183         if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) {
    184                 return $out;
    185191        }
    186192
    187193        $img_url = wp_get_attachment_url($id);
    188         $meta = wp_get_attachment_metadata($id);
    189194        $width = $height = 0;
    190195        $is_intermediate = false;
    191196        $img_url_basename = wp_basename($img_url);
     
    206211                        $is_intermediate = true;
    207212                }
    208213        }
     214
    209215        if ( !$width && !$height && isset( $meta['width'], $meta['height'] ) ) {
    210216                // any other type: use the real image
    211217                $width = $meta['width'];
     
    10061012         */
    10071013        $image_meta = apply_filters( 'wp_calculate_image_srcset_meta', $image_meta, $size_array, $image_src, $attachment_id );
    10081014
    1009         if ( empty( $image_meta['sizes'] ) ) {
     1015        if ( empty( $image_meta['file'] ) || empty( $image_meta['sizes'] ) ) {
    10101016                return false;
    10111017        }
    10121018
     
    31473153                }
    31483154
    31493155                $response = array_merge( $response, array( 'sizes' => $sizes ), $sizes['full'] );
    3150         } elseif ( $meta && 'video' === $type ) {
     3156        }
     3157        elseif ( isset( $meta['sizes'] ) ) {
     3158                $base_url = str_replace( wp_basename( $attachment_url ), '', $attachment_url );
     3159
     3160                foreach ( $meta['sizes'] as $size => $data ) {
     3161                        $response['sizes'][ $size ] = array(
     3162                                'height'      => $data['height'],
     3163                                'width'       => $data['width'],
     3164                                'url'         => $base_url . $data['file'],
     3165                                'orientation' => $data['height'] > $data['width'] ? 'portrait' : 'landscape',
     3166                        );
     3167                }
     3168        }
     3169
     3170        if ( $meta && 'video' === $type ) {
    31513171                if ( isset( $meta['width'] ) )
    31523172                        $response['width'] = (int) $meta['width'];
    31533173                if ( isset( $meta['height'] ) )