Make WordPress Core


Ignore:
Timestamp:
11/11/2009 11:24:01 AM (16 years ago)
Author:
azaozz
Message:

Fix image meta after editing image, disable the Save button when no changes, fixes #11115

File:
1 edited

Legend:

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

    r12155 r12163  
    6969    <div class="imgedit-submit">
    7070        <input type="button" onclick="imageEdit.close(<?php echo $post_id; ?>, 1)" class="button" value="<?php echo esc_attr__( 'Cancel' ); ?>" />
    71         <input type="button" onclick="imageEdit.save(<?php echo "$post_id, '$nonce'"; ?>)" class="button-primary imgedit-submit-btn" value="<?php echo esc_attr__( 'Save' ); ?>" />
     71        <input type="button" onclick="imageEdit.save(<?php echo "$post_id, '$nonce'"; ?>)" disabled="disabled" class="button-primary imgedit-submit-btn" value="<?php echo esc_attr__( 'Save' ); ?>" />
    7272    </div>
    7373    </td>
     
    9393        <a class="imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;" href="#"><strong><?php _e('Restore Original Image'); ?></strong></a>
    9494        <div class="imgedit-help">
    95         <p><?php _e('Discard any changes and restore the original image. Previously edited copies of the image will not be deleted.'); ?></p>
     95        <p><?php _e('Discard any changes and restore the original image.');
     96
     97        if ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE )
     98            _e(' Previously edited copies of the image will not be deleted.');
     99
     100        ?></p>
    96101        <div class="imgedit-submit">
    97102        <input type="button" onclick="imageEdit.action(<?php echo "$post_id, '$nonce'"; ?>, 'restore')" class="button-primary" value="<?php echo esc_attr__( 'Restore image' ); ?>" <?php echo $can_restore; ?> />
     
    410415function wp_restore_image($post_id) {
    411416    $meta = wp_get_attachment_metadata($post_id);
     417    $file = get_attached_file($post_id);
    412418    $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true );
    413419    $restored = false;
     
    419425    }
    420426
    421     $parts = pathinfo($meta['file']);
     427    $parts = pathinfo($file);
    422428    $suffix = time() . rand(100, 999);
    423429    $default_sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') );
    424     $default_sizes[] = 'full';
     430
     431    if ( isset($backup_sizes['full-orig']) && is_array($backup_sizes['full-orig']) ) {
     432        $data = $backup_sizes['full-orig'];
     433
     434        if ( $parts['basename'] != $data['file'] ) {
     435            if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
     436                // delete only if it's edited image
     437                if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) {
     438                    $delpath = apply_filters('wp_delete_file', $file);
     439                    @unlink($delpath);
     440                }
     441            } else {
     442                $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']);
     443            }
     444        }
     445
     446        $restored_file = path_join($parts['dirname'], $data['file']);
     447        $restored = update_attached_file($post_id, $restored_file);
     448
     449        $meta['file'] = _wp_relative_upload_path( $restored_file );
     450        $meta['width'] = $data['width'];
     451        $meta['height'] = $data['height'];
     452        list ( $uwidth, $uheight ) = wp_shrink_dimensions($meta['width'], $meta['height']);
     453        $meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
     454    }
    425455
    426456    foreach ( $default_sizes as $default_size ) {
    427457        if ( isset($backup_sizes["$default_size-orig"]) ) {
    428458            $data = $backup_sizes["$default_size-orig"];
    429             if ( 'full' == $default_size ) {
    430                 if ( $parts['basename'] != $data['file'] ) {
    431                     if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
    432                         // delete only if it's edited image
    433                         if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) {
    434                             $delpath = apply_filters('wp_delete_file', $meta['file']);
    435                             @unlink($delpath);
    436                         }
    437                     } else {
    438                         $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']);
     459            if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) {
     460                if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
     461                    // delete only if it's edited image
     462                    if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) {
     463                        $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) );
     464                        @unlink($delpath);
    439465                    }
     466                } else {
     467                    $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size];
    440468                }
    441 
    442                 $meta['file'] = path_join($parts['dirname'], $data['file']);
    443                 $meta['width'] = $data['width'];
    444                 $meta['height'] = $data['height'];
    445 
    446                 list ( $uwidth, $uheight ) = wp_shrink_dimensions($meta['width'], $meta['height']);
    447                 $meta['hwstring_small'] = "height='$uheight' width='$uwidth'";
    448                 $restored = update_attached_file($post_id, $meta['file']);
    449             } else {
    450                 if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) {
    451                     if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
    452                         // delete only if it's edited image
    453                         if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) {
    454                             $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) );
    455                             @unlink($delpath);
    456                         }
    457                     } else {
    458                         $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size];
    459                     }
    460                 }
    461 
    462                 $meta['sizes'][$default_size] = $data;
    463469            }
     470
     471            $meta['sizes'][$default_size] = $data;
    464472        } else {
    465473            unset($meta['sizes'][$default_size]);
     
    581589
    582590        $success = update_attached_file($post_id, $new_path);
    583         $meta['file'] = get_attached_file($post_id, true); // get the path unfiltered
     591
     592        $meta['file'] = _wp_relative_upload_path($new_path);
    584593        $meta['width'] = imagesx($img);
    585594        $meta['height'] = imagesy($img);
Note: See TracChangeset for help on using the changeset viewer.