WordPress.org

Make WordPress Core

Ticket #20409: 20409.2.patch

File 20409.2.patch, 5.0 KB (added by maxcutler, 3 years ago)
  • wp-includes/class-wp-xmlrpc-server.php

     
    594594                        'sticky'            => ( $post['post_type'] === 'post' && is_sticky( $post['ID'] ) ), 
    595595                ); 
    596596 
    597                 // 
    598                 $post_fields['post_thumbnail']     = get_post_meta( $post['ID'], '_thumbnail_id', true ); 
    599                 $post_fields['post_thumbnail_url'] = wp_get_attachment_url( $post_fields['post_thumbnail'] ); 
     597                // Thumbnail 
     598                $post_fields['post_thumbnail'] = array(); 
     599                $thumbnail_id = get_post_thumbnail_id( $post['ID'] ); 
     600                if ( $thumbnail_id ) { 
     601                        $thumbnail_size = current_theme_supports('post-thumbnail') ? 'post-thumbnail' : 'thumbnail'; 
     602                        $post_fields['post_thumbnail'] = $this->_prepare_media_item( get_post( $thumbnail_id ), $thumbnail_size ); 
     603                } 
    600604 
    601605                // Consider future posts as published 
    602606                if ( $post_fields['post_status'] === 'future' ) 
     
    701705        } 
    702706 
    703707        /** 
     708         * Prepares media item data for return in an XML-RPC object. 
     709         * 
     710         * @access protected 
     711         * 
     712         * @param object $media_item The unprepared media item data 
     713         * @param string $size The image size to use for the thumbnail URL 
     714         * @return array The prepared media item data 
     715         */ 
     716        protected function _prepare_media_item( $media_item, $thumbnail_size='thumbnail' ) { 
     717                $_media_item = array( 
     718                        'attachment_id' => strval( $media_item->ID ), 
     719                        'date_created_gmt' => $this->_convert_date_gmt( $media_item->post_date_gmt, $media_item->post_date ), 
     720                        'parent' => $media_item->post_parent, 
     721                        'link' => wp_get_attachment_url( $media_item->ID ), 
     722                        'title' => $media_item->post_title, 
     723                        'caption' => $media_item->post_excerpt, 
     724                        'description' => $media_item->post_content, 
     725                        'metadata' => wp_get_attachment_metadata( $media_item->ID ), 
     726                ); 
     727 
     728                $thumbnail_src = image_downsize( $media_item->ID, $thumbnail_size ); 
     729                if ( $thumbnail_src ) 
     730                        $_media_item['thumbnail'] = $thumbnail_src[0]; 
     731                else 
     732                        $_media_item['thumbnail'] = $_media_item['link']; 
     733 
     734                return apply_filters( 'xmlrpc__prepare_media_item', $_media_item, $media_item, $thumbnail_size ); 
     735        } 
     736 
     737        /** 
    704738         * Create a new post for any registered post type. 
    705739         * 
    706740         * @uses wp_insert_post() 
     
    28202854                if ( ! $attachment = get_post($attachment_id) ) 
    28212855                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); 
    28222856 
    2823                 // Format page date. 
    2824                 $attachment_date = $this->_convert_date( $attachment->post_date ); 
    2825                 $attachment_date_gmt = $this->_convert_date_gmt( $attachment->post_date_gmt, $attachment->post_date ); 
    2826  
    2827                 $link = wp_get_attachment_url($attachment->ID); 
    2828                 $thumbnail_link = wp_get_attachment_thumb_url($attachment->ID); 
    2829  
    2830                 $attachment_struct = array( 
    2831                         'date_created_gmt'              => $attachment_date_gmt, 
    2832                         'parent'                                => $attachment->post_parent, 
    2833                         'link'                                  => $link, 
    2834                         'thumbnail'                             => $thumbnail_link, 
    2835                         'title'                                 => $attachment->post_title, 
    2836                         'caption'                               => $attachment->post_excerpt, 
    2837                         'description'                   => $attachment->post_content, 
    2838                         'metadata'                              => wp_get_attachment_metadata($attachment->ID), 
    2839                         'attachment_id'                 => (string) $attachment->ID 
    2840                 ); 
    2841  
    2842                 return $attachment_struct; 
     2857                return $this->_prepare_media_item( $attachment ); 
    28432858        } 
    28442859 
    28452860        /** 
     
    28662881         * @return array. Contains a collection of media items. See {@link wp_xmlrpc_server::wp_getMediaItem()} for a description of each item contents 
    28672882         */ 
    28682883        function wp_getMediaLibrary($args) { 
    2869                 $raw_args = $args; 
    28702884                $this->escape($args); 
    28712885 
    28722886                $blog_id        = (int) $args[0]; 
     
    28882902                $number = ( isset($struct['number']) ) ? absint($struct['number']) : -1 ; 
    28892903 
    28902904                $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) ); 
    2891                 $num_attachments = count($attachments); 
    28922905 
    2893                 if ( ! $num_attachments ) 
    2894                         return array(); 
    2895  
    28962906                $attachments_struct = array(); 
    28972907 
    28982908                foreach ($attachments as $attachment ) 
    2899                         $attachments_struct[] = $this->wp_getMediaItem( array( $raw_args[0], $raw_args[1], $raw_args[2], $attachment->ID ) ); 
     2909                        $attachments_struct[] = $this->_prepare_media_item( $attachment ); 
    29002910 
    29012911                return $attachments_struct; 
    29022912        } 
     
    42104220 
    42114221                        if ( !empty($enclosure) ) $resp['enclosure'] = $enclosure; 
    42124222 
    4213                         $resp['wp_post_thumbnail'] = get_post_meta( $postdata['ID'], '_thumbnail_id', true ); 
    4214                         $resp['wp_post_thumbnail_url'] = wp_get_attachment_url( $resp['wp_post_thumbnail'] ); 
     4223                        $resp['wp_post_thumbnail'] = get_post_thumbnail_id( $postdata['ID'] ); 
    42154224 
    42164225                        return $resp; 
    42174226                } else { 
     
    43224331                        ); 
    43234332 
    43244333                        $entry_index = count( $struct ) - 1; 
    4325                         $struct[ $entry_index ][ 'wp_post_thumbnail' ]     = get_post_meta( $entry['ID'], '_thumbnail_id', true ); 
    4326                         $struct[ $entry_index ][ 'wp_post_thumbnail_url' ] = wp_get_attachment_url( $struct[ $entry_index ][ 'wp_post_thumbnail' ] ); 
     4334                        $struct[ $entry_index ][ 'wp_post_thumbnail' ] = get_post_thumbnail_id( $entry['ID'] ); 
    43274335                } 
    43284336 
    43294337                $recent_posts = array();