REST API: add `json_last_error_msg()` compatibility function for PHP <5.5 to `compat.php`
Props rmmcue. See #33982. Built from https://develop.svn.wordpress.org/trunk@34844 git-svn-id: http://core.svn.wordpress.org/trunk@34809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
22ab774617
commit
5a357a452f
|
@ -260,3 +260,59 @@ endif;
|
||||||
if ( ! defined( 'JSON_PRETTY_PRINT' ) ) {
|
if ( ! defined( 'JSON_PRETTY_PRINT' ) ) {
|
||||||
define( 'JSON_PRETTY_PRINT', 128 );
|
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;
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.4-alpha-34843';
|
$wp_version = '4.4-alpha-34844';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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