Make WordPress Core

Changeset 28854


Ignore:
Timestamp:
06/26/2014 05:42:17 PM (10 years ago)
Author:
SergeyBiryukov
Message:

XML-RPC: Make sure wp.newPost does not produce a fatal error when a post_date field is included in the data.

props dllh.
fixes #28601.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-xmlrpc-server.php

    r28849 r28854  
    11031103            return $this->error;
    11041104
     1105        // convert the date field back to IXR form
     1106        if ( isset( $content_struct['post_date'] ) ) {
     1107            $content_struct['post_date'] = $this->_convert_date( $content_struct['post_date'] );
     1108        }
     1109
     1110        // ignore the existing GMT date if it is empty or a non-GMT date was supplied in $content_struct,
     1111        // since _insert_post will ignore the non-GMT date if the GMT date is set
     1112        if ( isset( $content_struct['post_date_gmt'] ) ) {
     1113            if ( $content_struct['post_date_gmt'] == '0000-00-00 00:00:00' || isset( $content_struct['post_date'] ) ) {
     1114                unset( $content_struct['post_date_gmt'] );
     1115            } else {
     1116                $content_struct['post_date_gmt'] = $this->_convert_date( $content_struct['post_date_gmt'] );
     1117            }
     1118        }
     1119
    11051120        /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
    11061121        do_action( 'xmlrpc_call', 'wp.newPost' );
  • trunk/tests/phpunit/tests/xmlrpc/wp/newPost.php

    r25002 r28854  
    306306    }
    307307
     308    /**
     309     * @ticket 28601
     310     */
     311    function test_invalid_post_date_does_not_fatal() {
     312        $this->make_user_by_role( 'author' );
     313        $date_string = '2014-01-01 10:10:10';
     314        $post = array( 'post_title' => 'test', 'post_content' => 'test', 'post_date' => $date_string );
     315        $result = $this->myxmlrpcserver->wp_newPost( array( 1, 'author', 'author', $post ) );
     316        $fetched_post = get_post( $result );
     317        $this->assertStringMatchesFormat( '%d', $result );
     318    }
     319
     320    /**
     321     * @ticket 28601
     322     */
     323    function test_invalid_post_date_gmt_does_not_fatal() {
     324        $this->make_user_by_role( 'author' );
     325        $date_string = 'invalid date';
     326        $post = array( 'post_title' => 'test', 'post_content' => 'test', 'post_date_gmt' => $date_string );
     327        $result = $this->myxmlrpcserver->wp_newPost( array( 1, 'author', 'author', $post ) );
     328        $fetched_post = get_post( $result );
     329        $this->assertStringMatchesFormat( '%d', $result );
     330    }
     331
    308332}
Note: See TracChangeset for help on using the changeset viewer.