X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/9e77185fafaf4e60e2b73821e0e4b9b1a11fb85f..refs/tags/wordpress-4.5:/wp-admin/includes/image-edit.php diff --git a/wp-admin/includes/image-edit.php b/wp-admin/includes/image-edit.php index 99a188e6..8947f537 100644 --- a/wp-admin/includes/image-edit.php +++ b/wp-admin/includes/image-edit.php @@ -6,6 +6,13 @@ * @subpackage Administration */ +/** + * Loads the WP image-editing interface. + * + * @param int $post_id Post ID. + * @param bool|object $msg Optional. Message to display for image editor updates or errors. + * Default false. + */ function wp_image_editor($post_id, $msg = false) { $nonce = wp_create_nonce("image_editor-$post_id"); $meta = wp_get_attachment_metadata($post_id); @@ -33,13 +40,14 @@ function wp_image_editor($post_id, $msg = false) { } ?> -
+
-

+

+

@@ -47,9 +55,22 @@ function wp_image_editor($post_id, $msg = false) {

- × - ! - , 'scale')" class="button button-primary" value="" /> + +
+ +
+ + × + + ! + , 'scale')" class="button button-primary" value="" /> +
+
+
@@ -58,7 +79,7 @@ function wp_image_editor($post_id, $msg = false) {
-

+

-

+

+

@@ -90,23 +112,32 @@ function wp_image_editor($post_id, $msg = false) {
-

- - - - : - - -

- -

- - - - × - - -

+
+ +
+ + : + +
+
+ +
+ +
+ + × + +
+
+
-

+

+

-

+

-
-

+
+
-

-
+

+
+
+
-
+
-
-
, this)" class="imgedit-crop disabled" title="">
+ get_post_mime_type( $post_id ), 'methods' => array( 'rotate' ) ) ) ) { ?> -
, this)" title="">
-
, this)" title="">
+ 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.' ) . '

