Make WordPress Core


Ignore:
Timestamp:
10/09/2024 11:30:05 PM (2 years ago)
Author:
peterwilsoncc
Message:

Media: Update file size meta data when editing images.

Fixes an error in which the file size meta data retained the original upload's values follow a user editing the images in the media screen.

The original images' file sizes are now stored in the backup image data to allow for them to be restored when a user restores the original image.

Props ankit-k-gupta, antpb, audrasjb, chaion07, gauravsingh7, joedolson, oglekler, pls78, rajinsharwar, sayedulsayem, vertisoft.
Fixes #59684.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/image-edit.php

    r58946 r59202  
    827827                        } elseif ( isset( $meta['width'], $meta['height'] ) ) {
    828828                                $backup_sizes[ "full-$suffix" ] = array(
    829                                         'width'  => $meta['width'],
    830                                         'height' => $meta['height'],
    831                                         'file'   => $parts['basename'],
     829                                        'width'    => $meta['width'],
     830                                        'height'   => $meta['height'],
     831                                        'filesize' => $meta['filesize'],
     832                                        'file'     => $parts['basename'],
    832833                                );
    833834                        }
     
    840841                $meta['width']  = $data['width'];
    841842                $meta['height'] = $data['height'];
     843                if ( isset( $data['filesize'] ) ) {
     844                        /*
     845                         * Restore the original filesize if it was backed up.
     846                         *
     847                         * See https://core.trac.wordpress.org/ticket/59684.
     848                         */
     849                        $meta['filesize'] = $data['filesize'];
     850                }
    842851        }
    843852
     
    9981007        }
    9991008
     1009        $saved_image = wp_save_image_file( $new_path, $img, $post->post_mime_type, $post_id );
    10001010        // Save the full-size file, also needed to create sub-sizes.
    1001         if ( ! wp_save_image_file( $new_path, $img, $post->post_mime_type, $post_id ) ) {
     1011        if ( ! $saved_image ) {
    10021012                $return->error = esc_js( __( 'Unable to save the image.' ) );
    10031013                return $return;
     
    10191029                if ( $tag ) {
    10201030                        $backup_sizes[ $tag ] = array(
    1021                                 'width'  => $meta['width'],
    1022                                 'height' => $meta['height'],
    1023                                 'file'   => $basename,
     1031                                'width'    => $meta['width'],
     1032                                'height'   => $meta['height'],
     1033                                'filesize' => $meta['filesize'],
     1034                                'file'     => $basename,
    10241035                        );
    10251036                }
     
    10291040                $meta['file'] = _wp_relative_upload_path( $new_path );
    10301041
    1031                 $size           = $img->get_size();
    1032                 $meta['width']  = $size['width'];
    1033                 $meta['height'] = $size['height'];
     1042                $size             = $img->get_size();
     1043                $meta['width']    = $size['width'];
     1044                $meta['height']   = $size['height'];
     1045                $meta['filesize'] = $saved_image['filesize'];
    10341046
    10351047                if ( $success && ( 'nothumb' === $target || 'all' === $target ) ) {
Note: See TracChangeset for help on using the changeset viewer.