diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-admin/includes/image-edit.php --- a/wp/wp-admin/includes/image-edit.php Tue Oct 22 16:11:46 2019 +0200 +++ b/wp/wp-admin/includes/image-edit.php Tue Dec 15 13:49:49 2020 +0100 @@ -11,7 +11,7 @@ * * @since 2.9.0 * - * @param int $post_id Post ID. + * @param int $post_id Attachment post ID. * @param bool|object $msg Optional. Message to display for image editor updates or errors. * Default false. */ @@ -33,14 +33,14 @@ $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); $can_restore = false; if ( ! empty( $backup_sizes ) && isset( $backup_sizes['full-orig'], $meta['file'] ) ) { - $can_restore = $backup_sizes['full-orig']['file'] != wp_basename( $meta['file'] ); + $can_restore = wp_basename( $meta['file'] ) !== $backup_sizes['full-orig']['file']; } if ( $msg ) { if ( isset( $msg->error ) ) { - $note = "

$msg->error

"; + $note = ""; } elseif ( isset( $msg->msg ) ) { - $note = "

$msg->msg

"; + $note = ""; } } @@ -48,177 +48,37 @@
-
-
-
-

- -
-

-
- -

- -
- -
- -
- - × - - ! - , 'scale')" class="button button-primary" value="" /> -
-
- -
-
-
- - - -
-
-

-
-

- -

-
- , 'restore')" class="button button-primary" value="" /> -
-
-
-
- - - -
-
-

- - -
-

- -


-

- -


-

-
-
- -
- -
- - : - -
-
- -
- -
- - × - -
-
- -
- - - -
-
-

- -

-
- -
- -
-
- -
-
- - - - - - - -
-
-
- - - -
-
- - , this )" class="imgedit-crop button disabled" disabled> + get_post_mime_type( $post_id ), - 'methods' => array( 'rotate' ), - ) - ) ) { - $note_no_rotate = ''; - ?> - - - ' . __( 'Image rotation is not supported by your web host.' ) . '

'; - ?> - - - + // On some setups GD library does not provide imagerotate() - Ticket #11536. + if ( wp_image_editor_supports( + array( + 'mime_type' => get_post_mime_type( $post_id ), + 'methods' => array( 'rotate' ), + ) + ) ) { + $note_no_rotate = ''; + ?> + + + ' . __( 'Image rotation is not supported by your web host.' ) . '

'; + ?> + + + - - + + - - +
+ +
@@ -239,6 +99,153 @@
+
+
+
+

+ +
+

+
+ +

+ ' . $meta['width'] . ' × ' . $meta['height'] . '' + ); + ?> +

+ +
+ +
+ +
+ + + + + + ! +
, 'scale')" class="button button-primary" value="" />
+
+
+ +
+
+
+ + + +
+
+

+
+

+ +

+
+ , 'restore')" class="button button-primary" value="" /> +
+
+
+
+ + + +
+
+

+ + +
+

+ +


+

+ +


+

+
+
+ +
+ +
+ + + + + +
+
+ +
+ +
+ + + + + +
+
+ +
+ + + +
+
+

+ +
+

