mirror of
https://github.com/WordPress/WordPress.git
synced 2025-01-03 06:57:35 +01:00
In multi_resize()
image editor methods, assert that null
can only be passed for one of the arguments, not both. Add a lot more unit test assertions to ensure this.
Props pbearne, DH-Shredder. Fixes #26823. Built from https://develop.svn.wordpress.org/trunk@27794 git-svn-id: http://core.svn.wordpress.org/trunk@27630 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
1d6f31dc52
commit
85731fc99b
@ -140,12 +140,16 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
|
|||||||
* Resizes current image.
|
* Resizes current image.
|
||||||
* Wraps _resize, since _resize returns a GD Resource.
|
* Wraps _resize, since _resize returns a GD Resource.
|
||||||
*
|
*
|
||||||
|
* At minimum, either a height or width must be provided.
|
||||||
|
* If one of the two is set to null, the resize will
|
||||||
|
* maintain aspect ratio according to the provided dimension.
|
||||||
|
*
|
||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
* @access public
|
* @access public
|
||||||
*
|
*
|
||||||
* @param int $max_w
|
* @param int|null $max_w Image width.
|
||||||
* @param int $max_h
|
* @param int|null $max_h Image height.
|
||||||
* @param boolean $crop
|
* @param boolean $crop
|
||||||
* @return boolean|WP_Error
|
* @return boolean|WP_Error
|
||||||
*/
|
*/
|
||||||
public function resize( $max_w, $max_h, $crop = false ) {
|
public function resize( $max_w, $max_h, $crop = false ) {
|
||||||
@ -192,24 +196,37 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
|
|||||||
* @param array $sizes {
|
* @param array $sizes {
|
||||||
* An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
|
* An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
|
||||||
*
|
*
|
||||||
|
* Either a height or width must be provided.
|
||||||
|
* If one of the two is set to null, the resize will
|
||||||
|
* maintain aspect ratio according to the provided dimension.
|
||||||
|
*
|
||||||
* @type array $size {
|
* @type array $size {
|
||||||
* @type int $width Image width.
|
* @type int ['width'] Optional. Image width.
|
||||||
* @type int $height Image height.
|
* @type int ['height'] Optional. Image height.
|
||||||
* @type bool $crop Optional. Whether to crop the image. Default false.
|
* @type bool ['crop'] Optional. Whether to crop the image. Default false.
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
* @return array An array of resized images metadata by size.
|
* @return array An array of resized images' metadata by size.
|
||||||
*/
|
*/
|
||||||
public function multi_resize( $sizes ) {
|
public function multi_resize( $sizes ) {
|
||||||
$metadata = array();
|
$metadata = array();
|
||||||
$orig_size = $this->size;
|
$orig_size = $this->size;
|
||||||
|
|
||||||
foreach ( $sizes as $size => $size_data ) {
|
foreach ( $sizes as $size => $size_data ) {
|
||||||
if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
|
if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! isset( $size_data['crop'] ) )
|
if ( ! isset( $size_data['width'] ) ) {
|
||||||
|
$size_data['width'] = null;
|
||||||
|
}
|
||||||
|
if ( ! isset( $size_data['height'] ) ) {
|
||||||
|
$size_data['height'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! isset( $size_data['crop'] ) ) {
|
||||||
$size_data['crop'] = false;
|
$size_data['crop'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
$image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
|
$image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
|
||||||
|
|
||||||
|
@ -211,12 +211,16 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
|
|||||||
/**
|
/**
|
||||||
* Resizes current image.
|
* Resizes current image.
|
||||||
*
|
*
|
||||||
|
* At minimum, either a height or width must be provided.
|
||||||
|
* If one of the two is set to null, the resize will
|
||||||
|
* maintain aspect ratio according to the provided dimension.
|
||||||
|
*
|
||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
* @access public
|
* @access public
|
||||||
*
|
*
|
||||||
* @param int $max_w
|
* @param int|null $max_w Image width.
|
||||||
* @param int $max_h
|
* @param int|null $max_h Image height.
|
||||||
* @param boolean $crop
|
* @param boolean $crop
|
||||||
* @return boolean|WP_Error
|
* @return boolean|WP_Error
|
||||||
*/
|
*/
|
||||||
public function resize( $max_w, $max_h, $crop = false ) {
|
public function resize( $max_w, $max_h, $crop = false ) {
|
||||||
@ -255,13 +259,17 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
|
|||||||
* @param array $sizes {
|
* @param array $sizes {
|
||||||
* An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
|
* An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
|
||||||
*
|
*
|
||||||
|
* Either a height or width must be provided.
|
||||||
|
* If one of the two is set to null, the resize will
|
||||||
|
* maintain aspect ratio according to the provided dimension.
|
||||||
|
*
|
||||||
* @type array $size {
|
* @type array $size {
|
||||||
* @type int $width Image width.
|
* @type int ['width'] Optional. Image width.
|
||||||
* @type int $height Image height.
|
* @type int ['height'] Optional. Image height.
|
||||||
* @type bool $crop Optional. Whether to crop the image. Default false.
|
* @type bool $crop Optional. Whether to crop the image. Default false.
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
* @return array An array of resized images metadata by size.
|
* @return array An array of resized images' metadata by size.
|
||||||
*/
|
*/
|
||||||
public function multi_resize( $sizes ) {
|
public function multi_resize( $sizes ) {
|
||||||
$metadata = array();
|
$metadata = array();
|
||||||
@ -272,11 +280,20 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
|
|||||||
if ( ! $this->image )
|
if ( ! $this->image )
|
||||||
$this->image = $orig_image->getImage();
|
$this->image = $orig_image->getImage();
|
||||||
|
|
||||||
if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
|
if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! isset( $size_data['crop'] ) )
|
if ( ! isset( $size_data['width'] ) ) {
|
||||||
|
$size_data['width'] = null;
|
||||||
|
}
|
||||||
|
if ( ! isset( $size_data['height'] ) ) {
|
||||||
|
$size_data['height'] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! isset( $size_data['crop'] ) ) {
|
||||||
$size_data['crop'] = false;
|
$size_data['crop'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
$resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
|
$resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
|
||||||
|
|
||||||
|
@ -82,13 +82,17 @@ abstract class WP_Image_Editor {
|
|||||||
/**
|
/**
|
||||||
* Resizes current image.
|
* Resizes current image.
|
||||||
*
|
*
|
||||||
|
* At minimum, either a height or width must be provided.
|
||||||
|
* If one of the two is set to null, the resize will
|
||||||
|
* maintain aspect ratio according to the provided dimension.
|
||||||
|
*
|
||||||
* @since 3.5.0
|
* @since 3.5.0
|
||||||
* @access public
|
* @access public
|
||||||
* @abstract
|
* @abstract
|
||||||
*
|
*
|
||||||
* @param int $max_w
|
* @param int|null $max_w Image width.
|
||||||
* @param int $max_h
|
* @param int|null $max_h Image height.
|
||||||
* @param boolean $crop
|
* @param boolean $crop
|
||||||
* @return boolean|WP_Error
|
* @return boolean|WP_Error
|
||||||
*/
|
*/
|
||||||
abstract public function resize( $max_w, $max_h, $crop = false );
|
abstract public function resize( $max_w, $max_h, $crop = false );
|
||||||
|
Loading…
Reference in New Issue
Block a user