'; ?> -
-
+ + -
, this)" class="imgedit-flipv" title="">
-
, this)" class="imgedit-fliph" title="">
+ + -
, this)" class="imgedit-undo disabled" title="">
-
, this)" class="imgedit-redo disabled" title="">
-
+ + +
@@ -177,11 +213,11 @@ function wp_image_editor($post_id, $msg = false) {
- +
- + )" disabled="disabled" class="button button-primary imgedit-submit-btn" value="" />
@@ -201,7 +237,7 @@ function wp_image_editor($post_id, $msg = false) { * @param WP_Image_Editor $image * @param string $mime_type * @param int $post_id - * @return boolean + * @return bool */ function wp_stream_image( $image, $mime_type, $post_id ) { if ( $image instanceof WP_Image_Editor ) { @@ -257,7 +293,7 @@ function wp_stream_image( $image, $mime_type, $post_id ) { * @param WP_Image_Editor $image * @param string $mime_type * @param int $post_id - * @return boolean + * @return bool */ function wp_save_image_file( $filename, $image, $mime_type, $post_id ) { if ( $image instanceof WP_Image_Editor ) { @@ -326,12 +362,31 @@ function wp_save_image_file( $filename, $image, $mime_type, $post_id ) { } } +/** + * Image preview ratio. Internal use only. + * + * @since 2.9.0 + * + * @ignore + * @param int $w Image width in pixels. + * @param int $h Image height in pixels. + * @return float|int Image preview ratio. + */ function _image_get_preview_ratio($w, $h) { $max = max($w, $h); return $max > 400 ? (400 / $max) : 1; } -// @TODO: Returns GD resource, but is NOT public +/** + * Returns an image resource. Internal use only. + * + * @since 2.9.0 + * + * @ignore + * @param resource $img Image resource. + * @param float|int $angle Image rotation angle, in degrees. + * @return resource|false GD image resource, false otherwise. + */ function _rotate_image_resource($img, $angle) { _deprecated_function( __FUNCTION__, '3.5', __( 'Use WP_Image_Editor::rotate' ) ); if ( function_exists('imagerotate') ) { @@ -345,14 +400,15 @@ function _rotate_image_resource($img, $angle) { } /** - * @TODO: Only used within image_edit_apply_changes - * and receives/returns GD Resource. - * Consider removal. + * Flips an image resource. Internal use only. + * + * @since 2.9.0 * - * @param GD_Resource $img - * @param boolean $horz - * @param boolean $vert - * @return GD_Resource + * @ignore + * @param resource $img Image resource. + * @param bool $horz Whether to flip horizontally. + * @param bool $vert Whether to flip vertically. + * @return resource (maybe) flipped image resource. */ function _flip_image_resource($img, $horz, $vert) { _deprecated_function( __FUNCTION__, '3.5', __( 'Use WP_Image_Editor::flip' ) ); @@ -374,16 +430,17 @@ function _flip_image_resource($img, $horz, $vert) { } /** - * @TODO: Only used within image_edit_apply_changes - * and receives/returns GD Resource. - * Consider removal. + * Crops an image resource. Internal use only. + * + * @since 2.9.0 * - * @param GD_Resource $img - * @param float $x - * @param float $y - * @param float $w - * @param float $h - * @return GD_Resource + * @ignore + * @param resource $img Image resource. + * @param float $x Source point x-coordinate. + * @param float $y Source point y-cooredinate. + * @param float $w Source width. + * @param float $h Source height. + * @return resource (maybe) cropped image resource. */ function _crop_image_resource($img, $x, $y, $w, $h) { $dst = wp_imagecreatetruecolor($w, $h); @@ -399,9 +456,11 @@ function _crop_image_resource($img, $x, $y, $w, $h) { /** * Performs group of changes on Editor specified. * - * @param WP_Image_Editor $image - * @param type $changes - * @return WP_Image_Editor + * @since 2.9.0 + * + * @param WP_Image_Editor $image {@see WP_Image_Editor} instance. + * @param array $changes Array of change operations. + * @return WP_Image_Editor {@see WP_Image_Editor} instance with changes applied. */ function image_edit_apply_changes( $image, $changes ) { if ( is_resource( $image ) ) @@ -431,7 +490,7 @@ function image_edit_apply_changes( $image, $changes ) { // Combine operations. if ( count($changes) > 1 ) { $filtered = array($changes[0]); - for ( $i = 0, $j = 1; $j < count($changes); $j++ ) { + for ( $i = 0, $j = 1, $c = count( $changes ); $j < $c; $j++ ) { $combined = false; if ( $filtered[$i]->type == $changes[$j]->type ) { switch ( $filtered[$i]->type ) { @@ -522,7 +581,7 @@ function image_edit_apply_changes( $image, $changes ) { * in $_REQUEST['history'] * * @param int $post_id - * @return boolean + * @return bool */ function stream_preview_image( $post_id ) { $post = get_post( $post_id ); @@ -532,8 +591,9 @@ function stream_preview_image( $post_id ) { $img = wp_get_image_editor( _load_image_to_edit_path( $post_id ) ); - if ( is_wp_error( $img ) ) - return false; + if ( is_wp_error( $img ) ) { + return false; + } $changes = !empty($_REQUEST['history']) ? json_decode( wp_unslash($_REQUEST['history']) ) : null; if ( $changes ) @@ -554,10 +614,18 @@ function stream_preview_image( $post_id ) { return wp_stream_image( $img, $post->post_mime_type, $post_id ); } +/** + * Restores the metadata for a given attachment. + * + * @since 2.9.0 + * + * @param int $post_id Attachment post ID. + * @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 = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $backup_sizes = $old_backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); $restored = false; $msg = new stdClass; @@ -576,12 +644,9 @@ function wp_restore_image($post_id) { if ( $parts['basename'] != $data['file'] ) { if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { - // Delete only if it's edited image. + // Delete only if it's an edited image. if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) { - - /** This filter is documented in wp-admin/custom-header.php */ - $delpath = apply_filters( 'wp_delete_file', $file ); - @unlink($delpath); + wp_delete_file( $file ); } } elseif ( isset( $meta['width'], $meta['height'] ) ) { $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']); @@ -602,11 +667,10 @@ function wp_restore_image($post_id) { if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) { if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { - // Delete only if it's edited image + // Delete only if it's an edited image. if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) { - /** This filter is documented in wp-admin/custom-header.php */ - $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) ); - @unlink($delpath); + $delete_file = path_join( $parts['dirname'], $meta['sizes'][$default_size]['file'] ); + wp_delete_file( $delete_file ); } } else { $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size]; @@ -619,7 +683,9 @@ function wp_restore_image($post_id) { } } - if ( !wp_update_attachment_metadata($post_id, $meta) || !update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes) ) { + if ( ! wp_update_attachment_metadata( $post_id, $meta ) || + ( $old_backup_sizes !== $backup_sizes && ! update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes ) ) ) { + $msg->error = __('Cannot save image metadata.'); return $msg; } @@ -636,6 +702,8 @@ function wp_restore_image($post_id) { * Saves image to post along with enqueued changes * in $_REQUEST['history'] * + * @global array $_wp_additional_image_sizes + * * @param int $post_id * @return \stdClass */ @@ -738,7 +806,7 @@ function wp_save_image( $post_id ) { if ( $tag ) $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']); - $success = update_attached_file( $post_id, $new_path ); + $success = ( $path === $new_path ) || update_attached_file( $post_id, $new_path ); $meta['file'] = _wp_relative_upload_path( $new_path ); @@ -817,10 +885,7 @@ function wp_save_image( $post_id ) { } if ( $delete ) { - - /** This filter is documented in wp-admin/custom-header.php */ - $delpath = apply_filters( 'wp_delete_file', $new_path ); - @unlink( $delpath ); + wp_delete_file( $new_path ); } $return->msg = esc_js( __('Image saved') );