WordPress.org

Make WordPress Core

Ticket #19629: 19629.2.diff

File 19629.2.diff, 2.8 KB (added by nacin, 17 months ago)
  • wp-admin/includes/media.php

     
    260260 * 
    261261 * @since 2.6.0 
    262262 * 
    263  * @param array $file_array Array similar to a {@link $_FILES} upload array 
     263 * @param string|array $file A URL as a string, or an array similar to a {@link $_FILES} upload array 
    264264 * @param int $post_id The post ID the media is associated with 
    265265 * @param string $desc Description of the sideloaded file 
    266266 * @param array $post_data allows you to overwrite some of the attachment 
    267267 * @return int|object The ID of the attachment or a WP_Error on failure 
    268268 */ 
    269 function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) { 
     269function media_handle_sideload( $file, $post_id, $desc = null, $post_data = array()) { 
     270        $downloading_url = is_string( $file ); 
     271 
     272        if ( $downloading_url ) { 
     273                // Download file to temp location 
     274                $tmp = download_url( $file ); 
     275 
     276                if ( is_wp_error( $tmp ) ) 
     277                        return $tmp; 
     278 
     279                $file_array = array( 
     280                        'name' => preg_replace( '/?.*/', '', $file ), // Strip query string (might need to be better) 
     281                        'tmp_name' => $tmp, 
     282                ); 
     283        } 
     284 
    270285        $overrides = array('test_form'=>false); 
    271286 
    272287        $time = current_time( 'mysql' ); 
     
    276291        } 
    277292 
    278293        $file = wp_handle_sideload( $file_array, $overrides, $time ); 
    279         if ( isset($file['error']) ) 
     294        if ( isset( $file['error'] ) ) { 
     295                if ( $downloading_url ) 
     296                        @unlink( $tmp ); 
    280297                return new WP_Error( 'upload_error', $file['error'] ); 
     298        } 
    281299 
    282300        $url = $file['url']; 
    283301        $type = $file['type']; 
     
    598616 * @return string|WP_Error Populated HTML img tag on success 
    599617 */ 
    600618function media_sideload_image($file, $post_id, $desc = null) { 
    601         if ( ! empty($file) ) { 
    602                 // Download file to temp location 
    603                 $tmp = download_url( $file ); 
     619        if ( ! $file ) 
     620                return; 
     621        $id = media_handle_sideload( $file, $post_id, $desc ); 
    604622 
    605                 // Set variables for storage 
    606                 // fix file filename for query strings 
    607                 preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches ); 
    608                 $file_array['name'] = basename($matches[0]); 
    609                 $file_array['tmp_name'] = $tmp; 
    610  
    611                 // If error storing temporarily, unlink 
    612                 if ( is_wp_error( $tmp ) ) { 
    613                         @unlink($file_array['tmp_name']); 
    614                         $file_array['tmp_name'] = ''; 
    615                 } 
    616  
    617                 // do the validation and storage stuff 
    618                 $id = media_handle_sideload( $file_array, $post_id, $desc ); 
    619                 // If error storing permanently, unlink 
    620                 if ( is_wp_error($id) ) { 
    621                         @unlink($file_array['tmp_name']); 
    622                         return $id; 
    623                 } 
    624  
    625                 $src = wp_get_attachment_url( $id ); 
    626         } 
    627  
    628         // Finally check to make sure the file has been saved, then return the html 
    629         if ( ! empty($src) ) { 
     623        if ( $src = wp_get_attachment_url( $id ) ) { 
    630624                $alt = isset($desc) ? esc_attr($desc) : ''; 
    631625                $html = "<img src='$src' alt='$alt' />"; 
    632626                return $html;