Mercurial > SimpleWebPresenter
diff CacheTimeCheck.inc @ 69:dd4ddedca4c5
Add convenience header ScriptIncludeCache
Split CacheTimeCheck and FileCacheSet
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 11 Oct 2012 23:32:14 +0200 |
| parents | 4dfa3f6a2dc1 |
| children | d98e315308cd |
line wrap: on
line diff
--- a/CacheTimeCheck.inc Thu Oct 11 23:16:53 2012 +0200 +++ b/CacheTimeCheck.inc Thu Oct 11 23:32:14 2012 +0200 @@ -1,123 +1,10 @@ <?php $baseDir = dirname(__FILE__); -include_once 'Logger.inc'; include_once 'common-functions.inc'; +include_once 'FileCacheSet.inc'; $cache = ScriptIncludeCache::instance(__FILE__); -$cache->cache_time("${baseDir}/Logger.inc"); -$cache->cache_time("${baseDir}/common-functions.inc"); - -class FileCacheSet { - private $newest = 0; - private $files = array(); - private $parentCaches = array(); - - protected function __construct($parent = null) { - if ($parent) { - $this->addParent($parent); - } - } - - protected function addParent($parent) - { - array_push($this->parentCaches, $parent); - } - - /** - * List a set of files which contributes to this pages cacheset. - * - * @param $humanReadable If the timestamp should be humand readable. - * - * @return an associative array of file, and timestamp - */ - function cacheSet($humanReadable = False) - { - $retVal = array(); - foreach ($this->parentCaches as $parent) { - $retVal = array_merge($retVal, $parent->cacheSet($humanReadable)); - } - foreach($this->files as $file) { - $mtime = filemtime($file); - if ($humanReadable) - $mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT'; - - $retVal[$file] = $mtime; - } - return $retVal; - } - - /** - * Include a file in the cacheset - * - * @param $path the path of the file - */ - function cache_time($path) - { - if (!file_exists($path)) { - Logger::warn("${path} does not exist"); - errorPage("Resource is not available"); - } - - array_push($this->files, $path); - $mtime = filemtime($path); - if ($mtime > $this->newest) { - $this->newest = $mtime; - } - } - - function getNewest() - { - $newest = 0; - foreach ($this->parentCaches as $parent) { - $newest = max($newest, $parent->getNewest()); - } - $newest = max($newest, $this->newest); - return $newest; - } -} - -class ScriptIncludeCache extends FileCacheSet -{ - private static $myInstance = 0; - - protected function __construct($filename = False) - { - parent::__construct(); - if ($filename) - $this->cache_time($filename); - $this->cache_time(__FILE__); - } - - /** - * Generates a singleton instance of this CacheTimeCheck - * - * @param $filename an optional file to include in the cacheset - * - * @return a CacheTimeCheck object - */ - function instance($filename = False) - { - if (! self::$myInstance) - self::$myInstance = new self($filename); - elseif ($filename) - self::$myInstance->cache_time($filename); - return self::$myInstance; - } - - /** - * Convenience function to include a file, and add it to the cacheset. - * - * @param $path path of the file - * @param $basedir a directory to prepend to the path - */ - function includeOnce($path, $basedir = false) - { - if ($basedir) - $path = $basedir . "/" . $path; - $this->cache_time($path); - include_once($path); - } -} +$cache->cache_time("${baseDir}/FileCacheSet.inc"); /** * CacheTimeCheck provides a set of functions to enable generating a
