Make WordPress Core

Ticket #38865: 38865.0.diff

File 38865.0.diff, 1.6 KB (added by westonruter, 8 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 d047620..b4a01e6 100644
    final class WP_Customize_Manager { 
    20102010                 * previous saved settings and overriding the associated user_id if they made no change.
    20112011                 */
    20122012                $changed_setting_ids = array();
     2013                $unchanged_incoming_setting_ids = array();
    20132014                foreach ( $post_values as $setting_id => $setting_value ) {
    20142015                        $setting = $this->get_setting( $setting_id );
    20152016
    final class WP_Customize_Manager { 
    20282029                        );
    20292030                        if ( $is_value_changed ) {
    20302031                                $changed_setting_ids[] = $setting_id;
     2032                        } else {
     2033                                $is_unchanged_incoming_value = (
     2034                                        isset( $args['data'][ $prefixed_setting_id ] )
     2035                                        &&
     2036                                        array_key_exists( 'value', $args['data'][ $prefixed_setting_id ] )
     2037                                        &&
     2038                                        $args['data'][ $prefixed_setting_id ]['value'] === $setting_value
     2039                                );
     2040                                if ( $is_unchanged_incoming_value ) {
     2041                                        $unchanged_incoming_setting_ids[] = $setting_id;
     2042                                }
    20312043                        }
    20322044                }
    20332045                $post_values = wp_array_slice_assoc( $post_values, $changed_setting_ids );
    final class WP_Customize_Manager { 
    20642076                        return new WP_Error( 'transaction_fail', '', $response );
    20652077                }
    20662078
     2079                // Ensure that any unchanged settings that were passed in among the data are marked as valid.
     2080                $setting_validities = array_merge(
     2081                        array_fill_keys( $unchanged_incoming_setting_ids, true ),
     2082                        $setting_validities
     2083                );
     2084
    20672085                $response = array(
    20682086                        'setting_validities' => $setting_validities,
    20692087                );