Date/Time: XML-RPC: Сalculate the proper offset for GMT in `wp.newPost`, `wp.editComment`, `mw.newPost`, `mw.editPost` when `post_date` or `comment_date` is set.

Previously, `post_date` or `comment_date` was assumed to be GMT, which is only true if the timezone string for the site matches GMT.

Add unit tests.

Props Rarst, smerriman, justdaiv, wonderboymusic, noyle.
Merges [46864] to the 5.3 branch.
Fixes #30429.
Built from https://develop.svn.wordpress.org/branches/5.3@46865


git-svn-id: http://core.svn.wordpress.org/branches/5.3@46665 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2019-12-09 20:08:06 +00:00
parent e5f1a70a87
commit 1cdaf142f2
2 changed files with 9 additions and 9 deletions

View File

@ -1469,8 +1469,8 @@ class wp_xmlrpc_server extends IXR_Server {
$post_data['edit_date'] = false; $post_data['edit_date'] = false;
if ( ! empty( $dateCreated ) ) { if ( ! empty( $dateCreated ) ) {
$post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); $post_data['post_date'] = iso8601_to_datetime( $dateCreated );
$post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'gmt' );
// Flag the post date to be edited. // Flag the post date to be edited.
$post_data['edit_date'] = true; $post_data['edit_date'] = true;
@ -3762,8 +3762,8 @@ class wp_xmlrpc_server extends IXR_Server {
if ( ! empty( $content_struct['date_created_gmt'] ) ) { if ( ! empty( $content_struct['date_created_gmt'] ) ) {
// We know this is supposed to be GMT, so we're going to slap that Z on there by force // We know this is supposed to be GMT, so we're going to slap that Z on there by force
$dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z'; $dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
$comment['comment_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); $comment['comment_date'] = get_date_from_gmt( $dateCreated );
$comment['comment_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); $comment['comment_date_gmt'] = iso8601_to_datetime( $dateCreated, 'gmt' );
} }
if ( isset( $content_struct['content'] ) ) { if ( isset( $content_struct['content'] ) ) {
@ -5481,8 +5481,8 @@ class wp_xmlrpc_server extends IXR_Server {
} }
if ( ! empty( $dateCreated ) ) { if ( ! empty( $dateCreated ) ) {
$post_date = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); $post_date = iso8601_to_datetime( $dateCreated );
$post_date_gmt = iso8601_to_datetime( $dateCreated, 'GMT' ); $post_date_gmt = iso8601_to_datetime( $dateCreated, 'gmt' );
} else { } else {
$post_date = ''; $post_date = '';
$post_date_gmt = ''; $post_date_gmt = '';
@ -5870,8 +5870,8 @@ class wp_xmlrpc_server extends IXR_Server {
$edit_date = false; $edit_date = false;
if ( ! empty( $dateCreated ) ) { if ( ! empty( $dateCreated ) ) {
$post_date = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); $post_date = iso8601_to_datetime( $dateCreated );
$post_date_gmt = iso8601_to_datetime( $dateCreated, 'GMT' ); $post_date_gmt = iso8601_to_datetime( $dateCreated, 'gmt' );
// Flag the post date to be edited. // Flag the post date to be edited.
$edit_date = true; $edit_date = true;

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.3.1-alpha-46863'; $wp_version = '5.3.1-alpha-46865';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.