Source for file core.read_cache_file.php

Documentation is available at core.read_cache_file.php

  1. <?php
  2. /**
  3.  * Smarty plugin
  4.  * @package Smarty
  5.  * @subpackage plugins
  6.  */
  7.  
  8. /**
  9.  * read a cache file, determine if it needs to be
  10.  * regenerated or not
  11.  *
  12.  * @param string $tpl_file 
  13.  * @param string $cache_id 
  14.  * @param string $compile_id 
  15.  * @param string $results 
  16.  * @return boolean 
  17.  */
  18.  
  19. //  $tpl_file, $cache_id, $compile_id, &$results
  20.  
  21. function smarty_core_read_cache_file(&$params&$smarty)
  22. {
  23.     static  $content_cache array();
  24.  
  25.     if ($smarty->force_compile{
  26.         // force compile enabled, always regenerate
  27.         return false;
  28.     }
  29.  
  30.     if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) {
  31.         list($params['results']$smarty->_cache_info$content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']];
  32.         return true;
  33.     }
  34.  
  35.     if (!empty($smarty->cache_handler_func)) {
  36.         // use cache_handler function
  37.         call_user_func_array($smarty->cache_handler_func,
  38.                              array('read'&$smarty&$params['results']$params['tpl_file']$params['cache_id']$params['compile_id']null));
  39.     else {
  40.         // use local cache file
  41.         $_auto_id $smarty->_get_auto_id($params['cache_id']$params['compile_id']);
  42.         $_cache_file $smarty->_get_auto_filename($smarty->cache_dir$params['tpl_file']$_auto_id);
  43.         $params['results'$smarty->_read_file($_cache_file);
  44.     }
  45.  
  46.     if (empty($params['results'])) {
  47.         // nothing to parse (error?), regenerate cache
  48.         return false;
  49.     }
  50.  
  51.     $_contents $params['results'];
  52.     $_info_start strpos($_contents"\n"1;
  53.     $_info_len = (int)substr($_contents0$_info_start 1);
  54.     $_cache_info unserialize(substr($_contents$_info_start$_info_len));
  55.     $params['results'substr($_contents$_info_start $_info_len);
  56.  
  57.     if ($smarty->caching == && isset ($_cache_info['expires'])){
  58.         // caching by expiration time
  59.         if ($_cache_info['expires'> -&& (time($_cache_info['expires'])) {
  60.             // cache expired, regenerate
  61.             return false;
  62.         }
  63.     else {
  64.         // caching by lifetime
  65.         if ($smarty->cache_lifetime > -&& (time($_cache_info['timestamp'$smarty->cache_lifetime)) {
  66.             // cache expired, regenerate
  67.             return false;
  68.         }
  69.     }
  70.  
  71.     if ($smarty->compile_check{
  72.         $_params array('get_source' => false'quiet'=>true);
  73.         foreach (array_keys($_cache_info['template']as $_template_dep{
  74.             $_params['resource_name'$_template_dep;
  75.             if (!$smarty->_fetch_resource_info($_params|| $_cache_info['timestamp'$_params['resource_timestamp']{
  76.                 // template file has changed, regenerate cache
  77.                 return false;
  78.             }
  79.         }
  80.  
  81.         if (isset($_cache_info['config'])) {
  82.             $_params array('resource_base_path' => $smarty->config_dir'get_source' => false'quiet'=>true);
  83.             foreach (array_keys($_cache_info['config']as $_config_dep{
  84.                 $_params['resource_name'$_config_dep;
  85.                 if (!$smarty->_fetch_resource_info($_params|| $_cache_info['timestamp'$_params['resource_timestamp']{
  86.                     // config file has changed, regenerate cache
  87.                     return false;
  88.                 }
  89.             }
  90.         }
  91.     }
  92.  
  93.     $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] array($params['results']$_cache_info);
  94.  
  95.     $smarty->_cache_info $_cache_info;
  96.     return true;
  97. }
  98.  
  99. /* vim: set expandtab: */
  100.  
  101. ?>

Documentation generated on Sun, 09 Mar 2008 23:51:12 -0300 by phpDocumentor 1.4.0

SourceForge.net Logo Support This Project