From 950bf585bcd24a22957ccb094fae68c24c5c29f3 Mon Sep 17 00:00:00 2001 From: TimothyBlynJacobs Date: Sun, 11 Sep 2022 23:30:10 +0000 Subject: [PATCH] REST API: Add support for settings to specify their own additionalProperties. This switches the Settings Controller to use `rest_default_additional_properties_to_false` and deprecates its own method. Props anna.bansaghi. Fixes #56493. Built from https://develop.svn.wordpress.org/trunk@54131 git-svn-id: http://core.svn.wordpress.org/trunk@53690 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../class-wp-rest-settings-controller.php | 23 ++++++------------- wp-includes/version.php | 2 +- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php index 157c49acbe..1c83f5caea 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php @@ -258,7 +258,7 @@ class WP_REST_Settings_Controller extends WP_REST_Controller { continue; } - $rest_args['schema'] = $this->set_additional_properties_to_false( $rest_args['schema'] ); + $rest_args['schema'] = rest_default_additional_properties_to_false( $rest_args['schema'] ); $rest_options[ $rest_args['name'] ] = $rest_args; } @@ -322,31 +322,22 @@ class WP_REST_Settings_Controller extends WP_REST_Controller { } /** - * Recursively add additionalProperties = false to all objects in a schema. + * Recursively add additionalProperties = false to all objects in a schema + * if no additionalProperties setting is specified. * - * This is need to restrict properties of objects in settings values to only + * This is needed to restrict properties of objects in settings values to only * registered items, as the REST API will allow additional properties by * default. * * @since 4.9.0 + * @deprecated 6.1.0 Use {@see rest_default_additional_properties_to_false()} instead. * * @param array $schema The schema array. * @return array */ protected function set_additional_properties_to_false( $schema ) { - switch ( $schema['type'] ) { - case 'object': - foreach ( $schema['properties'] as $key => $child_schema ) { - $schema['properties'][ $key ] = $this->set_additional_properties_to_false( $child_schema ); - } + _deprecated_function( __METHOD__, '6.1.0', 'rest_default_additional_properties_to_false()' ); - $schema['additionalProperties'] = false; - break; - case 'array': - $schema['items'] = $this->set_additional_properties_to_false( $schema['items'] ); - break; - } - - return $schema; + return rest_default_additional_properties_to_false( $schema ); } } diff --git a/wp-includes/version.php b/wp-includes/version.php index 200c08bb1f..0a477f71bb 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.1-alpha-54130'; +$wp_version = '6.1-alpha-54131'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.