mirror of
https://github.com/YunoHost-Apps/dolibarr_ynh.git
synced 2024-09-03 18:35:53 +02:00
129 lines
3.4 KiB
PHP
129 lines
3.4 KiB
PHP
<?php
|
|
namespace Luracast\Restler;
|
|
|
|
/**
|
|
* Default Cache that writes/reads human readable files for caching purpose
|
|
*
|
|
* @category Framework
|
|
* @package Restler
|
|
* @author R.Arul Kumaran <arul@luracast.com>
|
|
* @copyright 2010 Luracast
|
|
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
|
* @link http://luracast.com/products/restler/
|
|
* @version 3.0.0rc5
|
|
*/
|
|
class HumanReadableCache implements iCache
|
|
{
|
|
/**
|
|
* @var string path of the folder to hold cache files
|
|
*/
|
|
public static $cacheDir;
|
|
|
|
public function __construct()
|
|
{
|
|
if (is_null(self::$cacheDir)) {
|
|
self::$cacheDir = Defaults::$cacheDirectory;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* store data in the cache
|
|
*
|
|
* @param string $name
|
|
* @param mixed $data
|
|
*
|
|
* @throws \Exception
|
|
* @return boolean true if successful
|
|
*/
|
|
public function set($name, $data)
|
|
{
|
|
if (is_array($data)) {
|
|
$s = '$o = array();' . PHP_EOL . PHP_EOL;
|
|
$s .= '// ** THIS IS AN AUTO GENERATED FILE.'
|
|
. ' DO NOT EDIT MANUALLY ** ';
|
|
foreach ($data as $key => $value) {
|
|
$s .= PHP_EOL . PHP_EOL .
|
|
"//==================== $key ===================="
|
|
. PHP_EOL . PHP_EOL;
|
|
if (is_array($value)) {
|
|
$s .= '$o[\'' . $key . '\'] = array();';
|
|
foreach ($value as $ke => $va) {
|
|
$s .= PHP_EOL . PHP_EOL . "//==== $key $ke ===="
|
|
. PHP_EOL . PHP_EOL;
|
|
$s .= '$o[\'' . $key . '\'][\'' . $ke . '\'] = ' .
|
|
str_replace(' ', ' ',
|
|
var_export($va, true)) . ';';
|
|
}
|
|
} else {
|
|
$s .= '$o[\'' . $key . '\'] = '
|
|
. var_export($value, true) . ';';
|
|
}
|
|
}
|
|
$s .= PHP_EOL . 'return $o;';
|
|
} else {
|
|
$s = 'return ' . var_export($data, true) . ';';
|
|
}
|
|
$file = $this->_file($name);
|
|
$r = @file_put_contents($file, "<?php $s");
|
|
@chmod($file, 0777);
|
|
if ($r === false) {
|
|
$this->throwException();
|
|
}
|
|
return $r;
|
|
}
|
|
|
|
/**
|
|
* retrieve data from the cache
|
|
*
|
|
* @param string $name
|
|
* @param bool $ignoreErrors
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function get($name, $ignoreErrors = false)
|
|
{
|
|
$file = $this->_file($name);
|
|
if (file_exists($file)) {
|
|
return include($file);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* delete data from the cache
|
|
*
|
|
* @param string $name
|
|
* @param bool $ignoreErrors
|
|
*
|
|
* @return boolean true if successful
|
|
*/
|
|
public function clear($name, $ignoreErrors = false)
|
|
{
|
|
return @unlink($this->_file($name));
|
|
}
|
|
|
|
/**
|
|
* check if the given name is cached
|
|
*
|
|
* @param string $name
|
|
*
|
|
* @return boolean true if cached
|
|
*/
|
|
public function isCached($name)
|
|
{
|
|
return file_exists($this->_file($name));
|
|
}
|
|
|
|
private function _file($name)
|
|
{
|
|
return self::$cacheDir . '/' . $name . '.php';
|
|
}
|
|
|
|
private function throwException()
|
|
{
|
|
throw new \Exception(
|
|
'The cache directory `'
|
|
. self::$cacheDir . '` should exist with write permission.'
|
|
);
|
|
}
|
|
}
|
|
|