From e589297afc0a5282fc4d7f8c9b2df303b9edbbe0 Mon Sep 17 00:00:00 2001 From: desrosj Date: Fri, 20 Sep 2019 20:16:58 +0000 Subject: [PATCH] Code Modernization: Remove JSON related polyfills. The PHP native JSON extension has been bundled and compiled with PHP by default since version 5.2.0. Because the minimum version of PHP required by WordPress is now 5.6.20 (see #46594 and [45058]), JSON extension related polyfills and backwards compatibility code can now be removed. This change removes the `json_last_error_msg()` and `JsonSerializable` polyfills included in WordPress for full JSON extension support in PHP < 5.6. Follow up of [46205-46206]. See #47699. Props jrf, Clorith, pento. Built from https://develop.svn.wordpress.org/trunk@46208 git-svn-id: http://core.svn.wordpress.org/trunk@46020 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/compat.php | 126 ---------------------------------------- wp-includes/version.php | 2 +- 2 files changed, 1 insertion(+), 127 deletions(-) diff --git a/wp-includes/compat.php b/wp-includes/compat.php index 9632afc842..c11e2d51a9 100644 --- a/wp-includes/compat.php +++ b/wp-includes/compat.php @@ -289,53 +289,6 @@ function _hash_hmac( $algo, $data, $key, $raw_output = false ) { return $hmac; } -if ( ! function_exists( 'json_encode' ) ) { - function json_encode( $string ) { - global $wp_json; - - if ( ! ( $wp_json instanceof Services_JSON ) ) { - require_once( ABSPATH . WPINC . '/class-json.php' ); - $wp_json = new Services_JSON(); - } - - return $wp_json->encodeUnsafe( $string ); - } -} - -if ( ! function_exists( 'json_decode' ) ) { - /** - * @global Services_JSON $wp_json - * @param string $string - * @param bool $assoc_array - * @return object|array - */ - function json_decode( $string, $assoc_array = false ) { - global $wp_json; - - if ( ! ( $wp_json instanceof Services_JSON ) ) { - require_once( ABSPATH . WPINC . '/class-json.php' ); - $wp_json = new Services_JSON(); - } - - $res = $wp_json->decode( $string ); - if ( $assoc_array ) { - $res = _json_decode_object_helper( $res ); - } - return $res; - } - - /** - * @param object $data - * @return array - */ - function _json_decode_object_helper( $data ) { - if ( is_object( $data ) ) { - $data = get_object_vars( $data ); - } - return is_array( $data ) ? array_map( __FUNCTION__, $data ) : $data; - } -} - if ( ! function_exists( 'hash_equals' ) ) : /** * Timing attack safe string comparison @@ -373,85 +326,6 @@ if ( ! function_exists( 'hash_equals' ) ) : } endif; -// JSON_PRETTY_PRINT was introduced in PHP 5.4 -// Defined here to prevent a notice when using it with wp_json_encode() -if ( ! defined( 'JSON_PRETTY_PRINT' ) ) { - define( 'JSON_PRETTY_PRINT', 128 ); -} - -if ( ! function_exists( 'json_last_error_msg' ) ) : - /** - * Retrieves the error string of the last json_encode() or json_decode() call. - * - * @since 4.4.0 - * - * @internal This is a compatibility function for PHP <5.5 - * - * @return bool|string Returns the error message on success, "No Error" if no error has occurred, - * or false on failure. - */ - function json_last_error_msg() { - // See https://core.trac.wordpress.org/ticket/27799. - if ( ! function_exists( 'json_last_error' ) ) { - return false; - } - - $last_error_code = json_last_error(); - - // Just in case JSON_ERROR_NONE is not defined. - $error_code_none = defined( 'JSON_ERROR_NONE' ) ? JSON_ERROR_NONE : 0; - - switch ( true ) { - case $last_error_code === $error_code_none: - return 'No error'; - - case defined( 'JSON_ERROR_DEPTH' ) && JSON_ERROR_DEPTH === $last_error_code: - return 'Maximum stack depth exceeded'; - - case defined( 'JSON_ERROR_STATE_MISMATCH' ) && JSON_ERROR_STATE_MISMATCH === $last_error_code: - return 'State mismatch (invalid or malformed JSON)'; - - case defined( 'JSON_ERROR_CTRL_CHAR' ) && JSON_ERROR_CTRL_CHAR === $last_error_code: - return 'Control character error, possibly incorrectly encoded'; - - case defined( 'JSON_ERROR_SYNTAX' ) && JSON_ERROR_SYNTAX === $last_error_code: - return 'Syntax error'; - - case defined( 'JSON_ERROR_UTF8' ) && JSON_ERROR_UTF8 === $last_error_code: - return 'Malformed UTF-8 characters, possibly incorrectly encoded'; - - case defined( 'JSON_ERROR_RECURSION' ) && JSON_ERROR_RECURSION === $last_error_code: - return 'Recursion detected'; - - case defined( 'JSON_ERROR_INF_OR_NAN' ) && JSON_ERROR_INF_OR_NAN === $last_error_code: - return 'Inf and NaN cannot be JSON encoded'; - - case defined( 'JSON_ERROR_UNSUPPORTED_TYPE' ) && JSON_ERROR_UNSUPPORTED_TYPE === $last_error_code: - return 'Type is not supported'; - - default: - return 'An unknown error occurred'; - } - } -endif; - -if ( ! interface_exists( 'JsonSerializable' ) ) { - define( 'WP_JSON_SERIALIZE_COMPATIBLE', true ); - /** - * JsonSerializable interface. - * - * Compatibility shim for PHP <5.4 - * - * @link https://secure.php.net/jsonserializable - * - * @since 4.4.0 - */ - interface JsonSerializable { - // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid - public function jsonSerialize(); - } -} - // random_int was introduced in PHP 7.0 if ( ! function_exists( 'random_int' ) ) { require ABSPATH . WPINC . '/random_compat/random.php'; diff --git a/wp-includes/version.php b/wp-includes/version.php index e01c957fb4..2fed44a854 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.3-alpha-46207'; +$wp_version = '5.3-alpha-46208'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.