| Server IP : 208.122.213.31 / Your IP : 216.73.216.45 Web Server : Apache System : Linux msd6191.mjhst.com 4.18.0-553.137.1.el8_10.x86_64 #1 SMP Wed Jun 24 11:40:24 UTC 2026 x86_64 User : WHMCS_MIA_382 ( 1001) PHP Version : 7.4.33 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/self/cwd/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);
}
}