mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-06 19:34:27 +02:00
- do not recompile evaluated templates if reused just with other data
- recompile config files when config properties did change - some lexer/parser otimizations
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
10/13/2009
|
||||
- do not recompile evaluated templates if reused just with other data
|
||||
- recompile config files when config properties did change
|
||||
- some lexer/parser otimizations
|
||||
|
||||
10/11/2009
|
||||
- allow {block} tags inside included templates
|
||||
- bugfix for resource plugins in Smarty2 format
|
||||
|
@@ -122,6 +122,8 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
public $compile_error = false;
|
||||
// caching enabled
|
||||
public $caching = false;
|
||||
// merge compiled includea
|
||||
public $merge_compiled_includes = true;
|
||||
// cache lifetime
|
||||
public $cache_lifetime = 0;
|
||||
// force cache file creation
|
||||
@@ -151,7 +153,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
// config var settings
|
||||
public $config_overwrite = true; //Controls whether variables with the same name overwrite each other.
|
||||
public $config_booleanize = true; //Controls whether config values of on/true/yes and off/false/no get converted to boolean
|
||||
public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file.
|
||||
public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file.
|
||||
// config vars
|
||||
public $config_vars = array();
|
||||
// assigned tpl vars
|
||||
@@ -179,7 +181,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
// check If-Modified-Since headers
|
||||
public $cache_modified_check = false;
|
||||
// cached objects
|
||||
public $resource_objects = array();
|
||||
public $resource_objects = array();
|
||||
// registered plugins
|
||||
public $registered_plugins = array();
|
||||
// plugin search order
|
||||
@@ -286,6 +288,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
*/
|
||||
public function fetch($template, $cache_id = null, $compile_id = null, $parent = null)
|
||||
{
|
||||
$this->checkDebugging();
|
||||
if (is_object($cache_id)) {
|
||||
$parent = $cache_id;
|
||||
$cache_id = null;
|
||||
@@ -315,18 +318,15 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
* @param object $parent next higher level of Smarty variables
|
||||
*/
|
||||
public function display($template, $cache_id = null, $compile_id = null, $parent = null)
|
||||
{
|
||||
{
|
||||
if (is_object($cache_id)) {
|
||||
$parent = $cache_id;
|
||||
$cache_id = null;
|
||||
}
|
||||
// display template
|
||||
echo $this->fetch ($template, $cache_id, $compile_id, $parent);
|
||||
// debug output?
|
||||
if ($this->debugging) {
|
||||
$this->loadPlugin('Smarty_Internal_Debug');
|
||||
Smarty_Internal_Debug::display_debug($this);
|
||||
}
|
||||
// debug output
|
||||
$this->displayDebugInfo();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -340,6 +340,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
*/
|
||||
public function is_cached($template, $cache_id = null, $compile_id = null)
|
||||
{
|
||||
$this->checkDebugging();
|
||||
if (!($template instanceof $this->template_class)) {
|
||||
$template = $this->createTemplate ($template, $cache_id, $compile_id, $this);
|
||||
}
|
||||
@@ -492,6 +493,26 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
return set_exception_handler($handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if debugging handler must be loaded
|
||||
*/
|
||||
public function checkDebugging()
|
||||
{
|
||||
if ($this->debugging && !class_exists('Smarty_Internal_Debug', false)) {
|
||||
$this->loadPlugin('Smarty_Internal_Debug');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display debug info
|
||||
*/
|
||||
public function displayDebugInfo()
|
||||
{
|
||||
if ($this->debugging) {
|
||||
Smarty_Internal_Debug::display_debug($this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* trigger Smarty error
|
||||
*
|
||||
@@ -499,8 +520,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
|
||||
* @param integer $error_type
|
||||
*/
|
||||
public function trigger_error($error_msg, $error_type = E_USER_WARNING)
|
||||
{
|
||||
// trigger_error("Smarty error: $error_msg", $error_type);
|
||||
{
|
||||
throw new Exception("Smarty error: $error_msg");
|
||||
}
|
||||
|
||||
|
@@ -30,7 +30,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
|
||||
// save posible attributes
|
||||
$include_file = $_attr['file'];
|
||||
$has_compiled_template = false;
|
||||
if (true) {
|
||||
if ($compiler->smarty->merge_compiled_includes) {
|
||||
// check if compiled code can be merged
|
||||
if (strpos($include_file, '$_smarty_tpl') === false) {
|
||||
eval("\$tmp = $include_file;");
|
||||
@@ -134,20 +134,21 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
|
||||
$_output .= "\$_template->caching = $_caching;";
|
||||
// was there an assign attribute
|
||||
if (isset($_assign)) {
|
||||
$_output .= "\$_smarty_tpl->assign($_assign,\$_smarty_tpl->smarty->fetch(\$_template)); ?>";
|
||||
$_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch()); ?>";
|
||||
} else {
|
||||
if ($has_compiled_template) {
|
||||
$_output .= " \$_tpl_stack[] = \$_smarty_tpl; \$_smarty_tpl = \$_template;?>\n";
|
||||
$_output .= $compiled_tpl . "<?php /* End of included template \"" . $tpl->getTemplateFilepath() . "\" */ ?>";;
|
||||
$_output .= "<?php \$_smarty_tpl = array_pop(\$_tpl_stack);?>";
|
||||
} else {
|
||||
$_output .= " echo \$_smarty_tpl->smarty->fetch(\$_template); ?>";
|
||||
$_output .= " echo \$_template->fetch(); ?>";
|
||||
}
|
||||
}
|
||||
if ($_parent_scope != SMARTY_LOCAL_SCOPE) {
|
||||
$_output .= "<?php \$_template->updateParentVariables($_parent_scope); ?>";
|
||||
}
|
||||
return $_output;
|
||||
$_output .= "<?php unset(\$_template); ?>";
|
||||
return $_output;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -131,7 +131,9 @@ class Smarty_Internal_Config {
|
||||
}
|
||||
public function buildCompiledFilepath()
|
||||
{
|
||||
$_filepath = (string)abs(crc32($this->config_resource_name));
|
||||
$_flag = (int)$this->smarty->config_read_hidden + (int)$this->smarty->config_booleanize * 2 +
|
||||
(int)$this->smarty->config_overwrite * 4;
|
||||
$_filepath = (string)abs(crc32($this->config_resource_name . $_flag));
|
||||
// if use_sub_dirs, break file into directories
|
||||
if ($this->smarty->use_sub_dirs) {
|
||||
$_filepath = substr($_filepath, 0, 3) . DS
|
||||
|
@@ -415,7 +415,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
|
||||
public function renderTemplate ()
|
||||
{
|
||||
if ($this->usesCompiler()) {
|
||||
if ($this->mustCompile()) {
|
||||
if ($this->mustCompile() && $this->compiled_template === null) {
|
||||
$this->compileTemplateSource();
|
||||
}
|
||||
$_smarty_tpl = $this;
|
||||
|
@@ -82,6 +82,7 @@ class Smarty_Internal_Templatelexer
|
||||
$this->rdel = preg_quote($this->smarty->right_delimiter);
|
||||
$this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter;
|
||||
$this->smarty_token_names['RDEL'] = $this->smarty->right_delimiter;
|
||||
$this->tag = false;
|
||||
}
|
||||
public static function &instance($new_instance = null)
|
||||
{
|
||||
@@ -462,11 +463,13 @@ class Smarty_Internal_Templatelexer
|
||||
{
|
||||
|
||||
$this->token = Smarty_Internal_Templateparser::TP_LDEL;
|
||||
$this->tag = true;
|
||||
}
|
||||
function yy_r1_19($yy_subpatterns)
|
||||
{
|
||||
|
||||
$this->token = Smarty_Internal_Templateparser::TP_RDEL;
|
||||
$this->tag = false;
|
||||
}
|
||||
function yy_r1_20($yy_subpatterns)
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user