Changeset 38765
- Timestamp:
- 10/09/2016 08:07:16 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-customize-manager.php
r38649 r38765 1004 1004 } 1005 1005 $validity = $setting->validate( $unsanitized_value ); 1006 if ( ! is_wp_error( $validity ) ) { 1007 /** This filter is documented in wp-includes/class-wp-customize-setting.php */ 1008 $late_validity = apply_filters( "customize_validate_{$setting->id}", new WP_Error(), $unsanitized_value, $setting ); 1009 if ( ! empty( $late_validity->errors ) ) { 1010 $validity = $late_validity; 1011 } 1012 } 1006 1013 if ( ! is_wp_error( $validity ) ) { 1007 1014 $value = $setting->sanitize( $unsanitized_value ); -
trunk/tests/phpunit/tests/customize/manager.php
r38624 r38765 277 277 $this->assertEquals( 'invalid_value_in_validate', $error->get_error_code() ); 278 278 $this->assertEquals( array( 'source' => 'filter_customize_validate_foo' ), $error->get_error_data() ); 279 } 280 281 /** 282 * Test WP_Customize_Manager::validate_setting_values(). 283 * 284 * @ticket 37638 285 * @covers WP_Customize_Manager::validate_setting_values() 286 */ 287 function test_late_validate_setting_values() { 288 $setting = new Test_Setting_Without_Applying_Validate_Filter( $this->manager, 'required' ); 289 $this->manager->add_setting( $setting ); 290 291 $this->assertInstanceOf( 'WP_Error', $setting->validate( '' ) ); 292 $setting_validities = $this->manager->validate_setting_values( array( $setting->id => '' ) ); 293 $this->assertInstanceOf( 'WP_Error', $setting_validities[ $setting->id ] ); 294 295 $this->assertTrue( $setting->validate( 'ok' ) ); 296 $setting_validities = $this->manager->validate_setting_values( array( $setting->id => 'ok' ) ); 297 $this->assertTrue( $setting_validities[ $setting->id ] ); 298 299 add_filter( "customize_validate_{$setting->id}", array( $this, 'late_validate_length' ), 10, 3 ); 300 $this->assertTrue( $setting->validate( 'bad' ) ); 301 $setting_validities = $this->manager->validate_setting_values( array( $setting->id => 'bad' ) ); 302 $validity = $setting_validities[ $setting->id ]; 303 $this->assertInstanceOf( 'WP_Error', $validity ); 304 $this->assertEquals( 'minlength', $validity->get_error_code() ); 305 } 306 307 /** 308 * Add a length constraint to a setting. 309 * 310 * Adds minimum-length error code if the length is less than 10. 311 * 312 * @param WP_Error $validity Validity. 313 * @param mixed $value Value. 314 * @param WP_Customize_Setting $setting Setting. 315 * @return WP_Error Validity. 316 */ 317 function late_validate_length( $validity, $value, $setting ) { 318 $this->assertInstanceOf( 'WP_Customize_Setting', $setting ); 319 if ( strlen( $value ) < 10 ) { 320 $validity->add( 'minlength', '' ); 321 } 322 return $validity; 279 323 } 280 324 … … 1031 1075 public $custom; 1032 1076 } 1077 1078 /** 1079 * Class Test_Setting_Without_Applying_Validate_Filter. 1080 * 1081 * @see Tests_WP_Customize_Manager::test_late_validate_setting_values() 1082 */ 1083 class Test_Setting_Without_Applying_Validate_Filter extends WP_Customize_Setting { 1084 1085 /** 1086 * Validates an input. 1087 * 1088 * @param mixed $value Value to validate. 1089 * @return true|WP_Error True if the input was validated, otherwise WP_Error. 1090 */ 1091 public function validate( $value ) { 1092 if ( empty( $value ) ) { 1093 return new WP_Error( 'empty_value', __( 'You must supply a value' ) ); 1094 } 1095 return true; 1096 } 1097 1098 }
Note: See TracChangeset
for help on using the changeset viewer.