summaryrefslogtreecommitdiff
path: root/framework/I18N/core/MessageCache.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/I18N/core/MessageCache.php')
-rw-r--r--framework/I18N/core/MessageCache.php342
1 files changed, 171 insertions, 171 deletions
diff --git a/framework/I18N/core/MessageCache.php b/framework/I18N/core/MessageCache.php
index d4f58f1d..44392b79 100644
--- a/framework/I18N/core/MessageCache.php
+++ b/framework/I18N/core/MessageCache.php
@@ -1,171 +1,171 @@
-<?php
-/**
- * Translation table cache.
- * @author $Author: weizhuo $
- * @version $Id$
- * @package System.I18N.core
- */
-
-/**
- * Load the cache lite library.
- */
-require_once(dirname(__FILE__).'/TCache_Lite.php');
-
-/**
- * Cache the translation table into the file system.
- * It can cache each cataloug+variant or just the whole section.
- * @package System.I18N.core
- * @author $Author: weizhuo $
- * @version $Id$
- */
-class MessageCache
-{
-
- /**
- * Cache Lite instance.
- * @var TCache_Lite
- */
- protected $cache;
-
- /**
- * Caceh life time, default is 1 year.
- */
- protected $lifetime = 3153600;
-
-
- /**
- * Create a new Translation cache.
- * @param string $cacheDir Directory to store the cache files.
- */
- public function __construct($cacheDir)
- {
- $cacheDir = $cacheDir.'/';
-
- if(!is_dir($cacheDir))
- throw new Exception(
- 'The cache directory '.$cacheDir.' does not exists.'.
- 'The cache directory must be writable by the server.');
- if(!is_writable($cacheDir))
- throw new Exception(
- 'The cache directory '.$cacheDir.' must be writable '.
- 'by the server.');
-
- $options = array(
- 'cacheDir' => $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 "<br>\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 "<br>\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();
- }
-
-}
-
-?>
+<?php
+/**
+ * Translation table cache.
+ * @author $Author: weizhuo $
+ * @version $Id$
+ * @package System.I18N.core
+ */
+
+/**
+ * Load the cache lite library.
+ */
+require_once(dirname(__FILE__).'/TCache_Lite.php');
+
+/**
+ * Cache the translation table into the file system.
+ * It can cache each cataloug+variant or just the whole section.
+ * @package System.I18N.core
+ * @author $Author: weizhuo $
+ * @version $Id$
+ */
+class MessageCache
+{
+
+ /**
+ * Cache Lite instance.
+ * @var TCache_Lite
+ */
+ protected $cache;
+
+ /**
+ * Caceh life time, default is 1 year.
+ */
+ protected $lifetime = 3153600;
+
+
+ /**
+ * Create a new Translation cache.
+ * @param string $cacheDir Directory to store the cache files.
+ */
+ public function __construct($cacheDir)
+ {
+ $cacheDir = $cacheDir.'/';
+
+ if(!is_dir($cacheDir))
+ throw new Exception(
+ 'The cache directory '.$cacheDir.' does not exists.'.
+ 'The cache directory must be writable by the server.');
+ if(!is_writable($cacheDir))
+ throw new Exception(
+ 'The cache directory '.$cacheDir.' must be writable '.
+ 'by the server.');
+
+ $options = array(
+ 'cacheDir' => $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 "<br>\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 "<br>\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();
+ }
+
+}
+
+?>