WordPress.org

Make WordPress Core

Ticket #42450: 42450.2.diff

File 42450.2.diff, 4.2 KB (added by dlh, 3 years ago)
  • src/wp-includes/class-wp-customize-manager.php

    diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
    index fe22d87a06..b843b513aa 100644
    final class WP_Customize_Manager { 
    11361136                if ( ! $changeset_post_id ) {
    11371137                        $this->_changeset_data = array();
    11381138                } else {
    1139                         if ( $this->autosaved() ) {
     1139                        if ( $this->autosaved() && is_user_logged_in() ) {
    11401140                                $autosave_post = wp_get_post_autosave( $changeset_post_id, get_current_user_id() );
    11411141                                if ( $autosave_post ) {
    11421142                                        $data = $this->get_changeset_post_data( $autosave_post->ID );
    final class WP_Customize_Manager { 
    28972897                                $post_array['edit_date'] = true; // Prevent date clearing.
    28982898                                $r                       = wp_update_post( wp_slash( $post_array ), true );
    28992899
    2900                                 // Delete autosave revision when the changeset is updated.
    2901                                 $autosave_draft = wp_get_post_autosave( $changeset_post_id, get_current_user_id() );
    2902                                 if ( $autosave_draft ) {
    2903                                         wp_delete_post( $autosave_draft->ID, true );
     2900                                // Delete autosave revision for user when the changeset is updated.
     2901                                if ( ! empty( $args['user_id'] ) ) {
     2902                                        $autosave_draft = wp_get_post_autosave( $changeset_post_id, $args['user_id'] );
     2903                                        if ( $autosave_draft ) {
     2904                                                wp_delete_post( $autosave_draft->ID, true );
     2905                                        }
    29042906                                }
    29052907                        }
    29062908                } else {
    final class WP_Customize_Manager { 
    35323534         * @since 4.9.0
    35333535         */
    35343536        public function handle_dismiss_autosave_or_lock_request() {
     3537                // Calls to dismiss_user_auto_draft_changesets() and wp_get_post_autosave() require non-zero get_current_user_id().
     3538                if ( ! is_user_logged_in() ) {
     3539                        wp_send_json_error( 'unauthenticated', 401 );
     3540                }
     3541
    35353542                if ( ! $this->is_preview() ) {
    35363543                        wp_send_json_error( 'not_preview', 400 );
    35373544                }
    final class WP_Customize_Manager { 
    46194626                $changeset_post_id       = $this->changeset_post_id();
    46204627                if ( ! $this->saved_starter_content_changeset && ! $this->autosaved() ) {
    46214628                        if ( $changeset_post_id ) {
    4622                                 $autosave_revision_post = wp_get_post_autosave( $changeset_post_id, get_current_user_id() );
     4629                                if ( is_user_logged_in() ) {
     4630                                        $autosave_revision_post = wp_get_post_autosave( $changeset_post_id, get_current_user_id() );
     4631                                }
    46234632                        } else {
    46244633                                $autosave_autodraft_posts = $this->get_changeset_posts(
    46254634                                        array(
  • tests/phpunit/tests/ajax/CustomizeManager.php

    diff --git tests/phpunit/tests/ajax/CustomizeManager.php tests/phpunit/tests/ajax/CustomizeManager.php
    index 32d17e891f..933b9920ec 100644
    class Tests_Ajax_CustomizeManager extends WP_Ajax_UnitTestCase { 
    552552         * @covers WP_Customize_Manager::dismiss_user_auto_draft_changesets()
    553553         */
    554554        public function test_handle_dismiss_autosave_or_lock_request() {
    555                 $uuid         = wp_generate_uuid4();
    556                 $wp_customize = $this->set_up_valid_state( $uuid );
     555                $uuid          = wp_generate_uuid4();
     556                $wp_customize  = $this->set_up_valid_state( $uuid );
     557                $valid_user_id = get_current_user_id();
     558
     559                // Temporarily remove user to test requirement that user is logged in. See #42450.
     560                wp_set_current_user( 0 );
     561                $this->make_ajax_call( 'customize_dismiss_autosave_or_lock' );
     562                $this->assertFalse( $this->_last_response_parsed['success'] );
     563                $this->assertEquals( 'unauthenticated', $this->_last_response_parsed['data'] );
     564                wp_set_current_user( $valid_user_id );
    557565
    558566                $this->make_ajax_call( 'customize_dismiss_autosave_or_lock' );
    559567                $this->assertFalse( $this->_last_response_parsed['success'] );
  • tests/phpunit/tests/customize/manager.php

    diff --git tests/phpunit/tests/customize/manager.php tests/phpunit/tests/customize/manager.php
    index 5af7826d0c..cdadf019f4 100644
    class Tests_WP_Customize_Manager extends WP_UnitTestCase { 
    524524                        ),
    525525                        wp_list_pluck( $wp_customize->changeset_data(), 'value' )
    526526                );
     527
     528                // If there is no user, don't fetch the most recent autosave. See #42450.
     529                wp_set_current_user( 0 );
     530                $wp_customize = new WP_Customize_Manager(
     531                        array(
     532                                'changeset_uuid' => $uuid,
     533                                'autosaved'      => true,
     534                        )
     535                );
     536                $this->assertEquals( $data, $wp_customize->changeset_data() );
    527537        }
    528538
    529539        /**