WordPress.org

Make WordPress Core

Ticket #22597: 22597.diff

File 22597.diff, 4.4 KB (added by DH-Shredder, 2 years ago)
  • wp-admin/includes/image-edit.php

    diff --git wp-admin/includes/image-edit.php wp-admin/includes/image-edit.php
    index 55d5902..a7d6075 100644
    function wp_image_editor($post_id, $msg = false) { 
    4040                <div onclick="imageEdit.crop(<?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-crop disabled" title="<?php esc_attr_e( 'Crop' ); ?>"></div><?php 
    4141 
    4242        // On some setups GD library does not provide imagerotate() - Ticket #11536 
    43         if ( function_exists('imagerotate') ) { ?> 
     43        if ( wp_image_editor_supports( array( 'methods', array( 'rotate' ) ) ) ) { ?> 
    4444                <div class="imgedit-rleft"  onclick="imageEdit.rotate( 90, <?php echo "$post_id, '$nonce'"; ?>, this)" title="<?php esc_attr_e( 'Rotate counter-clockwise' ); ?>"></div> 
    4545                <div class="imgedit-rright" onclick="imageEdit.rotate(-90, <?php echo "$post_id, '$nonce'"; ?>, this)" title="<?php esc_attr_e( 'Rotate clockwise' ); ?>"></div> 
    4646<?php } else { 
    47                 $note_gdlib = esc_attr__('Image rotation is not supported by your web host (function imagerotate() is missing)'); 
     47                $note_no_rotate = esc_attr__('Image rotation is not supported by your web host.'); 
    4848?> 
    49             <div class="imgedit-rleft disabled"  title="<?php echo $note_gdlib; ?>"></div> 
    50             <div class="imgedit-rright disabled" title="<?php echo $note_gdlib; ?>"></div> 
     49            <div class="imgedit-rleft disabled"  title="<?php echo $note_no_rotate; ?>"></div> 
     50            <div class="imgedit-rright disabled" title="<?php echo $note_no_rotate; ?>"></div> 
    5151<?php } ?> 
    5252 
    5353                <div onclick="imageEdit.flip(1, <?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-flipv" title="<?php esc_attr_e( 'Flip vertically' ); ?>"></div> 
  • wp-includes/class-wp-image-editor-gd.php

    diff --git wp-includes/class-wp-image-editor-gd.php wp-includes/class-wp-image-editor-gd.php
    index 8a5d846..92dd287 100644
    class WP_Image_Editor_GD extends WP_Image_Editor { 
    3737                if ( ! extension_loaded('gd') || ! function_exists('gd_info') ) 
    3838                        return false; 
    3939 
     40                // On some setups GD library does not provide imagerotate() - Ticket #11536 
     41                if ( isset( $args['methods'] ) && 
     42                         in_array( 'rotate', $args['methods'] ) && 
     43                         ! function_exists('imagerotate') ){ 
     44 
     45                                return false; 
     46                } 
     47 
    4048                return true; 
    4149        } 
    4250 
  • wp-includes/class-wp-image-editor-imagick.php

    diff --git wp-includes/class-wp-image-editor-imagick.php wp-includes/class-wp-image-editor-imagick.php
    index ad07ae2..d29fefd 100644
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    3838         * @return boolean 
    3939         */ 
    4040        public static function test( $args = array() ) { 
    41                 if ( ! extension_loaded( 'imagick' ) || ! is_callable( 'Imagick', 'queryFormats' ) ) 
     41 
     42                $required_methods = array( 
     43                        'clear', 
     44                        'destroy', 
     45                        'valid', 
     46                        'getimage', 
     47                        'writeimage', 
     48                        'getimageblob', 
     49                        'getimagegeometry', 
     50                        'getimageformat', 
     51                        'setimageformat', 
     52                        'setimagecompression', 
     53                        'setimagecompressionquality', 
     54                        'setimagepage', 
     55                        'scaleimage', 
     56                        'cropimage', 
     57                        'rotateimage', 
     58                        'flipimage', 
     59                        'flopimage', 
     60                ); 
     61 
     62                // Check for requirements 
     63                if ( ! extension_loaded( 'imagick' ) || 
     64                         ! class_exists( 'Imagick' ) || 
     65                         ! is_callable( 'Imagick', 'queryFormats' ) || 
     66                         ! class_exists( 'ImagickPixel' ) || 
     67                         ! defined( 'imagick::COMPRESSION_JPEG' ) || 
     68                         array_diff( $required_methods, get_class_methods( 'Imagick' ) ) ) { 
     69 
     70                        return false; 
     71                } 
     72 
     73                /** 
     74                 * setIteratorIndex is optional unless mime is an animated format. 
     75                 * Here, we just say no if a user is attempting to 
     76                 * edit a GIF and setIteratorIndex isn't available. 
     77                 */ 
     78                if ( ( ! isset( $args['mime_type'] ) || $args['mime_type'] == 'image/gif' ) && 
     79                         ! method_exists( 'Imagick', 'setIteratorIndex' ) ) { 
     80 
    4281                        return false; 
     82                } 
    4383 
    4484                return true; 
    4585        } 
    class WP_Image_Editor_Imagick extends WP_Image_Editor { 
    88128                        if( ! $this->image->valid() ) 
    89129                                return new WP_Error( 'invalid_image', __('File is not an image.'), $this->file); 
    90130 
    91                         // Select the first frame to handle animated GIFs properly 
    92                         $this->image->setIteratorIndex(0); 
     131                        // Select the first frame to handle animated images properly 
     132                        if ( is_callable( array( $this->image, 'setIteratorIndex' ) ) ) 
     133                                $this->image->setIteratorIndex(0); 
     134 
    93135                        $this->mime_type = $this->get_mime_type( $this->image->getImageFormat() ); 
    94136                } 
    95137                catch ( Exception $e ) {