WordPress.org

Make WordPress Core

Ticket #15405: post-format-rpc.diff

File post-format-rpc.diff, 4.6 KB (added by josephscott, 8 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                }