Ticket #20657: 20657.10.patch
File 20657.10.patch, 6.2 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 ) ) { … … 366 363 return apply_filters('file_is_displayable_image', $result, $path); 367 364 } 368 365 369 function load_image_to_edit($post_id, $mime_type, $size = 'full') { 370 $filepath = get_attached_file($post_id); 371 372 if ( $filepath && file_exists($filepath) ) { 373 if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) { 374 $filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size); 375 } 376 } elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) { 377 $filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size); 378 } 379 380 $filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);381 if ( empty( $filepath) )366 /** 367 * Load an image resource for editing. 368 * 369 * @since 2.9.0 370 * 371 * @param string $attachment_id Attachment ID. 372 * @param string $mime_type Image mime type. 373 * @param string $size Optional. Image size, defaults to 'full'. 374 * @return resource|false The resulting image resource on success, false on failure. 375 */ 376 function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) { 377 $filepath = _load_image_to_edit_path( $attachment_id, $size ); 378 if ( empty( $filepath ) ) 382 379 return false; 383 380 384 381 switch ( $mime_type ) { … … 396 393 break; 397 394 } 398 395 if ( is_resource($image) ) { 399 $image = apply_filters('load_image_to_edit', $image, $ post_id, $size);396 $image = apply_filters('load_image_to_edit', $image, $attachment_id, $size); 400 397 if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) { 401 398 imagealphablending($image, false); 402 399 imagesavealpha($image, true); … … 404 401 } 405 402 return $image; 406 403 } 404 405 /** 406 * Attempt to load an attachment from URL (for replication plugins). 407 * 408 * @since 3.4.0 409 * @access private 410 * 411 * @param string $attachment_id Attachment ID. 412 * @param string $size Optional. Image size, defaults to 'full'. 413 * @return string|false File path on success, false on failure. 414 */ 415 function _load_image_to_edit_path( $attachment_id, $size = 'full' ) { 416 $filepath = get_attached_file( $attachment_id ); 417 418 if ( $filepath && file_exists( $filepath ) ) { 419 if ( 'full' != $size && ( $data = image_get_intermediate_size( $attachment_id, $size ) ) ) { 420 $filepath = apply_filters( 'load_image_to_edit_filesystempath', path_join( dirname( $filepath ), $data['file'] ), $attachment_id, $size ); 421 } 422 } elseif ( function_exists( 'fopen' ) && function_exists( 'ini_get' ) && true == ini_get( 'allow_url_fopen' ) ) { 423 $filepath = apply_filters( 'load_image_to_edit_attachmenturl', wp_get_attachment_url( $attachment_id ), $attachment_id, $size ); 424 } 425 426 return apply_filters( 'load_image_to_edit_path', $filepath, $attachment_id, $size ); 427 } 428 429 /** 430 * Copy an existing image file. 431 * 432 * @since 3.4.0 433 * @access private 434 * 435 * @param string $attachment_id Attachment ID. 436 * @return string|false New file path on success, false on failure. 437 */ 438 function _copy_image_file( $attachment_id ) { 439 $dst_file = $src_file = get_attached_file( $attachment_id ); 440 if ( ! file_exists( $src_file ) ) 441 $src_file = _load_image_to_edit_path( $attachment_id ); 442 443 if ( $src_file ) { 444 $dst_file = str_replace( basename( $dst_file ), 'copy-' . basename( $dst_file ), $dst_file ); 445 $dst_file = dirname( $dst_file ) . '/' . wp_unique_filename( dirname( $dst_file ), basename( $dst_file ) ); 446 if ( ! @copy( $src_file, $dst_file ) ) 447 $dst_file = false; 448 } else { 449 $dst_file = false; 450 } 451 452 return $dst_file; 453 }