Make WordPress Core


Ignore:
Timestamp:
04/06/2012 08:47:24 PM (13 years ago)
Author:
ryan
Message:

Make choosing a header image from the media library play nicely with file replication plugins that do not guarantee images will be retained in the local filesystem.

  • When passing an attachment ID to wp_crop_image(), use load_image_to_edit() to fetch the image via a url fopen when the image does not exist in the filesystem.
  • Move load_image_to_edit() to wp-admin/includes/image.php so that it is always available for admin pages loads.
  • Fallback to the height and width stored in the attachment meta when the image no longer exists in the filesystem.

see #19840

File:
1 edited

Legend:

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

    r19871 r20384  
    196196    </div>
    197197<?php
    198 }
    199 
    200 function load_image_to_edit($post_id, $mime_type, $size = 'full') {
    201     $filepath = get_attached_file($post_id);
    202 
    203     if ( $filepath && file_exists($filepath) ) {
    204         if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) {
    205             $filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size);
    206         }
    207     } elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) {
    208         $filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size);
    209     }
    210 
    211     $filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);
    212     if ( empty($filepath) )
    213         return false;
    214 
    215     switch ( $mime_type ) {
    216         case 'image/jpeg':
    217             $image = imagecreatefromjpeg($filepath);
    218             break;
    219         case 'image/png':
    220             $image = imagecreatefrompng($filepath);
    221             break;
    222         case 'image/gif':
    223             $image = imagecreatefromgif($filepath);
    224             break;
    225         default:
    226             $image = false;
    227             break;
    228     }
    229     if ( is_resource($image) ) {
    230         $image = apply_filters('load_image_to_edit', $image, $post_id, $size);
    231         if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
    232             imagealphablending($image, false);
    233             imagesavealpha($image, true);
    234         }
    235     }
    236     return $image;
    237198}
    238199
Note: See TracChangeset for help on using the changeset viewer.