| @@ 38-66 (lines=29) @@ | ||
| 35 | return $this->json_unwrap( json_decode( $str, true ) ); | |
| 36 | } | |
| 37 | ||
| 38 | 	private function json_wrap( &$any, $seen_nodes = array() ) { | |
| 39 | 		if ( is_object( $any ) ) { | |
| 40 | $input = get_object_vars( $any ); | |
| 41 | $input['__o'] = 1; | |
| 42 | 		} else { | |
| 43 | $input = &$any; | |
| 44 | } | |
| 45 | ||
| 46 | 		if ( is_array( $input ) ) { | |
| 47 | $seen_nodes[] = &$any; | |
| 48 | ||
| 49 | $return = array(); | |
| 50 | ||
| 51 | 			foreach ( $input as $k => &$v ) { | |
| 52 | 				if ( ( is_array( $v ) || is_object( $v ) ) ) { | |
| 53 | 					if ( in_array( $v, $seen_nodes, true ) ) { | |
| 54 | continue; | |
| 55 | } | |
| 56 | $return[ $k ] = $this->json_wrap( $v, $seen_nodes ); | |
| 57 | 				} else { | |
| 58 | $return[ $k ] = $v; | |
| 59 | } | |
| 60 | } | |
| 61 | ||
| 62 | return $return; | |
| 63 | } | |
| 64 | ||
| 65 | return $any; | |
| 66 | } | |
| 67 | ||
| 68 | 	private function json_unwrap( $any ) { | |
| 69 | 		if ( is_array( $any ) ) { | |
| @@ 180-208 (lines=29) @@ | ||
| 177 | * | |
| 178 | * @return array | |
| 179 | */ | |
| 180 | function jetpack_json_wrap( &$any, $seen_nodes = array() ) { | |
| 181 | 	if ( is_object( $any ) ) { | |
| 182 | $input = get_object_vars( $any ); | |
| 183 | $input['__o'] = 1; | |
| 184 | 	} else { | |
| 185 | $input = &$any; | |
| 186 | } | |
| 187 | ||
| 188 | 	if ( is_array( $input ) ) { | |
| 189 | $seen_nodes[] = &$any; | |
| 190 | ||
| 191 | $return = array(); | |
| 192 | ||
| 193 | 		foreach ( $input as $k => &$v ) { | |
| 194 | 			if ( ( is_array( $v ) || is_object( $v ) ) ) { | |
| 195 | 				if ( in_array( $v, $seen_nodes, true ) ) { | |
| 196 | continue; | |
| 197 | } | |
| 198 | $return[ $k ] = jetpack_json_wrap( $v, $seen_nodes ); | |
| 199 | 			} else { | |
| 200 | $return[ $k ] = $v; | |
| 201 | } | |
| 202 | } | |
| 203 | ||
| 204 | return $return; | |
| 205 | } | |
| 206 | ||
| 207 | return $any; | |
| 208 | } | |
| 209 | ||