mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-23 01:27:36 +01:00
Date/Time: Correct sanitization of timezone_string
in sanitize_option()
.
This fixes a bug where if the `timezone_string` is set to a timezone name which has since been deprecated, the option value would be “lost” when saving the value again, as the comparison being done to verify whether it is a valid timezone name would only take “current” timezone names into account and would invalidate deprecated timezone names. By passing the `DateTimeZone::ALL_WITH_BC` constant as the `$timezoneGroup` parameter to the PHP native `timezone_identifiers_list()` function, a timezone name list is retrieved containing both current and deprecated timezone names, preventing the invalidation of the option value. See the extensive write-up about this in ticket #56468. Also see: [https://www.php.net/manual/en/datetimezone.listidentifiers.php PHP Manual: timezone_identifiers_list()]. Includes adding a dedicated test to the data provider used in the `Tests_Option_SanitizeOption` test class. Note: The new data set is ''named'', even though the other data sets are unnamed, to make sure it is clear what this data set is testing. Adding test names for the original data sets in this data provider would be a great future improvement, but is outside of the scope of this commit. Follow-up to [18323], [33119], [54207], [54217], [54227]. Props jrf, costdev. See #56468. Built from https://develop.svn.wordpress.org/trunk@54229 git-svn-id: http://core.svn.wordpress.org/trunk@53788 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
c5d200cb52
commit
22e363e6c6
@ -4923,7 +4923,7 @@ function sanitize_option( $option, $value ) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'timezone_string':
|
case 'timezone_string':
|
||||||
$allowed_zones = timezone_identifiers_list();
|
$allowed_zones = timezone_identifiers_list( DateTimeZone::ALL_WITH_BC );
|
||||||
if ( ! in_array( $value, $allowed_zones, true ) && ! empty( $value ) ) {
|
if ( ! in_array( $value, $allowed_zones, true ) && ! empty( $value ) ) {
|
||||||
$error = __( 'The timezone you have entered is not valid. Please select a valid timezone.' );
|
$error = __( 'The timezone you have entered is not valid. Please select a valid timezone.' );
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.1-alpha-54228';
|
$wp_version = '6.1-alpha-54229';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
Loading…
Reference in New Issue
Block a user