diff --git a/wp-admin/includes/image-edit.php b/wp-admin/includes/image-edit.php
index 936f093fae..e1dad38bbe 100644
--- a/wp-admin/includes/image-edit.php
+++ b/wp-admin/includes/image-edit.php
@@ -24,30 +24,6 @@ function wp_image_editor($post_id, $msg = false) {
$can_restore = !empty($backup_sizes) && isset($backup_sizes['full-orig'])
&& $backup_sizes['full-orig']['file'] != basename($meta['file']);
-
- // temp convert backup sizes
- if ( $sub_sizes ) {
- $update = false;
- foreach ( $meta['sizes'] as $name => $val ) {
- if ( strpos($name, 'backup-') === 0 ) {
- $m = array();
- preg_match('/backup-([0-9]+)-(.*)/', $name, $m);
- if ( !isset($backup_sizes["{$m[2]}-orig"]) )
- $n = "{$m[2]}-orig";
- else
- $n = "{$m[2]}-{$m[1]}";
- $backup_sizes[$n] = $val;
- unset($meta['sizes'][$name]);
- $update = true;
- }
- }
- if ( $update ) {
- wp_update_attachment_metadata( $post_id, $meta );
- update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes);
- }
- }
- // end temp
-
if ( $msg ) {
if ( isset($msg->error) )
$note = "
";
@@ -451,8 +427,17 @@ function wp_restore_image($post_id) {
if ( isset($backup_sizes["$default_size-orig"]) ) {
$data = $backup_sizes["$default_size-orig"];
if ( 'full' == $default_size ) {
- if ( $parts['basename'] != $data['file'] )
- $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']);
+ if ( $parts['basename'] != $data['file'] ) {
+ if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
+ // delete only if it's edited image
+ if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) {
+ $delpath = apply_filters('wp_delete_file', $meta['file']);
+ @unlink($delpath);
+ }
+ } else {
+ $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']);
+ }
+ }
$meta['file'] = path_join($parts['dirname'], $data['file']);
$meta['width'] = $data['width'];
@@ -462,8 +447,17 @@ function wp_restore_image($post_id) {
$meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
$restored = update_attached_file($post_id, $meta['file']);
} else {
- if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] )
- $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size];
+ if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) {
+ if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
+ // delete only if it's edited image
+ if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) {
+ $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) );
+ @unlink($delpath);
+ }
+ } else {
+ $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size];
+ }
+ }
$meta['sizes'][$default_size] = $data;
}
@@ -547,15 +541,24 @@ function wp_save_image($post_id) {
$filename = $path_parts['filename'];
$suffix = time() . rand(100, 999);
- while( true ) {
- $filename = preg_replace( '/-e([0-9]+)$/', '', $filename );
- $filename .= "-e{$suffix}";
- $new_filename = "{$filename}.{$path_parts['extension']}";
- $new_path = "{$path_parts['dirname']}/$new_filename";
- if ( file_exists($new_path) )
- $suffix++;
+ if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE &&
+ isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) {
+
+ if ( 'thumbnail' == $target )
+ $new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}";
else
- break;
+ $new_path = $path;
+ } else {
+ while( true ) {
+ $filename = preg_replace( '/-e([0-9]+)$/', '', $filename );
+ $filename .= "-e{$suffix}";
+ $new_filename = "{$filename}.{$path_parts['extension']}";
+ $new_path = "{$path_parts['dirname']}/$new_filename";
+ if ( file_exists($new_path) )
+ $suffix++;
+ else
+ break;
+ }
}
// save the full-size file, also needed to create sub-sizes
@@ -567,7 +570,7 @@ function wp_save_image($post_id) {
if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) {
$tag = false;
if ( isset($backup_sizes['full-orig']) ) {
- if ( $backup_sizes['full-orig']['file'] != $path_parts['basename'] )
+ if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] )
$tag = "full-$suffix";
} else {
$tag = 'full-orig';
@@ -602,7 +605,7 @@ function wp_save_image($post_id) {
$tag = false;
if ( isset($meta['sizes'][$size]) ) {
if ( isset($backup_sizes["$size-orig"]) ) {
- if ( $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] )
+ if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] )
$tag = "$size-$suffix";
} else {
$tag = "$size-orig";