- fixed array access on super globals

- changed internal access to smarty object
This commit is contained in:
Uwe.Tews
2009-06-14 11:07:26 +00:00
parent 18a3bb1971
commit ae3c3fce48
6 changed files with 22 additions and 17 deletions

View File

@@ -1,3 +1,6 @@
06/14/2009
- fixed array access on super globals
06/13/2009
- bugfix at extend resource: create unique files for compiled template and cache for each combination of template files
- update extend resource to handle appen and prepend block attributes

View File

@@ -35,7 +35,7 @@ class Smarty_Internal_Compile_Extend extends Smarty_Internal_CompileBase {
$compiler->template->properties['file_dependency'][] = array($_template->getTemplateFilepath(), $_template->getTemplateTimestamp());
// $_old_source = preg_replace ('/' . $this->smarty->left_delimiter . 'extend\s+(?:file=)?\s*(\S+?|(["\']).+?\2)' . $this->smarty->right_delimiter . '/i', '' , $compiler->template->template_source, 1);
$_old_source = $compiler->template->template_source;
$_old_source = preg_replace_callback('/(' . $this->smarty->left_delimiter . 'block(.+?)' . $this->smarty->right_delimiter . ')((?:\r?\n?)(.*?)(?:\r?\n?))(' . $this->smarty->left_delimiter . '\/block(.*?)' . $this->smarty->right_delimiter . ')/is', array($this, 'saveBlockData'), $_old_source);
$_old_source = preg_replace_callback('/(' . $this->compiler->smarty->left_delimiter . 'block(.+?)' . $this->compiler->smarty->right_delimiter . ')((?:\r?\n?)(.*?)(?:\r?\n?))(' . $this->compiler->smarty->left_delimiter . '\/block(.*?)' . $this->compiler->smarty->right_delimiter . ')/is', array($this, 'saveBlockData'), $_old_source);
$compiler->template->template_source = $_template->getTemplateSource();
$compiler->abort_and_recompile = true;
return ' ';
@@ -47,7 +47,7 @@ class Smarty_Internal_Compile_Extend extends Smarty_Internal_CompileBase {
$this->compiler->trigger_template_error("\"" . $matches[0] . "\" missing name attribute");
} else {
// compile block content
$_tpl = $this->smarty->createTemplate('string:' . $matches[3]);
$_tpl = $this->compiler->smarty->createTemplate('string:' . $matches[3]);
$_tpl->suppressHeader = true;
$_compiled_content = $_tpl->getCompiledTemplate();
unset($_tpl);

View File

@@ -33,7 +33,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
$compiler->template->properties['function'][$_name]['parameter'][$_key] = $_data;
}
// make function known for recursive calls
$this->smarty->template_functions[$_name]['compiled'] = '';
$this->compiler->smarty->template_functions[$_name]['compiled'] = '';
$compiler->template->extract_code = true;
$compiler->template->extracted_compiled_code = '';
$compiler->template->has_code = false;

View File

@@ -35,8 +35,8 @@ class Smarty_Internal_Compile_FunctionClose extends Smarty_Internal_CompileBase
}
$_name = trim($saved_data[0]['name'], "'");
$compiler->template->properties['function'][$_name]['compiled'] = str_replace("\n",'_%n',$compiler->template->extracted_compiled_code);
$this->smarty->template_functions[$_name]['compiled'] = $compiler->template->extracted_compiled_code;
$this->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
$this->compiler->smarty->template_functions[$_name]['compiled'] = $compiler->template->extracted_compiled_code;
$this->compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
$compiler->template->extracted_compiled_code = $saved_data[1];
$compiler->template->extract_code = $saved_data[2];
return true;

View File

@@ -34,31 +34,31 @@ class Smarty_Internal_Compile_Internal_Smarty_Var extends Smarty_Internal_Compil
return 'time()';
case 'get':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_GET" : "\$GLOBALS['HTTP_GET_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_GET" : "\$GLOBALS['HTTP_GET_VARS']";
break;
case 'post':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_POST" : "\$GLOBALS['HTTP_POST_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_POST" : "\$GLOBALS['HTTP_POST_VARS']";
break;
case 'cookies':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_COOKIE" : "\$GLOBALS['HTTP_COOKIE_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_COOKIE" : "\$GLOBALS['HTTP_COOKIE_VARS']";
break;
case 'env':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_ENV" : "\$GLOBALS['HTTP_ENV_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_ENV" : "\$GLOBALS['HTTP_ENV_VARS']";
break;
case 'server':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_SERVER" : "\$GLOBALS['HTTP_SERVER_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_SERVER" : "\$GLOBALS['HTTP_SERVER_VARS']";
break;
case 'session':
$compiled_ref = ($this->smarty->request_use_auto_globals) ? "\$_SESSION" : "\$GLOBALS['HTTP_SESSION_VARS']";
$compiled_ref = ($compiler->smarty->request_use_auto_globals) ? "\$_SESSION" : "\$GLOBALS['HTTP_SESSION_VARS']";
break;
case 'request':
if ($this->smarty->request_use_auto_globals) {
if ($compiler->smarty->request_use_auto_globals) {
$compiled_ref = "\$_REQUEST";
break;
}
@@ -72,7 +72,7 @@ class Smarty_Internal_Compile_Internal_Smarty_Var extends Smarty_Internal_Compil
return "'$_version'";
case 'const':
if ($this->smarty->security && !$this->smarty->security_policy->allow_constants) {
if ($compiler->smarty->security && !$compiler->smarty->security_policy->allow_constants) {
$compiler->trigger_template_error("(secure mode) constants not permitted");
break;
}
@@ -87,11 +87,11 @@ class Smarty_Internal_Compile_Internal_Smarty_Var extends Smarty_Internal_Compil
return "''";
}
case 'ldelim':
$_ldelim = $this->smarty->left_delimiter;
$_ldelim = $compiler->smarty->left_delimiter;
return "'$_ldelim'";
case 'rdelim':
$_rdelim = $this->smarty->right_delimiter;
$_rdelim = $compiler->smarty->right_delimiter;
return "'$_rdelim'";
default:
@@ -99,7 +99,10 @@ class Smarty_Internal_Compile_Internal_Smarty_Var extends Smarty_Internal_Compil
break;
}
if (isset($_index[1])) {
$compiled_ref = $compiled_ref . "[$_index[1]]";
array_shift($_index);
foreach ($_index as $_ind) {
$compiled_ref = $compiled_ref . "[$_ind]";
}
}
return $compiled_ref;
}

View File

@@ -25,7 +25,6 @@ abstract class Smarty_Internal_CompileBase
*/
function __construct()
{
$this->smarty = Smarty::instance();
// initialize valid attributes
$this->required_attributes = array();
$this->optional_attributes = array();