summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruwetews <uwe.tews@googlemail.com>2016-07-18 23:43:58 +0200
committeruwetews <uwe.tews@googlemail.com>2016-07-18 23:43:58 +0200
commit5fd21b736108f7ec158221bd90013e007f6e8cf3 (patch)
treed076daf0f28d5fd34d8c782f707189c45584f786
parentd8542196965c5b36b94b8f660fcd16c91696a936 (diff)
downloadsmarty-5fd21b736108f7ec158221bd90013e007f6e8cf3.tar.gz
smarty-5fd21b736108f7ec158221bd90013e007f6e8cf3.tar.bz2
smarty-5fd21b736108f7ec158221bd90013e007f6e8cf3.zip
- bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
-rw-r--r--change_log.txt1
-rw-r--r--libs/Smarty.class.php2
-rw-r--r--libs/sysplugins/smarty_internal_template.php42
3 files changed, 43 insertions, 2 deletions
diff --git a/change_log.txt b/change_log.txt
index e192c4d2..55015cfc 100644
--- a/change_log.txt
+++ b/change_log.txt
@@ -3,6 +3,7 @@
- bugfix {foreach} if key variable and item@key attribute have been used both the key variable was not updated https://github.com/smarty-php/smarty/issues/254
- bugfix modifier on plugins like {plugin|modifier ... } did fail when the plugin does return an array https://github.com/smarty-php/smarty/issues/228
- bugfix avoid opcache_invalidate to result in ErrorException when opcache.restrict_api is not empty https://github.com/smarty-php/smarty/pull/244
+ - bugfix multiple {include} with relative filepath within {block}{/block} could fail https://github.com/smarty-php/smarty/issues/246
14.07.2016
- bugfix wrong parameter on compileAllTemplates() and compileAllConfig() https://github.com/smarty-php/smarty/issues/231
diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php
index 43e16ea7..3030ba39 100644
--- a/libs/Smarty.class.php
+++ b/libs/Smarty.class.php
@@ -121,7 +121,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* smarty version
*/
- const SMARTY_VERSION = '3.1.30-dev/83';
+ const SMARTY_VERSION = '3.1.30-dev/84';
/**
* define variable scopes
diff --git a/libs/sysplugins/smarty_internal_template.php b/libs/sysplugins/smarty_internal_template.php
index c4cfc75c..b5f825fb 100644
--- a/libs/sysplugins/smarty_internal_template.php
+++ b/libs/sysplugins/smarty_internal_template.php
@@ -42,7 +42,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
/**
* Source instance
*
- * @var Smarty_Template_Source|Smarty_Template_Config
+ * @var \Smarty_Template_Source|\Smarty_Template_Config
*/
public $source = null;
@@ -223,6 +223,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
if (!empty($this->tpl_function)) {
$this->parent->tpl_function = array_merge($this->parent->tpl_function, $this->tpl_function);
}
+ /**
foreach ($this->compiled->required_plugins as $code => $tmp1) {
foreach ($tmp1 as $name => $tmp) {
foreach ($tmp as $type => $data) {
@@ -230,6 +231,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
}
}
}
+ * **/
}
if (!$no_output_filter &&
(!$this->caching || $this->cached->has_nocache_code || $this->source->handler->recompiled) &&
@@ -262,6 +264,9 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
$forceTplCache, $uid = null, $content_func = null)
{
$tpl = clone $this;
+ if (isset($this->inheritance)) {
+ unset($tpl->startRenderCallbacks[ 'inheritance' ], $tpl->endRenderCallbacks[ 'inheritance' ]);
+ }
$tpl->parent = $this;
$smarty = &$this->smarty;
$_templateId = $smarty->_getTemplateId($template, $cache_id, $compile_id, $caching, $tpl);
@@ -378,6 +383,41 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
}
/**
+ * Call plugin
+ *
+ * @param array $params parameter array
+ * @param string $type plugin type
+ * @param string $pluginName plugin name
+ *
+ * @return mixed
+ * @throws \SmartyException
+ */
+ public function _executePlugin($params, $type, $pluginName, $content = null, &$repeat = null)
+ {
+ if (isset($this->smarty->_pluginCache[ $pluginName ][ $type ])) {
+ $callback = $this->smarty->_pluginCache[ $pluginName ][ $type ][0];
+ } else {
+ $pluginInfo = $this->smarty->_getPluginInfo($type, $pluginName);
+ if ($pluginInfo === false) {
+ throw new SmartyException("plugin '{$pluginName}' not callable");
+ }
+ $callback = $pluginInfo[0];
+ }
+ if ($type == Smarty::PLUGIN_MODIFIER) {
+ return call_user_func_array($callback, $params);
+ } else if ($type == Smarty::PLUGIN_BLOCK) {
+ if (!is_array($callback)) {
+ return $callback($params, $content, $this, $repeat);
+ } else if (is_object($callback[0])){
+ return $callback[0]->{$callback[1]}($params, $content, $this, $repeat);
+ } else {
+ return $callback[0]::{$callback[1]}($params, $content, $this, $repeat);
+ }
+ }
+ return call_user_func_array($callback, array($params, $this));
+ }
+
+ /**
* Check if parent is template object
*
* @return bool true if parent is template