$cacheDir, 'lifeTime' => $this->getLifeTime(), 'automaticSerialization' => true ); $this->cache = new TCache_Lite($options); } /** * Get the cache life time. * @return int Cache life time. */ public function getLifeTime() { return $this->lifetime; } /** * Set the cache life time. * @param int $time Cache life time. */ public function setLifeTime($time) { $this->lifetime = (int)$time; } /** * Get the cache file ID based section and locale. * @param string $catalogue The translation section. * @param string $culture The translation locale, e.g. "en_AU". */ protected function getID($catalogue, $culture) { return $catalogue.':'.$culture; } /** * Get the cache file GROUP based section and locale. * @param string $catalogue The translation section. * @param string $culture The translation locale, e.g. "en_AU". */ protected function getGroup($catalogue, $culture) { return $catalogue.':'.get_class($this); } /** * Get the data from the cache. * @param string $catalogue The translation section. * @param string $culture The translation locale, e.g. "en_AU". * @param string $filename If the source is a file, this file's modified * time is newer than the cache's modified time, no cache hit. * @return mixed Boolean FALSE if no cache hit. Otherwise, translation * table data for the specified section and locale. */ public function get($catalogue, $culture, $lastmodified=0) { $ID = $this->getID($catalogue, $culture); $group = $this->getGroup($catalogue, $culture); $this->cache->_setFileName($ID, $group); $cache = $this->cache->getCacheFile(); if(is_file($cache) == false) return false; $lastmodified = (int)$lastmodified; if($lastmodified <= 0 || $lastmodified > filemtime($cache)) return false; //echo '@@ Cache hit: "'.$ID.'" : "'.$group.'"'; //echo "
\n"; return $this->cache->get($ID, $group); } /** * Save the data to cache for the specified section and locale. * @param array $data The data to save. * @param string $catalogue The translation section. * @param string $culture The translation locale, e.g. "en_AU". */ public function save($data, $catalogue, $culture) { $ID = $this->getID($catalogue, $culture); $group = $this->getGroup($catalogue, $culture); //echo '## Cache save: "'.$ID.'" : "'.$group.'"'; //echo "
\n"; return $this->cache->save($data, $ID, $group); } /** * Clean up the cache for the specified section and locale. * @param string $catalogue The translation section. * @param string $culture The translation locale, e.g. "en_AU". */ public function clean($catalogue, $culture) { $group = $this->getGroup($catalogue, $culture); $this->cache->clean($group); } /** * Flush the cache. Deletes all the cache files. */ public function clear() { $this->cache->clean(); } }