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' ) ) {
|
||||
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
|
||||
*/
|
||||
$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.
|
||||
|
|
Loading…
Reference in New Issue