summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify/lib/Minify/Cache
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/minify/lib/Minify/Cache')
-rw-r--r--admin/survey/minify/lib/Minify/Cache/APC.php136
-rw-r--r--admin/survey/minify/lib/Minify/Cache/File.php183
-rw-r--r--admin/survey/minify/lib/Minify/Cache/Memcache.php141
-rw-r--r--admin/survey/minify/lib/Minify/Cache/Null.php67
-rw-r--r--admin/survey/minify/lib/Minify/Cache/WinCache.php139
-rw-r--r--admin/survey/minify/lib/Minify/Cache/XCache.php130
-rw-r--r--admin/survey/minify/lib/Minify/Cache/ZendPlatform.php129
7 files changed, 925 insertions, 0 deletions
diff --git a/admin/survey/minify/lib/Minify/Cache/APC.php b/admin/survey/minify/lib/Minify/Cache/APC.php
new file mode 100644
index 0000000..27a57d7
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/APC.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Class Minify_Cache_APC
+ * @package Minify
+ */
+
+/**
+ * APC-based cache class for Minify
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_APC());
+ * </code>
+ *
+ * @package Minify
+ * @author Chris Edwards
+ **/
+class Minify_Cache_APC implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_APC object, to be passed to
+ * Minify::setCache().
+ *
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ * @return null
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return apc_store($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from apc, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+ $ret = apc_fetch($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/File.php b/admin/survey/minify/lib/Minify/Cache/File.php
new file mode 100644
index 0000000..5db1e20
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/File.php
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Class Minify_Cache_File
+ * @package Minify
+ */
+
+use Psr\Log\LoggerInterface;
+
+class Minify_Cache_File implements Minify_CacheInterface
+{
+
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var bool
+ */
+ private $locking;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @param string $path
+ * @param bool $fileLocking
+ * @param LoggerInterface $logger
+ */
+ public function __construct($path = '', $fileLocking = false, LoggerInterface $logger = null)
+ {
+ if (! $path) {
+ $path = sys_get_temp_dir();
+ }
+ $this->locking = $fileLocking;
+ $this->path = $path;
+
+ if (!$logger) {
+ $logger = new \Monolog\Logger('minify');
+ }
+ $this->logger = $logger;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ $flag = $this->locking ? LOCK_EX : null;
+ $file = $this->path . '/' . $id;
+
+ if (! @file_put_contents($file, $data, $flag)) {
+ $this->logger->warning("Minify_Cache_File: Write failed to '$file'");
+ }
+
+ // write control
+ if ($data !== $this->fetch($id)) {
+ @unlink($file);
+ $this->logger->warning("Minify_Cache_File: Post-write read failed for '$file'");
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ return filesize($this->path . '/' . $id);
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ $file = $this->path . '/' . $id;
+
+ return (is_file($file) && (filemtime($file) >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id (e.g. a filename)
+ */
+ public function display($id)
+ {
+ if (!$this->locking) {
+ readfile($this->path . '/' . $id);
+
+ return;
+ }
+
+ $fp = fopen($this->path . '/' . $id, 'rb');
+ flock($fp, LOCK_SH);
+ fpassthru($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ if (!$this->locking) {
+ return file_get_contents($this->path . '/' . $id);
+ }
+
+ $fp = fopen($this->path . '/' . $id, 'rb');
+ if (!$fp) {
+ return false;
+ }
+
+ flock($fp, LOCK_SH);
+ $ret = stream_get_contents($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+
+ return $ret;
+ }
+
+ /**
+ * Fetch the cache path used
+ *
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+
+ /**
+ * Get a usable temp directory
+ *
+ * @return string
+ * @deprecated
+ */
+ public static function tmp()
+ {
+ trigger_error(__METHOD__ . ' is deprecated in Minfy 3.0', E_USER_DEPRECATED);
+
+ return sys_get_temp_dir();
+ }
+
+ /**
+ * Send message to the Minify logger
+ * @param string $msg
+ * @return null
+ * @deprecated Use $this->logger
+ */
+ protected function _log($msg)
+ {
+ trigger_error(__METHOD__ . ' is deprecated in Minify 3.0.', E_USER_DEPRECATED);
+ $this->logger->warning($msg);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/Memcache.php b/admin/survey/minify/lib/Minify/Cache/Memcache.php
new file mode 100644
index 0000000..726785a
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/Memcache.php
@@ -0,0 +1,141 @@
+<?php
+/**
+ * Class Minify_Cache_Memcache
+ * @package Minify
+ */
+
+/**
+ * Memcache-based cache class for Minify
+ *
+ * <code>
+ * // fall back to disk caching if memcache can't connect
+ * $memcache = new Memcache;
+ * if ($memcache->connect('localhost', 11211)) {
+ * Minify::setCache(new Minify_Cache_Memcache($memcache));
+ * } else {
+ * Minify::setCache();
+ * }
+ * </code>
+ **/
+class Minify_Cache_Memcache implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_Memcache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param Memcache $memcache already-connected instance
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ */
+ public function __construct($memcache, $expire = 0)
+ {
+ $this->_mc = $memcache;
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return $this->_mc->set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", 0, $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_mc = null;
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from memcache, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = $this->_mc->get($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/Null.php b/admin/survey/minify/lib/Minify/Cache/Null.php
new file mode 100644
index 0000000..b6f6566
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/Null.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Class Minify_Cache_Null
+ *
+ * If this is used, Minify will not use a cache and, for each 200 response, will
+ * need to recombine files, minify and encode the output.
+ *
+ * @package Minify
+ */
+class Minify_Cache_Null implements Minify_CacheInterface
+{
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id (e.g. a filename)
+ */
+ public function display($id)
+ {
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/Cache/WinCache.php b/admin/survey/minify/lib/Minify/Cache/WinCache.php
new file mode 100644
index 0000000..089d66d
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/WinCache.php
@@ -0,0 +1,139 @@
+<?php
+/**
+ * Class Minify_Cache_Wincache
+ * @package Minify
+ */
+
+/**
+ * WinCache-based cache class for Minify
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_WinCache());
+ * </code>
+ *
+ * @package Minify
+ * @author Matthias Fax
+ **/
+class Minify_Cache_WinCache implements Minify_CacheInterface
+{
+ /**
+ * Create a Minify_Cache_Wincache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ * @throws Exception
+ */
+ public function __construct($expire = 0)
+ {
+ if (!function_exists('wincache_ucache_info')) {
+ throw new Exception("WinCache for PHP is not installed to be able to use Minify_Cache_WinCache!");
+ }
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return wincache_ucache_set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (!$this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int) ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from WinCache, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $suc = false;
+ $ret = wincache_ucache_get($id, $suc);
+ if (!$suc) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/Cache/XCache.php b/admin/survey/minify/lib/Minify/Cache/XCache.php
new file mode 100644
index 0000000..aa2a8de
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/XCache.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Class Minify_Cache_XCache
+ *
+ * @link http://xcache.lighttpd.net/
+ * @package Minify
+ */
+
+/**
+ * XCache-based cache class for Minify
+ * {@see http://xcache.lighttpd.net/wiki/XcacheApi XCache API}
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_XCache());
+ * </code>
+ *
+ * @package Minify
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ **/
+class Minify_Cache_XCache implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_XCache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ * @param string $data
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return xcache_set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ * @param int $srcMtime mtime of the original source file(s)
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from xcache, store in instance
+ *
+ * @param string $id
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = xcache_get($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php b/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php
new file mode 100644
index 0000000..90dfabb
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Class Minify_Cache_ZendPlatform
+ * @package Minify
+ */
+
+/**
+ * ZendPlatform-based cache class for Minify
+ *
+ * Based on Minify_Cache_APC, uses output_cache_get/put (currently deprecated)
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_ZendPlatform());
+ * </code>
+ *
+ * @package Minify
+ * @author Patrick van Dissel
+ */
+class Minify_Cache_ZendPlatform implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_ZendPlatform object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return output_cache_put($id, "{$_SERVER['REQUEST_TIME']}|{$data}");
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ return $this->_fetch($id) ? strlen($this->_data) : false;
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from ZendPlatform, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = output_cache_get($id, $this->_exp);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}