WordPress.org

Make WordPress Core

Ticket #18543: gd-imagejpeg-wrapper-ob.3.diff

File gd-imagejpeg-wrapper-ob.3.diff, 5.5 KB (added by adambackstrom, 3 years ago)

Bugfix output buffered version; always turn off ob before function ends (thanks, dd32)

  • wp-includes/functions.php

     
    45494549        @header( 'X-Frame-Options: SAMEORIGIN' ); 
    45504550} 
    45514551 
     4552/** 
     4553 * Test if a given path is a stream URL 
     4554 *  
     4555 * @param string $path The resource path or URL 
     4556 * @return bool True if the path is a stream URL 
     4557 */ 
     4558function wp_is_stream( $path ) { 
     4559        $wrappers = stream_get_wrappers(); 
     4560        $wrappers_re = '(' . join('|', $wrappers) . ')'; 
     4561 
     4562        return preg_match( "!^$wrappers_re://!", $path ) === 1; 
     4563} 
     4564 
    45524565?> 
  • wp-includes/media.php

     
    444444        $destfilename = "{$dir}/{$name}-{$suffix}.{$ext}"; 
    445445 
    446446        if ( IMAGETYPE_GIF == $orig_type ) { 
    447                 if ( !imagegif( $newimage, $destfilename ) ) 
     447                if ( !wp_imagegif( $newimage, $destfilename ) ) 
    448448                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' )); 
    449449        } elseif ( IMAGETYPE_PNG == $orig_type ) { 
    450                 if ( !imagepng( $newimage, $destfilename ) ) 
     450                if ( !wp_imagepng( $newimage, $destfilename ) ) 
    451451                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' )); 
    452452        } else { 
    453453                // all other formats are converted to jpg 
    454454                $destfilename = "{$dir}/{$name}-{$suffix}.jpg"; 
    455                 if ( !imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) ) 
     455                if ( !wp_imagejpeg( $newimage, $destfilename, apply_filters( 'jpeg_quality', $jpeg_quality, 'image_resize' ) ) ) 
    456456                        return new WP_Error('resize_path_invalid', __( 'Resize path invalid' )); 
    457457        } 
    458458 
     
    10121012} 
    10131013 
    10141014/** 
     1015 * Wrap the GD image* functions (imagejpeg, imagepng, imagegif) so that images can be 
     1016 * written to stream wrappers. 
     1017 * 
     1018 * @uses wp_is_stream() 
     1019 * @see imagejpeg 
     1020 * @see imagepng 
     1021 * @see imagegif 
     1022 * 
     1023 * @param string $function The GD function to call 
     1024 * @param resource $image The image resource to write to a file 
     1025 * @param string $filename The destinaion file, which may be a stream URL 
     1026 * @param int $quality Image quality (imagejpeg, imagepng) 
     1027 * @param int $filters Image filters (imagepng) 
     1028 * @return bool True if the image write operation succeeded. 
     1029 */ 
     1030function _wp_imageany( $function, $image, $filename, $quality = -1, $filters = null ) { 
     1031        $dst_file = $filename; 
     1032 
     1033        if ( $stream = wp_is_stream($filename) ) { 
     1034                $filename = null; 
     1035                ob_start(); 
     1036        } 
     1037 
     1038        $result = call_user_func( $function, $image, $filename, $quality, $filters ); 
     1039 
     1040        if( $result && $stream ) { 
     1041                $contents = ob_get_contents(); 
     1042 
     1043                $fp = fopen( $dst_file, 'w' ); 
     1044 
     1045                if( ! $fp ) 
     1046                        return false; 
     1047 
     1048                fwrite( $fp, $contents ); 
     1049                fclose( $fp ); 
     1050        } 
     1051 
     1052        if( $stream ) { 
     1053                ob_end_clean(); 
     1054        } 
     1055 
     1056        return $result; 
     1057} 
     1058 
     1059/** 
     1060 * Stream resource-aware wrapper for imagejpeg. 
     1061 * 
     1062 * @uses _wp_imageany 
     1063 * @link http://www.php.net/manual/en/function.imagejpeg.php 
     1064 * 
     1065 * @param resource $image The image resource to write to a file 
     1066 * @param string $filename The destinaion file, which may be a stream URL 
     1067 * @param int $quality Image quality 
     1068 * @return bool True if the image write operation succeeded. 
     1069 */ 
     1070function wp_imagejpeg( $image, $filename, $quality = -1 ) { 
     1071        return _wp_imageany( 'imagejpeg', $image, $filename, $quality ); 
     1072} 
     1073 
     1074/** 
     1075 * Stream resource-aware wrapper for imagepng. 
     1076 * 
     1077 * @uses _wp_imageany 
     1078 * @link http://www.php.net/manual/en/function.imagejpeg.php 
     1079 * 
     1080 * @param resource $image The image resource to write to a file 
     1081 * @param string $filename The destinaion file, which may be a stream URL 
     1082 * @param int $quality Image quality 
     1083 * @param int $filters Filters to apply to image 
     1084 */ 
     1085function wp_imagepng( $image, $filename, $quality = -1, $filters = null ) { 
     1086        return _wp_imageany( 'imagepng', $image, $filename, $quality, $filters ); 
     1087} 
     1088 
     1089/** 
     1090 * Stream resource-aware wrapper for imagegif. 
     1091 * 
     1092 * @uses _wp_imageany 
     1093 * @link http://www.php.net/manual/en/function.imagejpeg.php 
     1094 * 
     1095 * @param resource $image The image resource to write to a file 
     1096 * @param string $filename The destinaion file, which may be a stream URL 
     1097 */ 
     1098function wp_imagegif( $image, $filename ) { 
     1099        return _wp_imageany( 'imagegif', $image, $filename ); 
     1100} 
     1101 
     1102/** 
    10151103 * API for easily embedding rich media such as videos and images into content. 
    10161104 * 
    10171105 * @package WordPress 
  • wp-admin/includes/image-edit.php

     
    262262 
    263263        switch ( $mime_type ) { 
    264264                case 'image/jpeg': 
    265                         return imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) ); 
     265                        return wp_imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) ); 
    266266                case 'image/png': 
    267                         return imagepng($image, $filename); 
     267                        return wp_imagepng($image, $filename); 
    268268                case 'image/gif': 
    269                         return imagegif($image, $filename); 
     269                        return wp_imagegif($image, $filename); 
    270270                default: 
    271271                        return false; 
    272272        } 
  • wp-admin/includes/image.php

     
    7171 
    7272        $dst_file = preg_replace( '/\\.[^\\.]+$/', '.jpg', $dst_file ); 
    7373 
    74         if ( imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) ) 
     74        if ( wp_imagejpeg( $dst, $dst_file, apply_filters( 'jpeg_quality', 90, 'wp_crop_image' ) ) ) 
    7575                return $dst_file; 
    7676        else 
    7777                return false;