Changeset 46208
- Timestamp:
- 09/20/2019 08:15:51 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/compat.php
r45638 r46208 290 290 } 291 291 292 if ( ! function_exists( 'json_encode' ) ) {293 function json_encode( $string ) {294 global $wp_json;295 296 if ( ! ( $wp_json instanceof Services_JSON ) ) {297 require_once( ABSPATH . WPINC . '/class-json.php' );298 $wp_json = new Services_JSON();299 }300 301 return $wp_json->encodeUnsafe( $string );302 }303 }304 305 if ( ! function_exists( 'json_decode' ) ) {306 /**307 * @global Services_JSON $wp_json308 * @param string $string309 * @param bool $assoc_array310 * @return object|array311 */312 function json_decode( $string, $assoc_array = false ) {313 global $wp_json;314 315 if ( ! ( $wp_json instanceof Services_JSON ) ) {316 require_once( ABSPATH . WPINC . '/class-json.php' );317 $wp_json = new Services_JSON();318 }319 320 $res = $wp_json->decode( $string );321 if ( $assoc_array ) {322 $res = _json_decode_object_helper( $res );323 }324 return $res;325 }326 327 /**328 * @param object $data329 * @return array330 */331 function _json_decode_object_helper( $data ) {332 if ( is_object( $data ) ) {333 $data = get_object_vars( $data );334 }335 return is_array( $data ) ? array_map( __FUNCTION__, $data ) : $data;336 }337 }338 339 292 if ( ! function_exists( 'hash_equals' ) ) : 340 293 /** … … 374 327 endif; 375 328 376 // JSON_PRETTY_PRINT was introduced in PHP 5.4377 // Defined here to prevent a notice when using it with wp_json_encode()378 if ( ! defined( 'JSON_PRETTY_PRINT' ) ) {379 define( 'JSON_PRETTY_PRINT', 128 );380 }381 382 if ( ! function_exists( 'json_last_error_msg' ) ) :383 /**384 * Retrieves the error string of the last json_encode() or json_decode() call.385 *386 * @since 4.4.0387 *388 * @internal This is a compatibility function for PHP <5.5389 *390 * @return bool|string Returns the error message on success, "No Error" if no error has occurred,391 * or false on failure.392 */393 function json_last_error_msg() {394 // See https://core.trac.wordpress.org/ticket/27799.395 if ( ! function_exists( 'json_last_error' ) ) {396 return false;397 }398 399 $last_error_code = json_last_error();400 401 // Just in case JSON_ERROR_NONE is not defined.402 $error_code_none = defined( 'JSON_ERROR_NONE' ) ? JSON_ERROR_NONE : 0;403 404 switch ( true ) {405 case $last_error_code === $error_code_none:406 return 'No error';407 408 case defined( 'JSON_ERROR_DEPTH' ) && JSON_ERROR_DEPTH === $last_error_code:409 return 'Maximum stack depth exceeded';410 411 case defined( 'JSON_ERROR_STATE_MISMATCH' ) && JSON_ERROR_STATE_MISMATCH === $last_error_code:412 return 'State mismatch (invalid or malformed JSON)';413 414 case defined( 'JSON_ERROR_CTRL_CHAR' ) && JSON_ERROR_CTRL_CHAR === $last_error_code:415 return 'Control character error, possibly incorrectly encoded';416 417 case defined( 'JSON_ERROR_SYNTAX' ) && JSON_ERROR_SYNTAX === $last_error_code:418 return 'Syntax error';419 420 case defined( 'JSON_ERROR_UTF8' ) && JSON_ERROR_UTF8 === $last_error_code:421 return 'Malformed UTF-8 characters, possibly incorrectly encoded';422 423 case defined( 'JSON_ERROR_RECURSION' ) && JSON_ERROR_RECURSION === $last_error_code:424 return 'Recursion detected';425 426 case defined( 'JSON_ERROR_INF_OR_NAN' ) && JSON_ERROR_INF_OR_NAN === $last_error_code:427 return 'Inf and NaN cannot be JSON encoded';428 429 case defined( 'JSON_ERROR_UNSUPPORTED_TYPE' ) && JSON_ERROR_UNSUPPORTED_TYPE === $last_error_code:430 return 'Type is not supported';431 432 default:433 return 'An unknown error occurred';434 }435 }436 endif;437 438 if ( ! interface_exists( 'JsonSerializable' ) ) {439 define( 'WP_JSON_SERIALIZE_COMPATIBLE', true );440 /**441 * JsonSerializable interface.442 *443 * Compatibility shim for PHP <5.4444 *445 * @link https://secure.php.net/jsonserializable446 *447 * @since 4.4.0448 */449 interface JsonSerializable {450 // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid451 public function jsonSerialize();452 }453 }454 455 329 // random_int was introduced in PHP 7.0 456 330 if ( ! function_exists( 'random_int' ) ) {
Note: See TracChangeset
for help on using the changeset viewer.