Wordpress 3.0
[autoinstalls/wordpress.git] / wp-includes / compat.php
index ce7e954cbfe858a10f5d596221e02596ef683f26..4edf33b0ce626aadac01f450ddf2e5550ba7d563 100644 (file)
@@ -129,24 +129,32 @@ if ( !function_exists('json_encode') ) {
                global $wp_json;
 
                if ( !is_a($wp_json, 'Services_JSON') ) {
-                       require_once( 'class-json.php' );
+                       require_once( ABSPATH . WPINC . '/class-json.php' );
                        $wp_json = new Services_JSON();
                }
 
-               return $wp_json->encode( $string );
+               return $wp_json->encodeUnsafe( $string );
        }
 }
 
 if ( !function_exists('json_decode') ) {
-       function json_decode( $string ) {
+       function json_decode( $string, $assoc_array = false ) {
                global $wp_json;
 
                if ( !is_a($wp_json, 'Services_JSON') ) {
-                       require_once( 'class-json.php' );
+                       require_once( ABSPATH . WPINC . '/class-json.php' );
                        $wp_json = new Services_JSON();
                }
 
-               return $wp_json->decode( $string );
+               $res = $wp_json->decode( $string );
+               if ( $assoc_array )
+                       $res = _json_decode_object_helper( $res );
+               return $res;
+       }
+       function _json_decode_object_helper($data) {
+               if ( is_object($data) )
+                       $data = get_object_vars($data);
+               return is_array($data) ? array_map(__FUNCTION__, $data) : $data;
        }
 }