| @@ 167-195 (lines=29) @@ | ||
| 164 | * |
|
| 165 | * @return array |
|
| 166 | */ |
|
| 167 | function jetpack_json_wrap( &$any, $seen_nodes = array() ) { |
|
| 168 | if ( is_object( $any ) ) { |
|
| 169 | $input = get_object_vars( $any ); |
|
| 170 | $input['__o'] = 1; |
|
| 171 | } else { |
|
| 172 | $input = &$any; |
|
| 173 | } |
|
| 174 | ||
| 175 | if ( is_array( $input ) ) { |
|
| 176 | $seen_nodes[] = &$any; |
|
| 177 | ||
| 178 | $return = array(); |
|
| 179 | ||
| 180 | foreach ( $input as $k => &$v ) { |
|
| 181 | if ( ( is_array( $v ) || is_object( $v ) ) ) { |
|
| 182 | if ( in_array( $v, $seen_nodes, true ) ) { |
|
| 183 | continue; |
|
| 184 | } |
|
| 185 | $return[ $k ] = jetpack_json_wrap( $v, $seen_nodes ); |
|
| 186 | } else { |
|
| 187 | $return[ $k ] = $v; |
|
| 188 | } |
|
| 189 | } |
|
| 190 | ||
| 191 | return $return; |
|
| 192 | } |
|
| 193 | ||
| 194 | return $any; |
|
| 195 | } |
|
| 196 | ||
| @@ 34-62 (lines=29) @@ | ||
| 31 | return $this->json_unwrap( json_decode( $str, true ) ); |
|
| 32 | } |
|
| 33 | ||
| 34 | private function json_wrap( &$any, $seen_nodes = array() ) { |
|
| 35 | if ( is_object( $any ) ) { |
|
| 36 | $input = get_object_vars( $any ); |
|
| 37 | $input['__o'] = 1; |
|
| 38 | } else { |
|
| 39 | $input = &$any; |
|
| 40 | } |
|
| 41 | ||
| 42 | if ( is_array( $input ) ) { |
|
| 43 | $seen_nodes[] = &$any; |
|
| 44 | ||
| 45 | $return = array(); |
|
| 46 | ||
| 47 | foreach ( $input as $k => &$v ) { |
|
| 48 | if ( ( is_array( $v ) || is_object( $v ) ) ) { |
|
| 49 | if ( in_array( $v, $seen_nodes, true ) ) { |
|
| 50 | continue; |
|
| 51 | } |
|
| 52 | $return[ $k ] = $this->json_wrap( $v, $seen_nodes ); |
|
| 53 | } else { |
|
| 54 | $return[ $k ] = $v; |
|
| 55 | } |
|
| 56 | } |
|
| 57 | ||
| 58 | return $return; |
|
| 59 | } |
|
| 60 | ||
| 61 | return $any; |
|
| 62 | } |
|
| 63 | ||
| 64 | private function json_unwrap( $any ) { |
|
| 65 | if ( is_array( $any ) ) { |
|