WordPress.org

Make WordPress Core

Ticket #20657: 20657.10.patch

File 20657.10.patch, 6.2 KB (added by SergeyBiryukov, 2 years ago)
  • wp-admin/custom-header.php

     
    788788        <?php } ?> 
    789789        <?php wp_nonce_field( 'custom-header-crop-image' ) ?> 
    790790 
    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        ?> 
    792796        </p> 
    793797</form> 
    794798</div> 
     
    867871                else 
    868872                        $dst_width = get_theme_support( 'custom-header', 'width' ); 
    869873 
    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 
    871879                if ( ! $cropped || is_wp_error( $cropped ) ) 
    872880                        wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); 
    873881 
    874882                $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication 
    875                 $is_cropped = ( get_attached_file( $attachment_id ) != $cropped ); 
    876883 
    877884                $parent = get_post($attachment_id); 
    878885                $parent_url = $parent->guid; 
     
    913920                $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original ); 
    914921                if ( file_exists( $medium ) ) 
    915922                        @unlink( apply_filters( 'wp_delete_file', $medium ) ); 
    916                 if ( empty( $_POST['new-attachment'] ) && $is_cropped ) 
     923                if ( empty( $_POST['new-attachment'] ) ) 
    917924                        @unlink( apply_filters( 'wp_delete_file', $original ) ); 
    918925 
    919926                return $this->finished(); 
  • wp-admin/includes/image.php

     
    4444 * @return string|WP_Error|false New filepath on success, WP_Error or false on failure. 
    4545 */ 
    4646function 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  
    5047        if ( is_numeric( $src ) ) { // Handle int as attachment ID 
    5148                $src_file = get_attached_file( $src ); 
    5249                if ( ! file_exists( $src_file ) ) { 
     
    366363        return apply_filters('file_is_displayable_image', $result, $path); 
    367364} 
    368365 
    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 */ 
     376function load_image_to_edit( $attachment_id, $mime_type, $size = 'full' ) { 
     377        $filepath = _load_image_to_edit_path( $attachment_id, $size ); 
     378        if ( empty( $filepath ) ) 
    382379                return false; 
    383380 
    384381        switch ( $mime_type ) { 
     
    396393                        break; 
    397394        } 
    398395        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); 
    400397                if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) { 
    401398                        imagealphablending($image, false); 
    402399                        imagesavealpha($image, true); 
     
    404401        } 
    405402        return $image; 
    406403} 
     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 */ 
     415function _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 */ 
     438function _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}