From a00df382a395b886605ac33112cf8b3c587f52d7 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Mon, 7 Oct 2013 18:35:09 +0000 Subject: [PATCH] Move the revisions upgrade handler to POST, to avoid esoteric metadata stomping. props SergeyBiryukov. see #25023. for trunk. Built from https://develop.svn.wordpress.org/trunk@25719 git-svn-id: http://core.svn.wordpress.org/trunk@25632 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/edit-form-advanced.php | 4 ---- wp-admin/includes/post.php | 9 +++++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php index 11ab30a087..c11682def2 100644 --- a/wp-admin/edit-form-advanced.php +++ b/wp-admin/edit-form-advanced.php @@ -114,10 +114,6 @@ $publish_callback_args = null; if ( post_type_supports($post_type, 'revisions') && 'auto-draft' != $post->post_status ) { $revisions = wp_get_post_revisions( $post_ID ); - // Check if the revisions have been upgraded - if ( ! empty( $revisions ) && _wp_get_post_revision_version( end( $revisions ) ) < 1 ) - _wp_upgrade_revisions_of_post( $post, $revisions ); - // We should aim to show the revisions metabox only when there are revisions. if ( count( $revisions ) > 1 ) { reset( $revisions ); // Reset pointer for key() diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index d01a26b707..859d73a227 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -178,6 +178,15 @@ function edit_post( $post_data = null ) { wp_die( __('You are not allowed to edit this post.' )); } + if ( post_type_supports( $ptype->name, 'revisions' ) ) { + $revisions = wp_get_post_revisions( $post_ID, array( 'order' => 'ASC', 'posts_per_page' => 1 ) ); + $revision = current( $revisions ); + + // Check if the revisions have been upgraded + if ( $revisions && _wp_get_post_revision_version( $revision ) < 1 ) + _wp_upgrade_revisions_of_post( $post, wp_get_post_revisions( $post_ID ) ); + } + $post_data = _wp_translate_postdata( true, $post_data ); if ( is_wp_error($post_data) ) wp_die( $post_data->get_error_message() );