Make WordPress Core

Ticket #39552: 39552.2.diff

File 39552.2.diff, 2.2 KB (added by diddledani, 8 years ago)

this works I think

  • wp-includes/functions.php

     
    22852285                // Attempt to figure out what type of image it actually is
    22862286                $real_mime = wp_get_image_mime( $file );
    22872287
     2288                // Special-case SVG images as they may return a text/ mime-type.
     2289                if ( 0 === strpos( $type, 'image/svg+xml' ) && 0 === strpos( $real_mime, 'text/' ) ) {
     2290                    $fhandle = fopen( $file, 'r' );
     2291                    $first_five_bytes = fread( $fhandle, 5 );
     2292                    fclose( $fhandle );
     2293
     2294                    $xmlpos = strpos( $first_five_bytes, '<?xml' );
     2295                    $svgpos = strpos( $first_five_bytes, '<svg' );
     2296                    if ( -1 !== $xmlpos || -1 !== $svgpos ) {
     2297                                $real_mime = 'image/svg+xml';
     2298                        }
     2299                }
     2300
    22882301                if ( ! $real_mime ) {
    22892302                        $type = $ext = false;
    22902303                } elseif ( $real_mime != $type ) {
     
    23772390                $mime = false;
    23782391        }
    23792392
     2393        try {
     2394                if ( false === $mime && function_exists( 'finfo_file' ) ) {
     2395                        // Use finfo_file if available to validate non-image files.
     2396                        $finfo = finfo_open( FILEINFO_MIME_TYPE );
     2397                        $mime = finfo_file( $finfo, $file );
     2398                        finfo_close( $finfo );
     2399                }
     2400        } catch ( Exception $e ) {
     2401                $mime = false;
     2402        }
     2403
    23802404        return $mime;
    23812405}
    23822406
     
    24082432        'bmp' => 'image/bmp',
    24092433        'tiff|tif' => 'image/tiff',
    24102434        'ico' => 'image/x-icon',
     2435    'svg' => 'image/svg+xml',
    24112436        // Video formats.
    24122437        'asf|asx' => 'video/x-ms-asf',
    24132438        'wmv' => 'video/x-ms-wmv',
     
    25232548         *                        of file types.
    25242549         */
    25252550        return apply_filters( 'ext2type', array(
    2526                 'image'       => array( 'jpg', 'jpeg', 'jpe',  'gif',  'png',  'bmp',   'tif',  'tiff', 'ico' ),
     2551                'image'       => array( 'jpg', 'jpeg', 'jpe',  'gif',  'png',  'bmp',   'tif',  'tiff', 'ico', 'svg' ),
    25272552                'audio'       => array( 'aac', 'ac3',  'aif',  'aiff', 'm3a',  'm4a',   'm4b',  'mka',  'mp1',  'mp2',  'mp3', 'ogg', 'oga', 'ram', 'wav', 'wma' ),
    25282553                'video'       => array( '3g2',  '3gp', '3gpp', 'asf', 'avi',  'divx', 'dv',   'flv',  'm4v',   'mkv',  'mov',  'mp4',  'mpeg', 'mpg', 'mpv', 'ogm', 'ogv', 'qt',  'rm', 'vob', 'wmv' ),
    25292554                'document'    => array( 'doc', 'docx', 'docm', 'dotm', 'odt',  'pages', 'pdf',  'xps',  'oxps', 'rtf',  'wp', 'wpd', 'psd', 'xcf' ),