Changeset 37700 for trunk/src/wp-includes/class-wp-customize-manager.php
- Timestamp:
- 06/14/2016 07:16:54 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-customize-manager.php
r37539 r37700 826 826 */ 827 827 public function customize_preview_settings() { 828 $setting_validities = $this->validate_setting_values( $this->unsanitized_post_values() ); 829 $exported_setting_validities = array_map( array( $this, 'prepare_setting_validity_for_js' ), $setting_validities ); 830 828 831 $settings = array( 829 832 'theme' => array( … … 838 841 'activeSections' => array(), 839 842 'activeControls' => array(), 843 'settingValidities' => $exported_setting_validities, 840 844 'nonce' => $this->get_nonces(), 841 845 'l10n' => array( … … 992 996 * @access public 993 997 * @see WP_REST_Request::has_valid_params() 998 * @see WP_Customize_Setting::validate() 994 999 * 995 1000 * @param array $setting_values Mapping of setting IDs to values to sanitize and validate. 996 * @return array Empty array if all settings were valid. One or more instances of `WP_Error` if any were invalid.1001 * @return array Mapping of setting IDs to return value of validate method calls, either `true` or `WP_Error`. 997 1002 */ 998 1003 public function validate_setting_values( $setting_values ) { 999 $validit y_errors = array();1004 $validities = array(); 1000 1005 foreach ( $setting_values as $setting_id => $unsanitized_value ) { 1001 1006 $setting = $this->get_setting( $setting_id ); … … 1007 1012 $validity = new WP_Error( 'invalid_value', __( 'Invalid value.' ) ); 1008 1013 } 1009 if ( is_wp_error( $validity ) ) { 1010 $validity_errors[ $setting_id ] = $validity; 1011 } 1012 } 1013 return $validity_errors; 1014 $validities[ $setting_id ] = $validity; 1015 } 1016 return $validities; 1017 } 1018 1019 /** 1020 * Prepare setting validity for exporting to the client (JS). 1021 * 1022 * Converts `WP_Error` instance into array suitable for passing into the 1023 * `wp.customize.Notification` JS model. 1024 * 1025 * @since 4.6.0 1026 * @access public 1027 * 1028 * @param true|WP_Error $validity Setting validity. 1029 * @return true|array If `$validity` was `WP_Error` then array mapping the error 1030 * codes to their respective `message` and `data` to pass 1031 * into the `wp.customize.Notification` JS model. 1032 */ 1033 public function prepare_setting_validity_for_js( $validity ) { 1034 if ( is_wp_error( $validity ) ) { 1035 $notification = array(); 1036 foreach ( $validity->errors as $error_code => $error_messages ) { 1037 $error_data = $validity->get_error_data( $error_code ); 1038 if ( is_null( $error_data ) ) { 1039 $error_data = array(); 1040 } 1041 $error_data = array_merge( 1042 $error_data, 1043 array( 'from_server' => true ) 1044 ); 1045 $notification[ $error_code ] = array( 1046 'message' => join( ' ', $error_messages ), 1047 'data' => $error_data, 1048 ); 1049 } 1050 return $notification; 1051 } else { 1052 return true; 1053 } 1014 1054 } 1015 1055 … … 1042 1082 1043 1083 // Validate settings. 1044 $validity_errors = $this->validate_setting_values( $this->unsanitized_post_values() ); 1045 $invalid_count = count( $validity_errors ); 1046 if ( $invalid_count > 0 ) { 1047 $settings_errors = array(); 1048 foreach ( $validity_errors as $setting_id => $validity_error ) { 1049 $settings_errors[ $setting_id ] = array(); 1050 foreach ( $validity_error->errors as $error_code => $error_messages ) { 1051 $settings_errors[ $setting_id ][ $error_code ] = array( 1052 'message' => join( ' ', $error_messages ), 1053 'data' => $validity_error->get_error_data( $error_code ), 1054 ); 1055 } 1056 } 1084 $setting_validities = $this->validate_setting_values( $this->unsanitized_post_values() ); 1085 $invalid_setting_count = count( array_filter( $setting_validities, 'is_wp_error' ) ); 1086 $exported_setting_validities = array_map( array( $this, 'prepare_setting_validity_for_js' ), $setting_validities ); 1087 if ( $invalid_setting_count > 0 ) { 1057 1088 $response = array( 1058 ' invalid_settings' => $settings_errors,1059 'message' => sprintf( _n( 'There is %s invalid setting.', 'There are %s invalid settings.', $invalid_ count ), number_format_i18n( $invalid_count ) ),1089 'setting_validities' => $exported_setting_validities, 1090 'message' => sprintf( _n( 'There is %s invalid setting.', 'There are %s invalid settings.', $invalid_setting_count ), number_format_i18n( $invalid_setting_count ) ), 1060 1091 ); 1061 1092 … … 1098 1129 do_action( 'customize_save_after', $this ); 1099 1130 1131 $data = array( 1132 'setting_validities' => $exported_setting_validities, 1133 ); 1134 1100 1135 /** 1101 1136 * Filters response data for a successful customize_save AJAX request. … … 1109 1144 * @param WP_Customize_Manager $this WP_Customize_Manager instance. 1110 1145 */ 1111 $response = apply_filters( 'customize_save_response', array(), $this );1146 $response = apply_filters( 'customize_save_response', $data, $this ); 1112 1147 wp_send_json_success( $response ); 1113 1148 }
Note: See TracChangeset
for help on using the changeset viewer.