diff options
Diffstat (limited to 'plugins/jetpack/vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php')
-rw-r--r-- | plugins/jetpack/vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php b/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php deleted file mode 100644 index f13e5dcb..00000000 --- a/plugins/jetpack/vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * An implementation of Automattic\Jetpack\Sync\Codec_Interface that uses gzip's DEFLATE - * algorithm to compress objects serialized using json_encode. - * - * @package automattic/jetpack-sync - */ - -namespace Automattic\Jetpack\Sync; - -use Automattic\Jetpack\Sync\Codec_Interface; - -/** - * An implementation of Automattic\Jetpack\Sync\Codec_Interface that uses gzip's DEFLATE - * algorithm to compress objects serialized using json_encode - */ -class JSON_Deflate_Array_Codec implements Codec_Interface { - const CODEC_NAME = 'deflate-json-array'; - - /** - * Return the name of the codec. - * - * @return string - */ - public function name() { - return self::CODEC_NAME; - } - - /** - * Encodes an object. - * - * @param object $object Item to encode. - * @return string - */ - public function encode( $object ) { - return base64_encode( gzdeflate( $this->json_serialize( $object ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - } - - /** - * Decode compressed serialized value. - * - * @param string $input Item to decode. - * @return array|mixed|object - */ - public function decode( $input ) { - return $this->json_unserialize( gzinflate( base64_decode( $input ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - } - - /** - * Serialize JSON - * - * @see https://gist.github.com/muhqu/820694 - * - * @param string $any Value to serialize and wrap. - * - * @return false|string - */ - protected function json_serialize( $any ) { - if ( function_exists( 'jetpack_json_wrap' ) ) { - return wp_json_encode( jetpack_json_wrap( $any ) ); - } - // This prevents fatal error when updating pre 6.0 via the cli command. - return wp_json_encode( $this->json_wrap( $any ) ); - } - - /** - * Unserialize JSON - * - * @param string $str JSON string. - * @return array|object Unwrapped JSON. - */ - protected function json_unserialize( $str ) { - return $this->json_unwrap( json_decode( $str, true ) ); - } - - /** - * Wraps JSON - * - * @param object|array $any Wrapping value. - * @param array $seen_nodes Seen nodes. - * @return array - */ - private function json_wrap( &$any, $seen_nodes = array() ) { - if ( is_object( $any ) ) { - $input = get_object_vars( $any ); - $input['__o'] = 1; - } else { - $input = &$any; - } - - if ( is_array( $input ) ) { - $seen_nodes[] = &$any; - - $return = array(); - - foreach ( $input as $k => &$v ) { - if ( ( is_array( $v ) || is_object( $v ) ) ) { - if ( in_array( $v, $seen_nodes, true ) ) { - continue; - } - $return[ $k ] = $this->json_wrap( $v, $seen_nodes ); - } else { - $return[ $k ] = $v; - } - } - - return $return; - } - - return $any; - } - - /** - * Unwraps a json_decode return. - * - * @param array|object $any json_decode object. - * @return array|object - */ - private function json_unwrap( $any ) { - if ( is_array( $any ) ) { - foreach ( $any as $k => $v ) { - if ( '__o' === $k ) { - continue; - } - $any[ $k ] = $this->json_unwrap( $v ); - } - - if ( isset( $any['__o'] ) ) { - unset( $any['__o'] ); - $any = (object) $any; - } - } - - return $any; - } -} |