WordPress.org

Make WordPress Core

Ticket #20409: 20409.patch

File 20409.patch, 4.2 KB (added by maxcutler, 6 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_meta( $post['ID'], '_thumbnail_id', true );
     600                if ( $thumbnail_id ) {
     601                        $thumbnail_size = 'thumbnail';
     602                        if ( current_theme_supports('post-thumbnail') )
     603                                $thumbnail_size = 'post-thumbnail';
     604                        $post_fields['post_thumbnail'] = $this->_prepare_media_item( get_post( $thumbnail_id ), $thumbnail_size );
     605                }
    600606
    601607                // Consider future posts as published
    602608                if ( $post_fields['post_status'] === 'future' )
     
    701707        }
    702708
    703709        /**
     710         * Prepares media item data for return in an XML-RPC object.
     711         *
     712         * @access protected
     713         *
     714         * @param object $media_item The unprepared media item data
     715         * @param string $size The image size to use for the thumbnail URL
     716         * @return array The prepared media item data
     717         */
     718        protected function _prepare_media_item( $media_item, $thumbnail_size='thumbnail' ) {
     719                $_media_item = array(
     720                        'attachment_id' => strval( $media_item->ID ),
     721                        'date_created_gmt' => $this->_convert_date_gmt( $media_item->post_date_gmt, $media_item->post_date ),
     722                        'parent' => $media_item->post_parent,
     723                        'link' => wp_get_attachment_url( $media_item->ID ),
     724                        'title' => $media_item->post_title,
     725                        'caption' => $media_item->post_excerpt,
     726                        'description' => $media_item->post_content,
     727                        'metadata' => wp_get_attachment_metadata( $media_item->ID ),
     728                );
     729
     730                $thumbnail_src = image_downsize( $media_item->ID, $thumbnail_size );
     731                if ( $thumbnail_src )
     732                        $_media_item['thumbnail'] = $thumbnail_src[0];
     733                else
     734                        $_media_item['thumbnail'] = $_media_item['link'];
     735
     736                return apply_filters( 'xmlrpc__prepare_media_item', $_media_item, $media_item, $thumbnail_size );
     737        }
     738
     739        /**
    704740         * Create a new post for any registered post type.
    705741         *
    706742         * @uses wp_insert_post()
     
    28202856                if ( ! $attachment = get_post($attachment_id) )
    28212857                        return new IXR_Error( 404, __( 'Invalid attachment ID.' ) );
    28222858
    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;
     2859                return $this->_prepare_media_item( $attachment );
    28432860        }
    28442861
    28452862        /**
     
    28662883         * @return array. Contains a collection of media items. See {@link wp_xmlrpc_server::wp_getMediaItem()} for a description of each item contents
    28672884         */
    28682885        function wp_getMediaLibrary($args) {
    2869                 $raw_args = $args;
    28702886                $this->escape($args);
    28712887
    28722888                $blog_id        = (int) $args[0];
     
    28902906                $attachments = get_posts( array('post_type' => 'attachment', 'post_parent' => $parent_id, 'offset' => $offset, 'numberposts' => $number, 'post_mime_type' => $mime_type ) );
    28912907                $num_attachments = count($attachments);
    28922908
    2893                 if ( ! $num_attachments )
    2894                         return array();
    2895 
    28962909                $attachments_struct = array();
    28972910
    28982911                foreach ($attachments as $attachment )
    2899                         $attachments_struct[] = $this->wp_getMediaItem( array( $raw_args[0], $raw_args[1], $raw_args[2], $attachment->ID ) );
     2912                        $attachments_struct[] = $this->_prepare_media_item( $attachment );
    29002913
    29012914                return $attachments_struct;
    29022915        }