+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + +
+
+
+ + + +
+
@@ -275,18 +282,19 @@ return true; } else { - _deprecated_argument( __FUNCTION__, '3.5.0', __( '$image needs to be an WP_Image_Editor object' ) ); + /* translators: 1: $image, 2: WP_Image_Editor */ + _deprecated_argument( __FUNCTION__, '3.5.0', sprintf( __( '%1$s needs to be a %2$s object.' ), '$image', 'WP_Image_Editor' ) ); /** * Filters the GD image resource to be streamed to the browser. * * @since 2.9.0 - * @deprecated 3.5.0 Use image_editor_save_pre instead. + * @deprecated 3.5.0 Use {@see 'image_editor_save_pre'} instead. * * @param resource $image Image resource to be streamed. * @param int $attachment_id The attachment post ID. */ - $image = apply_filters( 'image_save_pre', $image, $attachment_id ); + $image = apply_filters_deprecated( 'image_save_pre', array( $image, $attachment_id ), '3.5.0', 'image_editor_save_pre' ); switch ( $mime_type ) { case 'image/jpeg': @@ -309,11 +317,11 @@ * * @since 2.9.0 * - * @param string $filename - * @param WP_Image_Editor $image - * @param string $mime_type - * @param int $post_id - * @return bool + * @param string $filename Name of the file to be saved. + * @param WP_Image_Editor $image The image editor instance. + * @param string $mime_type The mime type of the image. + * @param int $post_id Attachment post ID. + * @return bool True on success, false on failure. */ function wp_save_image_file( $filename, $image, $mime_type, $post_id ) { if ( $image instanceof WP_Image_Editor ) { @@ -329,11 +337,11 @@ * * @since 3.5.0 * - * @param mixed $override Value to return instead of saving. Default null. + * @param bool|null $override Value to return instead of saving. Default null. * @param string $filename Name of the file to be saved. - * @param WP_Image_Editor $image WP_Image_Editor instance. - * @param string $mime_type Image mime type. - * @param int $post_id Post ID. + * @param WP_Image_Editor $image The image editor instance. + * @param string $mime_type The mime type of the image. + * @param int $post_id Attachment post ID. */ $saved = apply_filters( 'wp_save_image_editor_file', null, $filename, $image, $mime_type, $post_id ); @@ -343,10 +351,11 @@ return $image->save( $filename, $mime_type ); } else { - _deprecated_argument( __FUNCTION__, '3.5.0', __( '$image needs to be an WP_Image_Editor object' ) ); + /* translators: 1: $image, 2: WP_Image_Editor */ + _deprecated_argument( __FUNCTION__, '3.5.0', sprintf( __( '%1$s needs to be a %2$s object.' ), '$image', 'WP_Image_Editor' ) ); /** This filter is documented in wp-admin/includes/image-edit.php */ - $image = apply_filters( 'image_save_pre', $image, $post_id ); + $image = apply_filters_deprecated( 'image_save_pre', array( $image, $post_id ), '3.5.0', 'image_editor_save_pre' ); /** * Filters whether to skip saving the image file. @@ -355,15 +364,20 @@ * returning that value instead. * * @since 2.9.0 - * @deprecated 3.5.0 Use wp_save_image_editor_file instead. + * @deprecated 3.5.0 Use {@see 'wp_save_image_editor_file'} instead. * * @param mixed $override Value to return instead of saving. Default null. * @param string $filename Name of the file to be saved. - * @param WP_Image_Editor $image WP_Image_Editor instance. - * @param string $mime_type Image mime type. - * @param int $post_id Post ID. + * @param WP_Image_Editor $image The image editor instance. + * @param string $mime_type The mime type of the image. + * @param int $post_id Attachment post ID. */ - $saved = apply_filters( 'wp_save_image_file', null, $filename, $image, $mime_type, $post_id ); + $saved = apply_filters_deprecated( + 'wp_save_image_file', + array( null, $filename, $image, $mime_type, $post_id ), + '3.5.0', + 'wp_save_image_editor_file' + ); if ( null !== $saved ) { return $saved; @@ -462,7 +476,7 @@ * @ignore * @param resource $img Image resource. * @param float $x Source point x-coordinate. - * @param float $y Source point y-cooredinate. + * @param float $y Source point y-coordinate. * @param float $w Source width. * @param float $h Source height. * @return resource (maybe) cropped image resource. @@ -489,7 +503,8 @@ */ function image_edit_apply_changes( $image, $changes ) { if ( is_resource( $image ) ) { - _deprecated_argument( __FUNCTION__, '3.5.0', __( '$image needs to be an WP_Image_Editor object' ) ); + /* translators: 1: $image, 2: WP_Image_Editor */ + _deprecated_argument( __FUNCTION__, '3.5.0', sprintf( __( '%1$s needs to be a %2$s object.' ), '$image', 'WP_Image_Editor' ) ); } if ( ! is_array( $changes ) ) { @@ -557,18 +572,18 @@ * Filters the GD image resource before applying changes to the image. * * @since 2.9.0 - * @deprecated 3.5.0 Use wp_image_editor_before_change instead. + * @deprecated 3.5.0 Use {@see 'wp_image_editor_before_change'} instead. * * @param resource $image GD image resource. * @param array $changes Array of change operations. */ - $image = apply_filters( 'image_edit_before_change', $image, $changes ); + $image = apply_filters_deprecated( 'image_edit_before_change', array( $image, $changes ), '3.5.0', 'wp_image_editor_before_change' ); } foreach ( $changes as $operation ) { switch ( $operation->type ) { case 'rotate': - if ( $operation->angle != 0 ) { + if ( 0 != $operation->angle ) { if ( $image instanceof WP_Image_Editor ) { $image->rotate( $operation->angle ); } else { @@ -577,7 +592,7 @@ } break; case 'flip': - if ( $operation->axis != 0 ) { + if ( 0 != $operation->axis ) { if ( $image instanceof WP_Image_Editor ) { $image->flip( ( $operation->axis & 1 ) != 0, ( $operation->axis & 2 ) != 0 ); } else { @@ -593,10 +608,10 @@ $w = $size['width']; $h = $size['height']; - $scale = 1 / _image_get_preview_ratio( $w, $h ); // discard preview scaling + $scale = 1 / _image_get_preview_ratio( $w, $h ); // Discard preview scaling. $image->crop( $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale ); } else { - $scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // discard preview scaling + $scale = 1 / _image_get_preview_ratio( imagesx( $image ), imagesy( $image ) ); // Discard preview scaling. $image = _crop_image_resource( $image, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale ); } break; @@ -609,12 +624,12 @@ /** * Streams image in post to browser, along with enqueued changes - * in $_REQUEST['history'] + * in `$_REQUEST['history']`. * * @since 2.9.0 * - * @param int $post_id - * @return bool + * @param int $post_id Attachment post ID. + * @return bool True on success, false on failure. */ function stream_preview_image( $post_id ) { $post = get_post( $post_id ); @@ -657,11 +672,12 @@ * @return stdClass Image restoration message object. */ function wp_restore_image( $post_id ) { - $meta = wp_get_attachment_metadata( $post_id ); - $file = get_attached_file( $post_id ); - $backup_sizes = $old_backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); - $restored = false; - $msg = new stdClass; + $meta = wp_get_attachment_metadata( $post_id ); + $file = get_attached_file( $post_id ); + $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $old_backup_sizes = $backup_sizes; + $restored = false; + $msg = new stdClass; if ( ! is_array( $backup_sizes ) ) { $msg->error = __( 'Cannot load image metadata.' ); @@ -738,19 +754,22 @@ } /** - * Saves image to post along with enqueued changes - * in $_REQUEST['history'] + * Saves image to post, along with enqueued changes + * in `$_REQUEST['history']`. * * @since 2.9.0 * - * @param int $post_id - * @return \stdClass + * @param int $post_id Attachment post ID. + * @return stdClass */ function wp_save_image( $post_id ) { $_wp_additional_image_sizes = wp_get_additional_image_sizes(); $return = new stdClass; - $success = $delete = $scaled = $nocrop = false; + $success = false; + $delete = false; + $scaled = false; + $nocrop = false; $post = get_post( $post_id ); $img = wp_get_image_editor( _load_image_to_edit_path( $post_id, 'full' ) ); @@ -762,7 +781,7 @@ $fwidth = ! empty( $_REQUEST['fwidth'] ) ? intval( $_REQUEST['fwidth'] ) : 0; $fheight = ! empty( $_REQUEST['fheight'] ) ? intval( $_REQUEST['fheight'] ) : 0; $target = ! empty( $_REQUEST['target'] ) ? preg_replace( '/[^a-z0-9_-]+/i', '', $_REQUEST['target'] ) : ''; - $scale = ! empty( $_REQUEST['do'] ) && 'scale' == $_REQUEST['do']; + $scale = ! empty( $_REQUEST['do'] ) && 'scale' === $_REQUEST['do']; if ( $scale && $fwidth > 0 && $fheight > 0 ) { $size = $img->get_size(); @@ -816,7 +835,7 @@ if ( defined( 'IMAGE_EDIT_OVERWRITE' ) && IMAGE_EDIT_OVERWRITE && isset( $backup_sizes['full-orig'] ) && $backup_sizes['full-orig']['file'] != $basename ) { - if ( 'thumbnail' == $target ) { + if ( 'thumbnail' === $target ) { $new_path = "{$dirname}/{$filename}-temp.{$ext}"; } else { $new_path = $path; @@ -866,18 +885,20 @@ $meta['width'] = $size['width']; $meta['height'] = $size['height']; - if ( $success && ( 'nothumb' == $target || 'all' == $target ) ) { + if ( $success && ( 'nothumb' === $target || 'all' === $target ) ) { $sizes = get_intermediate_image_sizes(); - if ( 'nothumb' == $target ) { + if ( 'nothumb' === $target ) { $sizes = array_diff( $sizes, array( 'thumbnail' ) ); } } $return->fw = $meta['width']; $return->fh = $meta['height']; - } elseif ( 'thumbnail' == $target ) { + } elseif ( 'thumbnail' === $target ) { $sizes = array( 'thumbnail' ); - $success = $delete = $nocrop = true; + $success = true; + $delete = true; + $nocrop = true; } /* @@ -940,14 +961,15 @@ wp_update_attachment_metadata( $post_id, $meta ); update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes ); - if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) { - // Check if it's an image edit from attachment edit screen - if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' == $_REQUEST['context'] ) { + if ( 'thumbnail' === $target || 'all' === $target || 'full' === $target ) { + // Check if it's an image edit from attachment edit screen. + if ( ! empty( $_REQUEST['context'] ) && 'edit-attachment' === $_REQUEST['context'] ) { $thumb_url = wp_get_attachment_image_src( $post_id, array( 900, 600 ), true ); $return->thumbnail = $thumb_url[0]; } else { $file_url = wp_get_attachment_url( $post_id ); - if ( ! empty( $meta['sizes']['thumbnail'] ) && $thumb = $meta['sizes']['thumbnail'] ) { + if ( ! empty( $meta['sizes']['thumbnail'] ) ) { + $thumb = $meta['sizes']['thumbnail']; $return->thumbnail = path_join( dirname( $file_url ), $thumb['file'] ); } else { $return->thumbnail = "$file_url?w=128&h=128";