Ticket #20657: 20657.9.patch
File 20657.9.patch, 6.1 KB (added by , 13 years ago) |
---|
-
wp-admin/custom-header.php
788 788 <?php } ?> 789 789 <?php wp_nonce_field( 'custom-header-crop-image' ) ?> 790 790 791 <?php submit_button( __( 'Crop and Publish' ) ); ?> 791 <p class="submit"><?php 792 submit_button( __( 'Crop and Publish' ), 'primary', 'submit', false ); 793 if ( isset( $oitar ) && 1 == $oitar ) 794 submit_button( __( 'Skip Cropping, Use Image as Is' ), 'primary', 'skip-cropping', false ); 795 ?> 792 796 </p> 793 797 </form> 794 798 </div> … … 867 871 else 868 872 $dst_width = get_theme_support( 'custom-header', 'width' ); 869 873 870 $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height ); 874 if ( ! isset( $_POST['skip-cropping'] ) ) 875 $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], $dst_width, $dst_height ); 876 else 877 $cropped = _copy_image_file( $attachment_id ); 878 871 879 if ( ! $cropped || is_wp_error( $cropped ) ) 872 880 wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); 873 881 874 882 $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication 875 $is_cropped = ( get_attached_file( $attachment_id ) != $cropped );876 883 877 884 $parent = get_post($attachment_id); 878 885 $parent_url = $parent->guid; … … 913 920 $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original ); 914 921 if ( file_exists( $medium ) ) 915 922 @unlink( apply_filters( 'wp_delete_file', $medium ) ); 916 if ( empty( $_POST['new-attachment'] ) && $is_cropped)923 if ( empty( $_POST['new-attachment'] ) ) 917 924 @unlink( apply_filters( 'wp_delete_file', $original ) ); 918 925 919 926 return $this->finished(); -
wp-admin/includes/image.php
44 44 * @return string|WP_Error|false New filepath on success, WP_Error or false on failure. 45 45 */ 46 46 function wp_crop_image( $src, $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h, $src_abs = false, $dst_file = false ) { 47 if ( 0 == $src_x && 0 == $src_y && $src_w == $dst_w && $src_h == $dst_h )48 return ( is_numeric( $src ) ) ? get_attached_file( $src ) : $src;49 50 47 if ( is_numeric( $src ) ) { // Handle int as attachment ID 51 48 $src_file = get_attached_file( $src ); 52 49 if ( ! file_exists( $src_file ) ) { … … 364 361 return apply_filters('file_is_displayable_image', $result, $path); 365 362 } 366 363 367 function load_image_to_edit($post_id, $mime_type, $size = 'full') { 368 $filepath = get_attached_file($post_id); 369 370 if ( $filepath && file_exists($filepath) ) { 371 if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) { 372 $filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size); 373 } 374 } elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) { 375 $filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size); 376 } 377 378 $filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);379 if ( empty( $filepath) )364 /** 365 * Load an image resource for editing. 366 * 367 * @since 2.9.0 368 * 369 * @param string $attachment_id Attachment ID. 370 * @param string $mime_type Image mime type. 371 * @param string $size Optional. Image size, defaults to 'full'. 372 * @return resource|false The resulting image resource on success, false on failure. 373 */ 374 function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) { 375 $filepath = _load_image_to_edit_path( $attachment_id, $size ); 376 if ( empty( $filepath ) ) 380 377 return false; 381 378 382 379 switch ( $mime_type ) { … … 394 391 break; 395 392 } 396 393 if ( is_resource($image) ) { 397 $image = apply_filters('load_image_to_edit', $image, $ post_id, $size);394 $image = apply_filters('load_image_to_edit', $image, $attachment_id, $size); 398 395 if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) { 399 396 imagealphablending($image, false); 400 397 imagesavealpha($image, true); … … 402 399 } 403 400 return $image; 404 401 } 402 403 /** 404 * Attempt to load an attachment from URL (for replication plugins). 405 * 406 * @since 3.4.0 407 * @access private 408 * 409 * @param string $attachment_id Attachment ID. 410 * @param string $size Optional. Image size, defaults to 'full'. 411 * @return string|false Local file path on success, false on failure. 412 */ 413 function _load_image_to_edit_path( $attachment_id, $size = 'full' ) { 414 $filepath = get_attached_file( $attachment_id ); 415 416 if ( $filepath && file_exists( $filepath ) ) { 417 if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) { 418 $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size ); 419 } 420 } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) { 421 $filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size ); 422 } 423 424 return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size ); 425 } 426 427 /** 428 * Copy an existing image file. 429 * 430 * @since 3.4.0 431 * @access private 432 * 433 * @param string $attachment_id Attachment ID. 434 * @return string|false New file path on success, false on failure. 435 */ 436 function _copy_image_file( $attachment_id ) { 437 $src_file = get_attached_file( $attachment_id ); 438 if ( ! file_exists( $src_file ) ) 439 $src_file = _load_image_to_edit_path( $attachment_id ); 440 441 if ( $src_file ) { 442 $dst_file = str_replace( basename( $src_file ), 'copy-' . basename( $src_file ), $src_file ); 443 $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) ); 444 if ( ! copy( $src_file, $dst_file ) ) 445 $dst_file = false; 446 } else { 447 $dst_file = false; 448 } 449 450 return $dst_file; 451 }