WordPress.org

Make WordPress Core

Ticket #15405: post-format-rpc.diff

File post-format-rpc.diff, 4.6 KB (added by josephscott, 7 years ago)
  • class-wp-xmlrpc-server.php

     
    6363                        'wp.getCommentStatusList' => 'this:wp_getCommentStatusList', 
    6464                        'wp.getMediaItem'               => 'this:wp_getMediaItem', 
    6565                        'wp.getMediaLibrary'    => 'this:wp_getMediaLibrary', 
     66                        'wp.getPostFormats'     => 'this:wp_getPostFormats', 
    6667 
    6768                        // Blogger API 
    6869                        'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs', 
     
    16011602 
    16021603                return $attachments_struct; 
    16031604        } 
     1605         
     1606        /**  
     1607          * Retrives a list of post formats used by the site  
     1608          *  
     1609          * @since 3.1 
     1610          *  
     1611          * @param array $args Method parameters. Contains:  
     1612          *  - blog_id  
     1613          *  - username  
     1614          *  - password  
     1615          * @return array  
     1616          */  
     1617        function wp_getPostFormats( $args ) { 
     1618                $this->escape( $args ); 
    16041619 
     1620                $blog_id = (int) $args[0]; 
     1621                $username = $args[1]; 
     1622                $password = $args[2]; 
     1623 
     1624                if ( !$user = $this->login( $username, $password ) ) 
     1625                        return $this->error; 
     1626             
     1627                do_action( 'xmlrpc_call', 'wp.getPostFormats' ); 
     1628                return get_post_format_strings(); 
     1629        }  
     1630 
    16051631        /* Blogger API functions. 
    16061632         * specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/ 
    16071633         */ 
     
    20832109                if ( !current_user_can( $cap ) ) 
    20842110                        return new IXR_Error( 401, $error_message ); 
    20852111 
     2112                // Check for a valid post format if one was given 
     2113                if ( isset( $content_struct['wp_post_format'] ) ) {  
     2114                        $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] );  
     2115                        if ( !array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { 
     2116                                return new IXR_Error( 404, __( 'Invalid post format' ) ); 
     2117                        } 
     2118                } 
     2119 
    20862120                // Let WordPress generate the post_name (slug) unless 
    20872121                // one has been provided. 
    20882122                $post_name = ""; 
     
    22662300                $this->add_enclosure_if_new($post_ID, $content_struct['enclosure']); 
    22672301 
    22682302                $this->attach_uploads( $post_ID, $post_content ); 
     2303                 
     2304                // Handle post formats if assigned, value is validated earlier 
     2305                // in this function 
     2306                if ( isset( $content_struct['wp_post_format'] ) ) 
     2307                        wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );  
    22692308 
    22702309                logIO('O', "Posted ! ID: $post_ID"); 
    22712310 
     
    23582397                if ( !current_user_can( $cap ) ) 
    23592398                        return new IXR_Error( 401, $error_message ); 
    23602399 
     2400                // Check for a valid post format if one was given 
     2401                if ( isset( $content_struct['wp_post_format'] ) ) {  
     2402                        $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] );  
     2403                        if ( !array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { 
     2404                                return new IXR_Error( 404, __( 'Invalid post format' ) ); 
     2405                        } 
     2406                } 
     2407 
    23612408                $postdata = wp_get_single_post($post_ID, ARRAY_A); 
    23622409 
    23632410                // If there is no post data for the give post id, stop 
     
    25522599                $this->add_enclosure_if_new($post_ID, $content_struct['enclosure']); 
    25532600 
    25542601                $this->attach_uploads( $ID, $post_content ); 
     2602                 
     2603                // Handle post formats if assigned, validation is handled 
     2604                // earlier in this function 
     2605                if ( isset( $content_struct['wp_post_format'] ) ) 
     2606                        wp_set_post_terms( $post_ID, array( 'post-format-' . $content_struct['wp_post_format'] ), 'post_format' );  
    25552607 
    25562608                logIO('O',"(MW) Edited ! ID: $post_ID"); 
    25572609 
     
    26192671                        // Consider future posts as published 
    26202672                        if ( $postdata['post_status'] === 'future' ) 
    26212673                                $postdata['post_status'] = 'publish'; 
     2674                                 
     2675                        // Get post format  
     2676                        $post_format = get_post_format( $post_ID ); 
     2677                        if ( empty( $post_format ) ) 
     2678                                $post_format = 'default'; 
    26222679 
    26232680                        $sticky = false; 
    26242681                        if ( is_sticky( $post_ID ) ) 
     
    26602717                                'date_created_gmt' => new IXR_Date($post_date_gmt), 
    26612718                                'post_status' => $postdata['post_status'], 
    26622719                                'custom_fields' => $this->get_custom_fields($post_ID), 
     2720                                'wp_post_format' => $post_format, 
    26632721                                'sticky' => $sticky 
    26642722                        ); 
    26652723 
     
    27402798                        // Consider future posts as published 
    27412799                        if ( $entry['post_status'] === 'future' ) 
    27422800                                $entry['post_status'] = 'publish'; 
     2801                                 
     2802                        // Get post format  
     2803                        $post_format = get_post_format( $entry['ID'] ); 
     2804                        if ( empty( $post_format ) ) 
     2805                                $post_format = 'default'; 
    27432806 
    27442807                        $struct[] = array( 
    27452808                                'dateCreated' => new IXR_Date($post_date), 
     
    27632826                                'wp_author_display_name' => $author->display_name, 
    27642827                                'date_created_gmt' => new IXR_Date($post_date_gmt), 
    27652828                                'post_status' => $entry['post_status'], 
    2766                                 'custom_fields' => $this->get_custom_fields($entry['ID']) 
     2829                                'custom_fields' => $this->get_custom_fields($entry['ID']), 
     2830                                'wp_post_format' => $post_format 
    27672831                        ); 
    27682832 
    27692833                }