File "BasePhpFastCache.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woo-license-keys/vendor/10quality/wpmvc-phpfastcache/src/psr4/BasePhpFastCache.php
File
size: 11.09 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
namespace WPMVC\PHPFastCache;
use TenQuality\WP\File;
/**
* [email protected]
* Website: http://www.phpfastcache.com
* Example at our website, any bugs, problems, please visit http://faster.phpfastcache.com
* Modification for WPMVC
*
* @link http://www.phpfastcache.com
* @author [email protected]
* @author Alejandro Mostajo <[email protected]>
* @version 4.0.0
*/
abstract class BasePhpFastCache {
var $tmp = array();
// default options, this will be merge to Driver's Options
var $config = array();
var $fallback = false;
var $instant;
/*
* Basic Functions
*/
public function set($keyword, $value = "", $time = 0, $option = array() ) {
/*
* Infinity Time
* Khoa. B
*/
if((Int)$time <= 0) {
// 5 years, however memcached or memory cached will gone when u restart it
// just recommended for sqlite. files
$time = 3600*24*365*5;
}
/*
* Temporary disabled phpFastCache::$disabled = true
* Khoa. B
*/
if(phpFastCache::$disabled === true) {
return false;
}
$object = array(
"value" => $value,
"write_time" => time(),
"expired_in" => $time,
"expired_time" => time() + (Int)$time,
);
return $this->driver_set($keyword,$object,$time,$option);
}
public function get($keyword, $option = array()) {
/*
* Temporary disabled phpFastCache::$disabled = true
* Khoa. B
*/
if(phpFastCache::$disabled === true) {
return null;
}
$object = $this->driver_get($keyword,$option);
if($object == null) {
return null;
}
$value = isset( $object['value'] ) ? $object['value'] : null;
return isset( $option['all_keys'] ) && $option['all_keys'] ? $object : $value;
}
function getInfo($keyword, $option = array()) {
$object = $this->driver_get($keyword,$option);
if($object == null) {
return null;
}
return $object;
}
function delete($keyword, $option = array()) {
return $this->driver_delete($keyword,$option);
}
function stats($option = array()) {
return $this->driver_stats($option);
}
function clean($option = array()) {
return $this->driver_clean($option);
}
function isExisting($keyword) {
if(method_exists($this,"driver_isExisting")) {
return $this->driver_isExisting($keyword);
}
$data = $this->get($keyword);
if($data == null) {
return false;
} else {
return true;
}
}
// Searches though the cache for keys that match the given query.
// todo: search
function search($query) {
if(method_exists($this,"driver_search")) {
return $this->driver_search($query);
}
throw new Exception('Search method is not supported by this driver.');
}
function increment($keyword, $step = 1 , $option = array()) {
$object = $this->get($keyword, array('all_keys' => true));
if($object == null) {
return false;
} else {
$value = (Int)$object['value'] + (Int)$step;
$time = $object['expired_time'] - time();
$this->set($keyword,$value, $time, $option);
return true;
}
}
function decrement($keyword, $step = 1 , $option = array()) {
$object = $this->get($keyword, array('all_keys' => true));
if($object == null) {
return false;
} else {
$value = (Int)$object['value'] - (Int)$step;
$time = $object['expired_time'] - time();
$this->set($keyword,$value, $time, $option);
return true;
}
}
/*
* Extend more time
*/
function touch($keyword, $time = 300, $option = array()) {
$object = $this->get($keyword, array('all_keys' => true));
if($object == null) {
return false;
} else {
$value = $object['value'];
$time = $object['expired_time'] - time() + $time;
$this->set($keyword, $value,$time, $option);
return true;
}
}
/*
* Other Functions Built-int for phpFastCache since 1.3
*/
public function setMulti($list = array()) {
foreach($list as $array) {
$this->set($array[0], isset($array[1]) ? $array[1] : 0, isset($array[2]) ? $array[2] : array());
}
}
public function getMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->get($name, isset($array[1]) ? $array[1] : array());
}
return $res;
}
public function getInfoMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->getInfo($name, isset($array[1]) ? $array[1] : array());
}
return $res;
}
public function deleteMulti($list = array()) {
foreach($list as $array) {
$this->delete($array[0], isset($array[1]) ? $array[1] : array());
}
}
public function isExistingMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->isExisting($name);
}
return $res;
}
public function incrementMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->increment($name, $array[1], isset($array[2]) ? $array[2] : array());
}
return $res;
}
public function decrementMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->decrement($name, $array[1], isset($array[2]) ? $array[2] : array());
}
return $res;
}
public function touchMulti($list = array()) {
$res = array();
foreach($list as $array) {
$name = $array[0];
$res[$name] = $this->touch($name, $array[1], isset($array[2]) ? $array[2] : array());
}
return $res;
}
public function setup($config_name,$value = "") {
/*
* Config for class
*/
if(is_array($config_name)) {
$this->config = $config_name;
} else {
$this->config[$config_name] = $value;
}
}
/*
* Magic Functions
*/
function __get($name) {
return $this->get($name);
}
function __set($name, $v) {
if(isset($v[1]) && is_numeric($v[1])) {
return $this->set($name,$v[0],$v[1], isset($v[2]) ? $v[2] : array() );
} else {
throw new Exception("Example ->$name = array('VALUE', 300);",98);
}
}
public function __call($name, $args) {
return call_user_func_array( array( $this->instant, $name ), $args );
}
/*
* Base Functions
*/
protected function backup() {
return phpFastCache(phpFastCache::$config['fallback']);
}
protected function required_extension($name) {
require_once(dirname(__FILE__).'/../_extensions/'.$name);
}
/**
* @since 3.0.161 Fork.
* @since 4.0.0 Replace file handling.
*/
protected function read_file($file) {
return File::auth()->read($file);
}
/*
* return PATH for Files & PDO only
*/
public function getPath($create_path = false) {
return phpFastCache::getPath($create_path,$this->config);
}
/*
* Object for Files & SQLite
*/
protected function encode($data) {
return serialize($data);
}
protected function decode($value) {
$x = @unserialize($value);
if($x == false) {
return $value;
} else {
return $x;
}
}
/*
* Auto Create .htaccess to protect cache folder
*/
protected function htaccessGen($path = '') {
if($this->option('htaccess') == true) {
if(!File::auth()->exists($path."/.htaccess")) {
// echo "write me";
$html = "order deny, allow \r\n
deny from all \r\n
allow from 127.0.0.1";
File::auth()->write($path.'/.htaccess', $html);
} else {
// echo "got me";
}
}
}
/*
* Check phpModules or CGI
*/
protected function isPHPModule() {
return phpFastCache::isPHPModule();
}
/*
* return System Information
*/
public function systemInfo() {
$backup_option = $this->option;
if(count($this->option("system")) == 0 ) {
$this->option['system']['driver'] = 'files';
$this->option['system']['drivers'] = array();
$dir = @opendir(dirname(__FILE__)."/drivers/");
if(!$dir) {
throw new Exception("Can't open file dir ext",100);
}
while($file = @readdir($dir)) {
if($file!="." && $file!=".." && strpos($file,'.php') !== false) {
require_once(dirname(__FILE__).'/drivers/'.$file);
$namex = str_replace('.php','',$file);
$class = 'phpfastcache_'.$namex;
$this->option['skipError'] = true;
$driver = new $class($this->option);
$driver->option = $this->option;
if($driver->checkdriver()) {
$this->option['system']['drivers'][$namex] = true;
$this->option['system']['driver'] = $namex;
} else {
$this->option['system']['drivers'][$namex] = false;
}
}
}
/*
* PDO is highest priority with SQLite
*/
if($this->option['system']['drivers']['sqlite'] == true) {
$this->option['system']['driver'] = "sqlite";
}
}
$example = new phpfastcache_example($this->config);
$this->option("path",$example->getPath(true));
$this->option = $backup_option;
return $this->option;
}
protected function isExistingDriver($class) {
if(@file_exists(dirname(__FILE__)."/drivers/".$class.".php")) {
require_once(dirname(__FILE__)."/drivers/".$class.".php");
if(class_exists("phpfastcache_".$class)) {
return true;
}
}
return false;
}
protected function __setChmodAuto() {
return phpFastCache::__setChmodAuto($this->config);
}
}