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


git-svn-id: https://develop.svn.wordpress.org/trunk@20384 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren
2012-04-06 20:47:24 +00:00
parent 52c5b8c7ad
commit 6fde0bddaf
3 changed files with 70 additions and 49 deletions

View File

@@ -197,45 +197,6 @@ function wp_image_editor($post_id, $msg = false) {
<?php
}
function load_image_to_edit($post_id, $mime_type, $size = 'full') {
$filepath = get_attached_file($post_id);
if ( $filepath && file_exists($filepath) ) {
if ( 'full' != $size && ( $data = image_get_intermediate_size($post_id, $size) ) ) {
$filepath = apply_filters('load_image_to_edit_filesystempath', path_join( dirname($filepath), $data['file'] ), $post_id, $size);
}
} elseif ( function_exists('fopen') && function_exists('ini_get') && true == ini_get('allow_url_fopen') ) {
$filepath = apply_filters('load_image_to_edit_attachmenturl', wp_get_attachment_url($post_id) , $post_id, $size);
}
$filepath = apply_filters('load_image_to_edit_path', $filepath, $post_id, $size);
if ( empty($filepath) )
return false;
switch ( $mime_type ) {
case 'image/jpeg':
$image = imagecreatefromjpeg($filepath);
break;
case 'image/png':
$image = imagecreatefrompng($filepath);
break;
case 'image/gif':
$image = imagecreatefromgif($filepath);
break;
default:
$image = false;
break;
}
if ( is_resource($image) ) {
$image = apply_filters('load_image_to_edit', $image, $post_id, $size);
if ( function_exists('imagealphablending') && function_exists('imagesavealpha') ) {
imagealphablending($image, false);
imagesavealpha($image, true);
}
}
return $image;
}
function wp_stream_image($image, $mime_type, $post_id) {
$image = apply_filters('image_save_pre', $image, $post_id);