Changeset 59202
- Timestamp:
- 10/09/2024 11:30:05 PM (2 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/image-edit.php
r58946 r59202 827 827 } elseif ( isset( $meta['width'], $meta['height'] ) ) { 828 828 $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'], 832 833 ); 833 834 } … … 840 841 $meta['width'] = $data['width']; 841 842 $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 } 842 851 } 843 852 … … 998 1007 } 999 1008 1009 $saved_image = wp_save_image_file( $new_path, $img, $post->post_mime_type, $post_id ); 1000 1010 // 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 ) { 1002 1012 $return->error = esc_js( __( 'Unable to save the image.' ) ); 1003 1013 return $return; … … 1019 1029 if ( $tag ) { 1020 1030 $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, 1024 1035 ); 1025 1036 } … … 1029 1040 $meta['file'] = _wp_relative_upload_path( $new_path ); 1030 1041 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']; 1034 1046 1035 1047 if ( $success && ( 'nothumb' === $target || 'all' === $target ) ) { -
trunk/tests/phpunit/tests/ajax/wpAjaxImageEditor.php
r57244 r59202 115 115 } 116 116 } 117 118 /** 119 * Ensure the filesize is updated after editing an image. 120 * 121 * Tests that the image meta data file size is updated after editing an image, 122 * this includes both the full size image and all the generated sizes. 123 * 124 * @ticket 59684 125 */ 126 public function test_filesize_updated_after_editing_an_image() { 127 require_once ABSPATH . 'wp-admin/includes/image-edit.php'; 128 129 $filename = DIR_TESTDATA . '/images/canola.jpg'; 130 $contents = file_get_contents( $filename ); 131 132 $upload = wp_upload_bits( wp_basename( $filename ), null, $contents ); 133 $id = $this->_make_attachment( $upload ); 134 $original_image_meta = wp_get_attachment_metadata( $id ); 135 136 $_REQUEST['action'] = 'image-editor'; 137 $_REQUEST['context'] = 'edit-attachment'; 138 $_REQUEST['postid'] = $id; 139 $_REQUEST['target'] = 'all'; 140 $_REQUEST['do'] = 'save'; 141 $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":289,"h":322}}]'; 142 143 wp_save_image( $id ); 144 145 $post_edit_meta = wp_get_attachment_metadata( $id ); 146 147 $pre_file_sizes = array_combine( array_keys( $original_image_meta['sizes'] ), array_column( $original_image_meta['sizes'], 'filesize' ) ); 148 $pre_file_sizes['full'] = $original_image_meta['filesize']; 149 150 $post_file_sizes = array_combine( array_keys( $post_edit_meta['sizes'] ), array_column( $post_edit_meta['sizes'], 'filesize' ) ); 151 $post_file_sizes['full'] = $post_edit_meta['filesize']; 152 153 foreach ( $pre_file_sizes as $size => $size_filesize ) { 154 // These are asserted individually as each image size needs to be checked separately. 155 $this->assertNotSame( $size_filesize, $post_file_sizes[ $size ], "Filesize for $size should have changed after editing an image." ); 156 } 157 } 158 159 /** 160 * Ensure the filesize is restored after restoring the original image. 161 * 162 * Tests that the image meta data file size is restored after restoring the original image, 163 * this includes both the full size image and all the generated sizes. 164 * 165 * @ticket 59684 166 */ 167 public function test_filesize_restored_after_restoring_original_image() { 168 require_once ABSPATH . 'wp-admin/includes/image-edit.php'; 169 170 $filename = DIR_TESTDATA . '/images/canola.jpg'; 171 $contents = file_get_contents( $filename ); 172 173 $upload = wp_upload_bits( wp_basename( $filename ), null, $contents ); 174 $id = $this->_make_attachment( $upload ); 175 $original_image_meta = wp_get_attachment_metadata( $id ); 176 177 $_REQUEST['action'] = 'image-editor'; 178 $_REQUEST['context'] = 'edit-attachment'; 179 $_REQUEST['postid'] = $id; 180 $_REQUEST['target'] = 'all'; 181 $_REQUEST['do'] = 'save'; 182 $_REQUEST['history'] = '[{"c":{"x":5,"y":8,"w":289,"h":322}}]'; 183 184 wp_save_image( $id ); 185 wp_restore_image( $id ); 186 187 $post_restore_meta = wp_get_attachment_metadata( $id ); 188 189 $pre_file_sizes = array_combine( array_keys( $original_image_meta['sizes'] ), array_column( $original_image_meta['sizes'], 'filesize' ) ); 190 $pre_file_sizes['full'] = $original_image_meta['filesize']; 191 192 $post_restore_file_sizes = array_combine( array_keys( $post_restore_meta['sizes'] ), array_column( $post_restore_meta['sizes'], 'filesize' ) ); 193 $post_restore_file_sizes['full'] = $post_restore_meta['filesize']; 194 195 $this->assertSameSetsWithIndex( $pre_file_sizes, $post_restore_file_sizes, 'Filesize should have restored after restoring the original image.' ); 196 } 117 197 }
Note: See TracChangeset
for help on using the changeset viewer.