From 9cf6b6f2d08c4cee5591310c55b86a632d590ca5 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Sat, 26 Sep 2015 03:37:53 +0000 Subject: [PATCH] XML-RPC: In `wp_xmlrpc_server::mw_newPost()`, if `$dateCreated` is not set, don't set `post_date` and `post_date_gmt`. It calls `wp_insert_post()`, which will handle it correctly. The problem was drafts being created and GMT date being set. It shouldn't be. Adds unit test. Fixes #16985. git-svn-id: https://develop.svn.wordpress.org/trunk@34572 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-xmlrpc-server.php | 4 ++-- tests/phpunit/tests/xmlrpc/mw/newPost.php | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/class-wp-xmlrpc-server.php b/src/wp-includes/class-wp-xmlrpc-server.php index 3011b7a8e3..8ef72f89bc 100644 --- a/src/wp-includes/class-wp-xmlrpc-server.php +++ b/src/wp-includes/class-wp-xmlrpc-server.php @@ -4931,8 +4931,8 @@ class wp_xmlrpc_server extends IXR_Server { $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated)); $post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT'); } else { - $post_date = current_time('mysql'); - $post_date_gmt = current_time('mysql', 1); + $post_date = ''; + $post_date_gmt = ''; } $post_category = array(); diff --git a/tests/phpunit/tests/xmlrpc/mw/newPost.php b/tests/phpunit/tests/xmlrpc/mw/newPost.php index b227cb6594..34b34d64e8 100644 --- a/tests/phpunit/tests/xmlrpc/mw/newPost.php +++ b/tests/phpunit/tests/xmlrpc/mw/newPost.php @@ -159,4 +159,25 @@ class Tests_XMLRPC_mw_newPost extends WP_XMLRPC_UnitTestCase { $this->assertEquals( 'page', $out->post_type ); } + + /** + * @ticket 16985 + */ + function test_draft_post_date() { + $this->make_user_by_role( 'editor' ); + + $post = array( + 'title' => 'Test', + 'post_type' => 'post', + 'post_status' => 'draft' + ); + $result = $this->myxmlrpcserver->mw_newPost( array( 1, 'editor', 'editor', $post ) ); + $this->assertNotInstanceOf( 'IXR_Error', $result ); + $this->assertStringMatchesFormat( '%d', $result ); + + $out = get_post( $result ); + $this->assertEquals( 'post', $out->post_type ); + $this->assertEquals( 'draft', $out->post_status ); + $this->assertEquals( '0000-00-00 00:00:00', $out->post_date_gmt ); + } }