Clean up WP_Image_Editor_Imagick::test(). Props DH-Shredder. see #22543

git-svn-id: https://develop.svn.wordpress.org/trunk@22864 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2012-11-27 14:52:24 +00:00
parent 8b1ebd858a
commit 31c86e27c2
1 changed files with 11 additions and 16 deletions

View File

@ -39,6 +39,10 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
*/
public static function test( $args = array() ) {
// First, test Imagick's extension and classes.
if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick' ) || ! class_exists( 'ImagickPixel' ) )
return false;
$required_methods = array(
'clear',
'destroy',
@ -59,28 +63,14 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
'flopimage',
);
// Check for requirements
if ( ! extension_loaded( 'imagick' ) ||
! class_exists( 'Imagick' ) ||
! is_callable( 'Imagick', 'queryFormats' ) ||
! class_exists( 'ImagickPixel' ) ||
// Now, test for deep requirements within Imagick.
if ( ! is_callable( 'Imagick', 'queryFormats' ) ||
! defined( 'imagick::COMPRESSION_JPEG' ) ||
array_diff( $required_methods, get_class_methods( 'Imagick' ) ) ) {
return false;
}
/**
* setIteratorIndex is optional unless mime is an animated format.
* Here, we just say no if a user is attempting to
* edit a GIF and setIteratorIndex isn't available.
*/
if ( ( ! isset( $args['mime_type'] ) || $args['mime_type'] == 'image/gif' ) &&
! method_exists( 'Imagick', 'setIteratorIndex' ) ) {
return false;
}
return true;
}
@ -99,6 +89,11 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
if ( ! $imagick_extension )
return false;
// setIteratorIndex is optional unless mime is an animated format.
// Here, we just say no if you are missing it and aren't loading a jpeg.
if ( ! method_exists( 'Imagick', 'setIteratorIndex' ) && $mime_type != 'image/jpeg' )
return false;
try {
return ( (bool) Imagick::queryFormats( $imagick_extension ) );
}