diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2014-03-15 15:11:12 -0300 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2014-03-15 15:11:12 -0300 |
commit | d42607998482e36865c1d8a443f92a457f6b2f3b (patch) | |
tree | 9840be82dbf1b58da42d0a66f20b23ea0b01cf55 /vendors/min/lib/Minify/Cache/File.php | |
download | elgg-d42607998482e36865c1d8a443f92a457f6b2f3b.tar.gz elgg-d42607998482e36865c1d8a443f92a457f6b2f3b.tar.bz2 |
Squashed 'mod/minify/' content from commit 5949018
git-subtree-dir: mod/minify
git-subtree-split: 594901859d5afc1fa364322428bd7a6d5c6a3f96
Diffstat (limited to 'vendors/min/lib/Minify/Cache/File.php')
-rw-r--r-- | vendors/min/lib/Minify/Cache/File.php | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/vendors/min/lib/Minify/Cache/File.php b/vendors/min/lib/Minify/Cache/File.php new file mode 100644 index 000000000..8744a7e04 --- /dev/null +++ b/vendors/min/lib/Minify/Cache/File.php @@ -0,0 +1,125 @@ +<?php +/** + * Class Minify_Cache_File + * @package Minify + */ + +class Minify_Cache_File { + + public function __construct($path = '', $fileLocking = false) + { + if (! $path) { + require_once 'Solar/Dir.php'; + $path = rtrim(Solar_Dir::tmp(), DIRECTORY_SEPARATOR); + }
+ $this->_locking = $fileLocking; + $this->_path = $path; + } + + /** + * 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;
+ if (is_file($this->_path . '/' . $id)) {
+ @unlink($this->_path . '/' . $id);
+ }
+ if (! @file_put_contents($this->_path . '/' . $id, $data, $flag)) {
+ return false;
+ } + // write control
+ if ($data !== $this->fetch($id)) {
+ @unlink($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) {
+ $fp = fopen($this->_path . '/' . $id, 'rb');
+ flock($fp, LOCK_SH);
+ fpassthru($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+ } else {
+ readfile($this->_path . '/' . $id);
+ }
+ } + + /** + * Fetch the cached content + * + * @param string $id cache id (e.g. a filename) + * + * @return string + */ + public function fetch($id) + { + if ($this->_locking) {
+ $fp = fopen($this->_path . '/' . $id, 'rb');
+ flock($fp, LOCK_SH);
+ $ret = stream_get_contents($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+ return $ret;
+ } else {
+ return file_get_contents($this->_path . '/' . $id);
+ } + } + + /** + * Fetch the cache path used + * + * @return string + */ + public function getPath() + { + return $this->_path; + } + + private $_path = null; + private $_locking = null;
+} |