WordPress.org

Make WordPress Core

Ticket #6008: custom-header.diff

File custom-header.diff, 2.7 KB (added by spikeyslam, 10 years ago)
  • wp-admin/custom-header.php

     
    211211                die( $file['error'] );
    212212
    213213                $url = $file['url'];
     214                $type = $file['type'];
    214215                $file = $file['file'];
    215216                $filename = basename($file);
    216217
     
    218219                $object = array(
    219220                'post_title' => $filename,
    220221                'post_content' => $url,
    221                 'post_mime_type' => 'import',
     222                'post_mime_type' => $type,
    222223                'guid' => $url);
    223224
    224225                // Save the data
     
    227228                list($width, $height, $type, $attr) = getimagesize( $file );
    228229
    229230                if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) {
     231                        // Add the meta-data
     232                        wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
     233
    230234                        set_theme_mod('header_image', clean_url($url));
    231235                        do_action('wp_create_file_in_uploads', $file, $id); // For replication
    232236                        return $this->finished();
     
    279283                        $_POST['height'] = $_POST['height'] * $_POST['oitar'];
    280284                }
    281285
    282                 $header = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT);
    283                 $header = apply_filters('wp_create_file_in_uploads', $header); // For replication
     286                $original = get_attached_file( $_POST['attachment_id'] );
    284287
     288                $cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT);
     289                $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication
     290
    285291                $parent = get_post($_POST['attachment_id']);
    286 
    287292                $parent_url = $parent->guid;
     293                $url = str_replace(basename($parent_url), basename($cropped), $parent_url);
    288294
    289                 $url = str_replace(basename($parent_url), basename($header), $parent_url);
     295                // Construct the object array
     296                $object = array(
     297                        'ID' => $_POST['attachment_id'],
     298                        'post_title' => basename($cropped),
     299                        'post_content' => $url,
     300                        'post_mime_type' => 'image/jpeg',
     301                        'guid' => $url
     302                );
    290303
     304                // Update the attachment
     305                wp_insert_attachment($object, $cropped);
     306                wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) );
     307
    291308                set_theme_mod('header_image', $url);
    292309
    293310                // cleanup
    294                 $file = get_attached_file( $_POST['attachment_id'] );
    295                 $medium = str_replace(basename($file), 'midsize-'.basename($file), $file);
     311                $medium = str_replace(basename($original), 'midsize-'.basename($original), $original);
    296312                @unlink( apply_filters( 'wp_delete_file', $medium ) );
    297                 wp_delete_attachment( $_POST['attachment_id'] );
     313                @unlink( apply_filters( 'wp_delete_file', $original ) );
    298314
    299315                return $this->finished();
    300316        }