403Webshell
Server IP : 172.67.158.161  /  Your IP : 3.149.26.31
Web Server : LiteSpeed
System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : giankuin ( 1871)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /proc/thread-self/cwd/dup-installer/lib/snaplib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /proc/thread-self/cwd/dup-installer/lib/snaplib/class.snaplib.jsonSerializable.abstract.php
<?php
/**
 * Json class serialize / unserialize json
 *
 * Standard: PSR-2
 * @link http://www.php-fig.org/psr/psr-2
 *
 * @package SnapLib
 * @copyright (c) 2019, Snapcreek LLC
 * @license	https://opensource.org/licenses/GPL-3.0 GNU Public License
 *
 */
defined('ABSPATH') || defined('DUPXABSPATH') || exit;

if (!class_exists('DupProSnapJsonSerializable', false)) {

    abstract class DupProSnapJsonSerializable
    {

        const CLASS_KEY_FOR_JSON_SERIALIZE = '==_CLASS_==_NAME_==';

        protected static function objectToPublicArrayClass($obj = null)
        {
            $reflect = new ReflectionObject($obj);
            $result  = array(
                self::CLASS_KEY_FOR_JSON_SERIALIZE => $reflect->name
            );

            if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
                /**
                 * get all props of current class but not props private of parent class
                 */
                $props = $reflect->getProperties();

                foreach ($props as $prop) {
                    $prop->setAccessible(true);
                    $propName  = $prop->getName();
                    $propValue = $prop->getValue($obj);

                    $result[$propName] = self::parseValueToArray($propValue);
                }
            } else {
                $objArray = (array) $obj;
                $re       = '/(?:.*\x00)?(.+)/';
                $subst    = '$1';

                foreach ($objArray as $origPropName => $propValue) {
                    $propName          = preg_replace($re, $subst, $origPropName, 1);
                    $result[$propName] = self::parseValueToArray($propValue);
                }
            }
            return $result;
        }

        protected static function parseValueToArray($value)
        {
            if (is_object($value)) {
                return self::objectToPublicArrayClass($value);
            } else if (is_array($value)) {
                $result = array();
                foreach ($value as $key => $arrayVal) {
                    $result[$key] = self::parseValueToArray($arrayVal);
                }
                return $result;
            } else {
                return $value;
            }
        }

        protected static function parseArrayToValue($value, $classFromProp = null)
        {
            if (($newClassName = self::getClassFromArray($value, $classFromProp)) !== false) {
                if (class_exists($newClassName)) {
                    $newObj = new $newClassName();
                } else {
                    $newObj = new StdClass();
                }

                if (is_subclass_of($newObj, __CLASS__)) {
                    $newObj->initFromPublicArray($value, $classFromProp);
                } else {
                    $reflect      = new ReflectionObject($newObj);
                    $excludeProps = array(self::CLASS_KEY_FOR_JSON_SERIALIZE);

                    $privateProps = $reflect->getProperties(ReflectionProperty::IS_PROTECTED + ReflectionProperty::IS_PRIVATE + ReflectionProperty::IS_STATIC);
                    foreach ($privateProps as $pros) {
                        $excludeProps[] = $pros->getName();
                    }

                    foreach ($value as $arrayProp => $arrayValue) {
                        if (in_array($arrayProp, $excludeProps)) {
                            continue;
                        }
                        $newObj->{$arrayProp} = self::parseArrayToValue($arrayValue, $classFromProp);
                    }
                }
                return $newObj;
            } else if (is_array($value)) {
                $result = array();
                foreach ($value as $key => $arrayVal) {
                    $result[$key] = self::parseArrayToValue($arrayVal);
                }
                return $result;
            } else {
                return $value;
            }
        }

        protected function initFromPublicArray($array, $classFromProp = null)
        {
            if (!is_array($array)) {
                return false;
            }

            $reflect        = new ReflectionObject($this);
            $classFromArray = self::getClassFromArray($array, $classFromProp);

            if ($classFromArray == false || $classFromArray !== $reflect->name) {
                return false;
            }

            $excludeProps = array(self::CLASS_KEY_FOR_JSON_SERIALIZE);
            $privateProps = $reflect->getProperties(ReflectionProperty::IS_PRIVATE + ReflectionProperty::IS_STATIC);

            foreach ($privateProps as $pros) {
                $excludeProps[] = $pros->getName();
            }

            foreach ($array as $propName => $propValue) {
                if (in_array($propName, $excludeProps)) {
                    continue;
                }
                $this->{$propName} = self::parseArrayToValue($propValue, $classFromProp);
            }
        }

        protected static function getClassFromArray($array, $classFromProp = null)
        {
            if (!is_array($array)) {
                return false;
            } else if (isset($array[self::CLASS_KEY_FOR_JSON_SERIALIZE])) {
                return $array[self::CLASS_KEY_FOR_JSON_SERIALIZE];
            } else if (!is_null($classFromProp) && isset($array[$classFromProp])) {
                return $array[$classFromProp];
            } else {
                return false;
            }
        }

        /**
         *
         */
        public function jsonSerialize()
        {
            return DupProSnapJsonU::wp_json_encode_pprint(self::objectToPublicArrayClass($this));
        }

        /**
         *
         * @param string $json
         * @return type
         */
        public static function jsonUnserialize($json, $classFromProp = null)
        {
            $publicArray = json_decode($json, true);
            return self::parseArrayToValue($publicArray, $classFromProp);
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit