X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/fa11948979fd6a4ea5705dc613b239699a459db3..5d244c8fd9a27c9f89dd08da2af6fbc67d4fce63:/wp-admin/includes/image-edit.php diff --git a/wp-admin/includes/image-edit.php b/wp-admin/includes/image-edit.php index 40cea96e..7e3e7f7e 100644 --- a/wp-admin/includes/image-edit.php +++ b/wp-admin/includes/image-edit.php @@ -6,6 +6,10 @@ * @subpackage Administration */ +/** + * @param int $post_id + * @param bool|object $msg + */ function wp_image_editor($post_id, $msg = false) { $nonce = wp_create_nonce("image_editor-$post_id"); $meta = wp_get_attachment_metadata($post_id); @@ -34,70 +38,31 @@ 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="">
- -
-
- - -
, this)" class="imgedit-flipv" title="">
-
, this)" class="imgedit-fliph" title="">
- -
, this)" class="imgedit-undo disabled" title="">
-
, this)" class="imgedit-redo disabled" title="">
-
-
- - - - - - - - +
-
- -
- -
- - )" disabled="disabled" class="button-primary imgedit-submit-btn" value="" /> -
-
+
- +

-

+

+
-

+

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

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

+
-

+


-

+


-

+

@@ -143,7 +107,7 @@ function wp_image_editor($post_id, $msg = false) { - : + ×

@@ -155,13 +119,13 @@ function wp_image_editor($post_id, $msg = false) {
- - -

+

+

-
+ +

@@ -183,8 +147,50 @@ 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="">
+ +
+
+ + +
, this)" class="imgedit-flipv" title="">
+
, this)" class="imgedit-fliph" title="">
+ +
, this)" class="imgedit-undo disabled" title="">
+
, this)" class="imgedit-redo disabled" title="">
+
+
+ + + + + + + + +
+ +
+ +
+ + )" disabled="disabled" class="button button-primary imgedit-submit-btn" value="" /> +
+
+ +
@@ -203,7 +209,16 @@ function wp_image_editor($post_id, $msg = false) { */ function wp_stream_image( $image, $mime_type, $post_id ) { if ( $image instanceof WP_Image_Editor ) { - $image = apply_filters('image_editor_save_pre', $image, $post_id); + + /** + * Filter the WP_Image_Editor instance for the image to be streamed to the browser. + * + * @since 3.5.0 + * + * @param WP_Image_Editor $image WP_Image_Editor instance. + * @param int $post_id Post ID. + */ + $image = apply_filters( 'image_editor_save_pre', $image, $post_id ); if ( is_wp_error( $image->stream( $mime_type ) ) ) return false; @@ -212,7 +227,16 @@ function wp_stream_image( $image, $mime_type, $post_id ) { } else { _deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) ); - $image = apply_filters('image_save_pre', $image, $post_id); + /** + * Filter the GD image resource to be streamed to the browser. + * + * @since 2.9.0 + * @deprecated 3.5.0 Use image_editor_save_pre instead. + * + * @param resource $image Image resource to be streamed. + * @param int $post_id Post ID. + */ + $image = apply_filters( 'image_save_pre', $image, $post_id ); switch ( $mime_type ) { case 'image/jpeg': @@ -241,8 +265,25 @@ function wp_stream_image( $image, $mime_type, $post_id ) { */ function wp_save_image_file( $filename, $image, $mime_type, $post_id ) { if ( $image instanceof WP_Image_Editor ) { - $image = apply_filters('image_editor_save_pre', $image, $post_id); - $saved = apply_filters('wp_save_image_editor_file', null, $filename, $image, $mime_type, $post_id); + + /** This filter is documented in wp-admin/includes/image-edit.php */ + $image = apply_filters( 'image_editor_save_pre', $image, $post_id ); + + /** + * Filter whether to skip saving the image file. + * + * Returning a non-null value will short-circuit the save method, + * returning that value instead. + * + * @since 3.5.0 + * + * @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. + */ + $saved = apply_filters( 'wp_save_image_editor_file', null, $filename, $image, $mime_type, $post_id ); if ( null !== $saved ) return $saved; @@ -251,14 +292,33 @@ function wp_save_image_file( $filename, $image, $mime_type, $post_id ) { } else { _deprecated_argument( __FUNCTION__, '3.5', __( '$image needs to be an WP_Image_Editor object' ) ); - $image = apply_filters('image_save_pre', $image, $post_id); - $saved = apply_filters('wp_save_image_file', null, $filename, $image, $mime_type, $post_id); + /** This filter is documented in wp-admin/includes/image-edit.php */ + $image = apply_filters( 'image_save_pre', $image, $post_id ); + + /** + * Filter whether to skip saving the image file. + * + * Returning a non-null value will short-circuit the save method, + * returning that value instead. + * + * @since 2.9.0 + * @deprecated 3.5.0 Use 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. + */ + $saved = apply_filters( 'wp_save_image_file', null, $filename, $image, $mime_type, $post_id ); if ( null !== $saved ) return $saved; switch ( $mime_type ) { case 'image/jpeg': + + /** This filter is documented in wp-includes/class-wp-image-editor.php */ return imagejpeg( $image, $filename, apply_filters( 'jpeg_quality', 90, 'edit_image' ) ); case 'image/png': return imagepng( $image, $filename ); @@ -343,9 +403,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 ) ) @@ -354,7 +416,7 @@ function image_edit_apply_changes( $image, $changes ) { if ( !is_array($changes) ) return $image; - // expand change operations + // Expand change operations. foreach ( $changes as $key => $obj ) { if ( isset($obj->r) ) { $obj->type = 'rotate'; @@ -372,7 +434,7 @@ function image_edit_apply_changes( $image, $changes ) { $changes[$key] = $obj; } - // combine operations + // Combine operations. if ( count($changes) > 1 ) { $filtered = array($changes[0]); for ( $i = 0, $j = 1; $j < count($changes); $j++ ) { @@ -396,11 +458,31 @@ function image_edit_apply_changes( $image, $changes ) { unset($filtered); } - // image resource before applying the changes - if ( $image instanceof WP_Image_Editor ) - $image = apply_filters('wp_image_editor_before_change', $image, $changes); - elseif ( is_resource( $image ) ) - $image = apply_filters('image_edit_before_change', $image, $changes); + // Image resource before applying the changes. + if ( $image instanceof WP_Image_Editor ) { + + /** + * Filter the WP_Image_Editor instance before applying changes to the image. + * + * @since 3.5.0 + * + * @param WP_Image_Editor $image WP_Image_Editor instance. + * @param array $changes Array of change operations. + */ + $image = apply_filters( 'wp_image_editor_before_change', $image, $changes ); + } elseif ( is_resource( $image ) ) { + + /** + * Filter 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. + * + * @param resource $image GD image resource. + * @param array $changes Array of change operations. + */ + $image = apply_filters( 'image_edit_before_change', $image, $changes ); + } foreach ( $changes as $operation ) { switch ( $operation->type ) { @@ -450,6 +532,8 @@ function image_edit_apply_changes( $image, $changes ) { */ function stream_preview_image( $post_id ) { $post = get_post( $post_id ); + + /** This filter is documented in wp-admin/admin.php */ @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); $img = wp_get_image_editor( _load_image_to_edit_path( $post_id ) ); @@ -461,7 +545,7 @@ function stream_preview_image( $post_id ) { if ( $changes ) $img = image_edit_apply_changes( $img, $changes ); - // scale the image + // Scale the image. $size = $img->get_size(); $w = $size['width']; $h = $size['height']; @@ -476,6 +560,10 @@ function stream_preview_image( $post_id ) { return wp_stream_image( $img, $post->post_mime_type, $post_id ); } +/** + * @param int $post_id + * @return stdClass + */ function wp_restore_image($post_id) { $meta = wp_get_attachment_metadata($post_id); $file = get_attached_file($post_id); @@ -497,10 +585,12 @@ 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 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); + $delpath = apply_filters( 'wp_delete_file', $file ); @unlink($delpath); } } elseif ( isset( $meta['width'], $meta['height'] ) ) { @@ -521,7 +611,8 @@ function wp_restore_image($post_id) { $data = $backup_sizes["$default_size-orig"]; 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 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']) ); @@ -559,6 +650,8 @@ function wp_restore_image($post_id) { * @return \stdClass */ function wp_save_image( $post_id ) { + global $_wp_additional_image_sizes; + $return = new stdClass; $success = $delete = $scaled = $nocrop = false; $post = get_post( $post_id ); @@ -579,10 +672,10 @@ function wp_save_image( $post_id ) { $sX = $size['width']; $sY = $size['height']; - // check if it has roughly the same w / h ratio + // Check if it has roughly the same w / h ratio. $diff = round($sX / $sY, 2) - round($fwidth / $fheight, 2); if ( -0.1 < $diff && $diff < 0.1 ) { - // scale the full size image + // Scale the full size image. if ( $img->resize( $fwidth, $fheight ) ) $scaled = true; } @@ -611,7 +704,7 @@ function wp_save_image( $post_id ) { if ( !is_array($backup_sizes) ) $backup_sizes = array(); - // generate new filename + // Generate new filename. $path = get_attached_file($post_id); $path_parts = pathinfo( $path ); $filename = $path_parts['filename']; @@ -637,7 +730,7 @@ function wp_save_image( $post_id ) { } } - // save the full-size file, also needed to create sub-sizes + // Save the full-size file, also needed to create sub-sizes. if ( !wp_save_image_file($new_path, $img, $post->post_mime_type, $post_id) ) { $return->error = esc_js( __('Unable to save the image.') ); return $return; @@ -693,8 +786,17 @@ function wp_save_image( $post_id ) { $backup_sizes[$tag] = $meta['sizes'][$size]; } - $crop = $nocrop ? false : get_option("{$size}_crop"); - $_sizes[ $size ] = array( 'width' => get_option("{$size}_size_w"), 'height' => get_option("{$size}_size_h"), 'crop' => $crop ); + if ( isset( $_wp_additional_image_sizes[ $size ] ) ) { + $width = intval( $_wp_additional_image_sizes[ $size ]['width'] ); + $height = intval( $_wp_additional_image_sizes[ $size ]['height'] ); + $crop = ( $nocrop ) ? false : $_wp_additional_image_sizes[ $size ]['crop']; + } else { + $height = get_option( "{$size}_size_h" ); + $width = get_option( "{$size}_size_w" ); + $crop = ( $nocrop ) ? false : get_option( "{$size}_crop" ); + } + + $_sizes[ $size ] = array( 'width' => $width, 'height' => $height, 'crop' => $crop ); } $meta['sizes'] = array_merge( $meta['sizes'], $img->multi_resize( $_sizes ) ); @@ -713,10 +815,11 @@ function wp_save_image( $post_id ) { $return->thumbnail = $thumb_url[0]; } else { $file_url = wp_get_attachment_url($post_id); - if ( $thumb = $meta['sizes']['thumbnail'] ) + if ( ! empty( $meta['sizes']['thumbnail'] ) && $thumb = $meta['sizes']['thumbnail'] ) { $return->thumbnail = path_join( dirname($file_url), $thumb['file'] ); - else + } else { $return->thumbnail = "$file_url?w=128&h=128"; + } } } } else { @@ -724,8 +827,9 @@ 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); + $delpath = apply_filters( 'wp_delete_file', $new_path ); @unlink( $delpath ); }