Make WordPress Core

Ticket #19629: wp-sideload-media-id-ak.diff

File wp-sideload-media-id-ak.diff, 2.8 KB (added by alexkingorg, 12 years ago)

abstract out the sideloading of the image so the ID can be accessed

  • wp-admin/includes/media.php

     
    579579}
    580580
    581581/**
     582 * Download an image from the specified URL and attach it to a post, return the ID.
     583 *
     584 * @since 3.5.0
     585 *
     586 * @param string $file The URL of the image to download
     587 * @param int $post_id The post ID the media is to be associated with
     588 * @param string $desc Optional. Description of the image
     589 * @return int|WP_Error ID of attachment on success
     590 */
     591function media_sideload_image_id($file, $post_id, $desc = null) {
     592        if ( empty( $file ) ) {
     593                return new WP_Error( '', 'File URL cannot be empty.' );
     594        }
     595
     596        // Download file to temp location
     597        $tmp = download_url( $file );
     598
     599        // Set variables for storage
     600        // fix file filename for query strings
     601        preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
     602        $file_array['name'] = basename($matches[0]);
     603        $file_array['tmp_name'] = $tmp;
     604
     605        // If error storing temporarily, unlink
     606        if ( is_wp_error( $tmp ) ) {
     607                @unlink($file_array['tmp_name']);
     608                $file_array['tmp_name'] = '';
     609        }
     610
     611        return media_handle_sideload( $file_array, $post_id, $desc );
     612}
     613
     614/**
    582615 * Download an image from the specified URL and attach it to a post.
    583616 *
    584617 * @since 2.6.0
     
    589622 * @return string|WP_Error Populated HTML img tag on success
    590623 */
    591624function media_sideload_image($file, $post_id, $desc = null) {
    592         if ( ! empty($file) ) {
    593                 // Download file to temp location
    594                 $tmp = download_url( $file );
     625        if ( empty( $file ) ) {
     626                return new WP_Error( '', 'File URL cannot be empty.' );
     627        }
    595628
    596                 // Set variables for storage
    597                 // fix file filename for query strings
    598                 preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
    599                 $file_array['name'] = basename($matches[0]);
    600                 $file_array['tmp_name'] = $tmp;
     629        $id = media_sideload_image_id( $file, $post_id, $desc );
    601630
    602                 // If error storing temporarily, unlink
    603                 if ( is_wp_error( $tmp ) ) {
    604                         @unlink($file_array['tmp_name']);
    605                         $file_array['tmp_name'] = '';
    606                 }
     631        // If error storing permanently, unlink
     632        if ( is_wp_error( $id ) ) {
     633                @unlink( $file_array['tmp_name'] );
     634                return $id;
     635        }
    607636
    608                 // do the validation and storage stuff
    609                 $id = media_handle_sideload( $file_array, $post_id, $desc );
    610                 // If error storing permanently, unlink
    611                 if ( is_wp_error($id) ) {
    612                         @unlink($file_array['tmp_name']);
    613                         return $id;
    614                 }
     637        $src = wp_get_attachment_url( $id );
    615638
    616                 $src = wp_get_attachment_url( $id );
    617         }
    618 
    619639        // Finally check to make sure the file has been saved, then return the html
    620         if ( ! empty($src) ) {
    621                 $alt = isset($desc) ? esc_attr($desc) : '';
     640        if ( ! empty( $src ) ) {
     641                $alt = isset( $desc ) ? esc_attr( $desc ) : '';
    622642                $html = "<img src='$src' alt='$alt' />";
    623643                return $html;
    624644        }