CHips L MINI SHELL

CHips L pro

Current Path : /opt/cpanel/ea-php54/root/usr/share/pear/RVSeagullMod/lib/SGL/
Upload File :
Current File : //opt/cpanel/ea-php54/root/usr/share/pear/RVSeagullMod/lib/SGL/Cache2.php

<?php

/**
 * SGL wrapper to any third-party cache library.
 * Currently only PEAR::Cache_Lite and Zend_Cache are supported.
 *
 * @package SGL
 * @author Dmitri Lakachauskis <lakiboy83@gmail.com>
 */
class SGL_Cache2
{
    /**
     * Instances of Cache objects.
     *
     * @var array
     */
    private static $_aInstances = array();

    /**
     * This method is used to get Cache object instance.
     *
     * @param array $aOptions  cache options
     * @param string $lib      cache library to use
     *
     * @return object
     */
    public static function singleton($aOptions = array(), $lib = 'Zend_Cache')
    {
        $frontend = !empty($aOptions['frontend'])
            ? $aOptions['frontend'] : 'Core';
        $backend  = !empty($aOptions['backend'])
            ? $aOptions['backend'] : 'File';
        $fOptions = !empty($aOptions['frontendOptions'])
            ? $aOptions['frontendOptions'] : array();
        $bOptions = !empty($aOptions['backendOptions'])
            ? $aOptions['backendOptions'] : array();

        $idOpts = serialize($fOptions) . '_' . serialize($bOptions);
        $id     = md5("{$lib}_{$frontend}_{$backend}_{$idOpts}");

        if (isset(self::$_aInstances[$id])) {
            $ret = self::$_aInstances[$id];
        } else {
            $ret = self::_factory($lib, $frontend, $backend, $fOptions, $bOptions);
            if (!SGL::isError($ret)) {
                self::$_aInstances[$id] = $ret;
            }
        }
        return $ret;
    }

    /**
     * Factory method.
     *
     * @param string $lib       library name
     * @param string $frontend  frontend name
     * @param string $backend   backend name
     * @param array $fOpts      frontend options
     * @param array $bOpts      backend options
     *
     * @return object
     */
    private static function _factory($lib, $frontend, $backend, $fOpts, $bOpts)
    {
        // ensure minimum frontend options are set
        $fOpts['caching'] = isset($fOpts['caching'])
            ? $fOpts['caching'] : SGL_Config::get('cache.enabled');
        $fOpts['lifetime'] = isset($fOpts['lifetime'])
            ? $fOpts['lifetime'] : SGL_Config::get('cache.lifetime');
        $fOpts['writeControl'] = isset($fOpts['writeControl'])
            ? $fOpts['writeControl'] : SGL_Config::get('cache.writeControl');
        $fOpts['cleaningFactor'] = isset($fOpts['cleaningFactor'])
            ? $fOpts['cleaningFactor'] : SGL_Config::get('cache.cleaningFactor');

        // ensure minimum backend options are set
        $bOpts['cacheDir'] = isset($bOpts['cacheDir'])
            ? $bOpts['cacheDir'] : SGL_TMP_DIR . '/';
        $bOpts['readControl'] = isset($bOpts['readControl'])
            ? $bOpts['readControl'] : SGL_Config::get('cache.readControl');

        switch ($lib) {
            case 'Zend_Cache':
                // load library
                require_once 'Zend/Cache.php';

                // fix frontend options
                $fOpts['write_control'] = $fOpts['writeControl'];
                $fOpts['automatic_cleaning_factor'] = $fOpts['cleaningFactor'];
                unset($fOpts['writeControl'], $fOpts['cleaningFactor']);

                // fix backend options
                $bOpts['cache_dir'] = $bOpts['cacheDir'];
                $bOpts['read_control'] = $bOpts['readControl'];
                unset($bOpts['cacheDir'], $bOpts['readControl']);

                // default backend options are needed only for File backend
                if ($backend != 'File') {
                    unset($bOpts['cache_dir'], $bOpts['read_control']);
                }

                try {
                    $ret = Zend_Cache::factory($frontend, $backend, $fOpts, $bOpts);
                } catch (Zend_Cache_Exception $e) {
                    $msg = 'SGL_Cache2: ' . $e->getMessage();
                    $ret = SGL::raiseError($msg, SGL_ERROR_INVALIDARGS);
                }
                break;

            case 'Cache_Lite':
                // load library
                if ($frontend == 'Core') {
                    require_once SGL_CORE_DIR . '/Cache.php';
                    $className = 'SGL_Cache_Lite';
                } else {
                    require_once 'Cache/Lite/' . $frontend . '.php';
                    $className = $lib . '_' . $frontend;
                }

                // fix frontend options
                $fOpts['lifeTime'] = $fOpts['lifetime'];
                $fOpts['automaticCleaningFactor'] = $fOpts['cleaningFactor'];
                unset($fOpts['lifetime'], $fOpts['cleaningFactor']);

                $ret = new $className(array_merge($fOpts, $bOpts));
                break;

            default:
                $msg = 'SGL_Cache2: unknown caching library';
                $ret = SGL::raiseError($msg, SGL_ERROR_INVALIDARGS);
        }
        return $ret;
    }

    /**
     * Make cache ID from method name and it's arguments.
     *
     * @param string $methodName
     * @param array $aArgs
     *
     * @return string
     */
    public function makeCacheIdFromMethodName($methodName, $aArgs = array())
    {
        return md5($methodName . serialize($aArgs));
    }
}

?>

Copyright 2K16 - 2K18 Indonesian Hacker Rulez