Source for file core.read_cache_file.php
Documentation is available at core.read_cache_file.php
* read a cache file, determine if it needs to be
* @param string $tpl_file
* @param string $cache_id
* @param string $compile_id
// $tpl_file, $cache_id, $compile_id, &$results
static $content_cache =
array();
if ($smarty->force_compile) {
// force compile enabled, always regenerate
if (isset
($content_cache[$params['tpl_file'].
','.
$params['cache_id'].
','.
$params['compile_id']])) {
list
($params['results'], $smarty->_cache_info) =
$content_cache[$params['tpl_file'].
','.
$params['cache_id'].
','.
$params['compile_id']];
if (!empty($smarty->cache_handler_func)) {
// use cache_handler function
array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null));
$_auto_id =
$smarty->_get_auto_id($params['cache_id'], $params['compile_id']);
$_cache_file =
$smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id);
$params['results'] =
$smarty->_read_file($_cache_file);
if (empty($params['results'])) {
// nothing to parse (error?), regenerate cache
$_contents =
$params['results'];
$_info_start =
strpos($_contents, "\n") +
1;
$_info_len = (int)
substr($_contents, 0, $_info_start -
1);
$params['results'] =
substr($_contents, $_info_start +
$_info_len);
if ($smarty->caching ==
2 && isset
($_cache_info['expires'])){
// caching by expiration time
if ($_cache_info['expires'] > -
1 &&
(time() >
$_cache_info['expires'])) {
// cache expired, regenerate
if ($smarty->cache_lifetime > -
1 &&
(time() -
$_cache_info['timestamp'] >
$smarty->cache_lifetime)) {
// cache expired, regenerate
if ($smarty->compile_check) {
$_params =
array('get_source' =>
false, 'quiet'=>
true);
foreach (array_keys($_cache_info['template']) as $_template_dep) {
$_params['resource_name'] =
$_template_dep;
if (!$smarty->_fetch_resource_info($_params) ||
$_cache_info['timestamp'] <
$_params['resource_timestamp']) {
// template file has changed, regenerate cache
if (isset
($_cache_info['config'])) {
$_params =
array('resource_base_path' =>
$smarty->config_dir, 'get_source' =>
false, 'quiet'=>
true);
foreach (array_keys($_cache_info['config']) as $_config_dep) {
$_params['resource_name'] =
$_config_dep;
if (!$smarty->_fetch_resource_info($_params) ||
$_cache_info['timestamp'] <
$_params['resource_timestamp']) {
// config file has changed, regenerate cache
$content_cache[$params['tpl_file'].
','.
$params['cache_id'].
','.
$params['compile_id']] =
array($params['results'], $_cache_info);
$smarty->_cache_info =
$_cache_info;
/* vim: set expandtab: */
Documentation generated on Sun, 09 Mar 2008 23:51:12 -0300 by phpDocumentor 1.4.0