[ Index ]
 

Code source de PRADO 3.0.6

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/framework/I18N/core/ -> MessageCache.php (source)

   1  <?php
   2  /**
   3   * Translation table cache.
   4   * @author $Author: weizhuo $
   5   * @version $Id: MessageCache.php 1397 2006-09-07 07:55:53Z wei $
   6   * @package System.I18N.core
   7   */
   8  
   9  /**
  10   * Load the cache lite library.
  11   */
  12  require_once(dirname(__FILE__).'/TCache_Lite.php');
  13  
  14  /**
  15   * Cache the translation table into the file system.
  16   * It can cache each cataloug+variant or just the whole section.
  17   * @package System.I18N.core
  18   * @author $Author: weizhuo $
  19   * @version $Id: MessageCache.php 1397 2006-09-07 07:55:53Z wei $
  20   */
  21  class MessageCache 
  22  {
  23  
  24      /**
  25       * Cache Lite instance.
  26       * @var TCache_Lite
  27       */
  28      protected $cache;
  29  
  30      /**
  31       * Caceh life time, default is 1 year.
  32       */
  33      protected $lifetime = 3153600;
  34      
  35  
  36      /**
  37       * Create a new Translation cache.
  38       * @param string $cacheDir Directory to store the cache files.
  39       */
  40  	public function __construct($cacheDir)
  41      {        
  42          $cacheDir = $cacheDir.'/';
  43          
  44          if(!is_dir($cacheDir))
  45              throw new Exception(
  46                  'The cache directory '.$cacheDir.' does not exists.'.
  47                  'The cache directory must be writable by the server.');
  48          if(!is_writable($cacheDir))
  49              throw new Exception(
  50                  'The cache directory '.$cacheDir.' must be writable '.
  51                  'by the server.');
  52          
  53          $options = array(
  54              'cacheDir' => $cacheDir,
  55              'lifeTime' => $this->getLifeTime(),
  56              'automaticSerialization' => true
  57          );
  58  
  59          $this->cache = new TCache_Lite($options);
  60      }
  61  
  62      /**
  63       * Get the cache life time.
  64       * @return int Cache life time.
  65       */
  66  	public function getLifeTime()
  67      {
  68          return $this->lifetime;
  69      }
  70  
  71      /**
  72       * Set the cache life time.
  73       * @param int $time Cache life time.
  74       */
  75  	public function setLifeTime($time)
  76      {
  77          $this->lifetime = intval($time);
  78      }
  79  
  80      /**
  81       * Get the cache file ID based section and locale.
  82       * @param string $catalogue The translation section.
  83       * @param string $culture The translation locale, e.g. "en_AU".
  84       */
  85  	protected function getID($catalogue, $culture)
  86      {
  87          return $catalogue.':'.$culture;
  88      }
  89  
  90      /**
  91       * Get the cache file GROUP based section and locale.
  92       * @param string $catalogue The translation section.
  93       * @param string $culture The translation locale, e.g. "en_AU".
  94       */
  95  	protected function getGroup($catalogue, $culture)
  96      {
  97          return $catalogue.':'.get_class($this);
  98      }
  99  
 100      /**
 101       * Get the data from the cache.
 102       * @param string $catalogue The translation section.
 103       * @param string $culture The translation locale, e.g. "en_AU".
 104       * @param string $filename If the source is a file, this file's modified
 105       * time is newer than the cache's modified time, no cache hit. 
 106       * @return mixed Boolean FALSE if no cache hit. Otherwise, translation
 107       * table data for the specified section and locale.
 108       */
 109  	public function get($catalogue, $culture, $lastmodified=0) 
 110      {
 111          $ID = $this->getID($catalogue, $culture);
 112          $group = $this->getGroup($catalogue, $culture); 
 113  
 114          $this->cache->_setFileName($ID, $group);
 115  
 116          $cache = $this->cache->getCacheFile();
 117          
 118          if(is_file($cache) == false) 
 119              return false;
 120  
 121  
 122          $lastmodified = intval($lastmodified);
 123          
 124          if($lastmodified <= 0 || $lastmodified > filemtime($cache))
 125              return false;        
 126          
 127          //echo '@@ Cache hit: "'.$ID.'" : "'.$group.'"';
 128          //echo "<br>\n";
 129              
 130          return $this->cache->get($ID, $group);
 131      }
 132  
 133      /**
 134       * Save the data to cache for the specified section and locale.
 135       * @param array $data The data to save.
 136       * @param string $catalogue The translation section.
 137       * @param string $culture The translation locale, e.g. "en_AU".
 138       */
 139  	public function save($data, $catalogue, $culture) 
 140      {        
 141          $ID = $this->getID($catalogue, $culture);
 142          $group = $this->getGroup($catalogue, $culture); 
 143          
 144          //echo '## Cache save: "'.$ID.'" : "'.$group.'"';
 145          //echo "<br>\n";
 146          
 147          return $this->cache->save($data, $ID, $group);
 148      }
 149      
 150      /**
 151       * Clean up the cache for the specified section and locale.
 152       * @param string $catalogue The translation section.
 153       * @param string $culture The translation locale, e.g. "en_AU".
 154       */
 155  	public function clean($catalogue, $culture) 
 156      {
 157          $group = $this->getGroup($catalogue, $culture); 
 158          $this->cache->clean($group);
 159      }
 160      
 161      /**
 162       * Flush the cache. Deletes all the cache files.
 163       */
 164  	public function clear()
 165      {
 166          $this->cache->clean();
 167      }
 168  
 169  }
 170  
 171  ?>


Généré le : Sun Feb 25 21:07:04 2007 par Balluche grâce à PHPXref 0.7