@@ 83-111 (lines=29) @@ | ||
80 | * @param array $seen_nodes Seen nodes. |
|
81 | * @return array |
|
82 | */ |
|
83 | private function json_wrap( &$any, $seen_nodes = array() ) { |
|
84 | if ( is_object( $any ) ) { |
|
85 | $input = get_object_vars( $any ); |
|
86 | $input['__o'] = 1; |
|
87 | } else { |
|
88 | $input = &$any; |
|
89 | } |
|
90 | ||
91 | if ( is_array( $input ) ) { |
|
92 | $seen_nodes[] = &$any; |
|
93 | ||
94 | $return = array(); |
|
95 | ||
96 | foreach ( $input as $k => &$v ) { |
|
97 | if ( ( is_array( $v ) || is_object( $v ) ) ) { |
|
98 | if ( in_array( $v, $seen_nodes, true ) ) { |
|
99 | continue; |
|
100 | } |
|
101 | $return[ $k ] = $this->json_wrap( $v, $seen_nodes ); |
|
102 | } else { |
|
103 | $return[ $k ] = $v; |
|
104 | } |
|
105 | } |
|
106 | ||
107 | return $return; |
|
108 | } |
|
109 | ||
110 | return $any; |
|
111 | } |
|
112 | ||
113 | /** |
|
114 | * Unwraps a json_decode return. |
@@ 296-324 (lines=29) @@ | ||
293 | * |
|
294 | * @return array |
|
295 | */ |
|
296 | function jetpack_json_wrap( &$any, $seen_nodes = array() ) { |
|
297 | if ( is_object( $any ) ) { |
|
298 | $input = get_object_vars( $any ); |
|
299 | $input['__o'] = 1; |
|
300 | } else { |
|
301 | $input = &$any; |
|
302 | } |
|
303 | ||
304 | if ( is_array( $input ) ) { |
|
305 | $seen_nodes[] = &$any; |
|
306 | ||
307 | $return = array(); |
|
308 | ||
309 | foreach ( $input as $k => &$v ) { |
|
310 | if ( ( is_array( $v ) || is_object( $v ) ) ) { |
|
311 | if ( in_array( $v, $seen_nodes, true ) ) { |
|
312 | continue; |
|
313 | } |
|
314 | $return[ $k ] = jetpack_json_wrap( $v, $seen_nodes ); |
|
315 | } else { |
|
316 | $return[ $k ] = $v; |
|
317 | } |
|
318 | } |
|
319 | ||
320 | return $return; |
|
321 | } |
|
322 | ||
323 | return $any; |
|
324 | } |
|
325 | ||
326 | /** |
|
327 | * Checks if the mime_content_type function is available and return it if so. |