| Server IP : 104.21.74.147 / Your IP : 216.73.217.154 Web Server : nginx/1.24.0 System : Linux wordpress-sites 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/rebeccaone.com/wp-content/plugins/cornerstone/includes/classes/Parsy/ |
Upload File : |
<?php
namespace Themeco\Cornerstone\Parsy;
use Themeco\Cornerstone\Parsy\Util\Token;
class Serializer {
static $count = 1;
static $types = [];
static $active = false;
public function serialize( $input, $json_flags = 0) {
self::$count = 1;
self::$types = [];
self::$active = true;
json_encode($input); // run once to populate types
$result = json_encode( [$input, self::$types], $json_flags);
self::$active = false;
return $result;
}
public static function isActive() {
return self::$active;
}
public static function index($type) {
if ( !isset( self::$types[$type] ) ) {
return self::$types[$type] = self::$count++;
}
return self::$types[$type];
}
public function unserialize($input) {
$decoded = json_decode($input);
if (is_null($decoded)) {
throw new \Exception('Invalid input: ' . $input);
}
list($doc, $types) = $decoded;
$types = array_flip(get_object_vars($types));
$tokenize = function($input) use ($types, &$tokenize) {
if (is_array($input)) return array_map( $tokenize, $input);
if (is_object($input) && ! is_a($input, Token::class)) {
$content = null;
$type = null;
foreach($input as $type => $content) {
$type = $types[(int)$type];
$content = $content;
break;
}
return new Token($type, $tokenize($content));
}
return $input;
};
return $tokenize($doc);
}
}