diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php index 37203326..6fad570f 100644 --- a/libs/Smarty.class.php +++ b/libs/Smarty.class.php @@ -183,6 +183,9 @@ class Smarty */ var $cache_modified_check = false; + var $volatile_plugins = array('volatile'=>true, + 'insert_f' => '*'); + /** * This determines how Smarty handles "" tags in templates. * possible values: @@ -1223,6 +1226,14 @@ class Smarty header("Last-Modified: ".gmdate('D, d M Y H:i:s', time()).' GMT'); } } + + if (isset($this->_cache_info['expires'])) { + $expires = $this->_cache_info['expires']; + } else { + $expires = 0; + } + header("Expires: " . gmdate('D, d M Y H:i:s', $expires) . ' GMT'); + } // load filters that are marked as autoload @@ -1447,7 +1458,7 @@ class Smarty } - $smarty_compiler = new $this->compiler_class; + $smarty_compiler =& new $this->compiler_class(); $smarty_compiler->template_dir = $this->template_dir; $smarty_compiler->compile_dir = $this->compile_dir; diff --git a/libs/Smarty_Compiler.class.php b/libs/Smarty_Compiler.class.php index c9a3d0af..fd6a033f 100644 --- a/libs/Smarty_Compiler.class.php +++ b/libs/Smarty_Compiler.class.php @@ -1017,7 +1017,7 @@ class Smarty_Compiler extends Smarty { $this->_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__); } - $output .= "if (isset(\$this->_sections[$section_name])) unset(\$this->_sections[$section_name]);\n"; + $output .= "unset(\$this->_sections[$section_name]);\n"; $section_props = "\$this->_sections[$section_name]"; foreach ($attrs as $attr_name => $attr_value) { diff --git a/libs/core/core.assemble_plugin_filepath.php b/libs/core/core.assemble_plugin_filepath.php index cb8f5441..48f6d2c4 100644 --- a/libs/core/core.assemble_plugin_filepath.php +++ b/libs/core/core.assemble_plugin_filepath.php @@ -29,11 +29,6 @@ function smarty_core_assemble_plugin_filepath($params, &$smarty) // see if path is relative if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { $_relative_paths[] = $_plugin_dir; - // relative path, see if it is in the SMARTY_DIR - if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { - $_return = SMARTY_DIR . $_plugin_filepath; - break; - } } // try relative to cwd (or absolute) if (@is_readable($_plugin_filepath)) { @@ -55,6 +50,12 @@ function smarty_core_assemble_plugin_filepath($params, &$smarty) $_return = $_params['new_file_path']; break; } + // maybe it is in the SMARTY_DIR + if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { + $_return = SMARTY_DIR . $_plugin_filepath; + break; + } + } } } diff --git a/libs/core/core.read_cache_file.php b/libs/core/core.read_cache_file.php index 2ab42811..dcecc384 100644 --- a/libs/core/core.read_cache_file.php +++ b/libs/core/core.read_cache_file.php @@ -41,6 +41,7 @@ function smarty_core_read_cache_file(&$params, &$smarty) $_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); + # $params['results'] = file_get_contents($_cache_file); } if (empty($params['results'])) { @@ -52,6 +53,8 @@ function smarty_core_read_cache_file(&$params, &$smarty) $cache_header = $cache_split[0]; $_cache_info = unserialize($cache_header); + if (!isset($_cache_info['expires'])) + $_cache_info['expires'] = time() + $smarty->cache_lifetime; if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ // caching by expiration time diff --git a/libs/core/core.write_file.php b/libs/core/core.write_file.php index b4fa92e5..3adaf9e3 100644 --- a/libs/core/core.write_file.php +++ b/libs/core/core.write_file.php @@ -25,7 +25,9 @@ function smarty_core_write_file($params, &$smarty) // write to tmp file, then rename it to avoid // file locking race condition - $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid(''); + # $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid(''); + $_tmp_file = tempnam($_dirname , '_tmp'); + # $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('', true); if (!($fd = @fopen($_tmp_file, 'w'))) { $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); diff --git a/libs/debug.tpl b/libs/debug.tpl index 01265fb4..4d04b8d0 100644 --- a/libs/debug.tpl +++ b/libs/debug.tpl @@ -29,14 +29,14 @@ {else}