summaryrefslogtreecommitdiff
path: root/tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php')
-rw-r--r--tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php b/tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php
new file mode 100644
index 00000000..71740902
--- /dev/null
+++ b/tests/UnitTests/TemplateSource/X_Scopes/plugins/function.checkvar.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Smarty plugin for testing scopes
+ *
+
+
+ */
+
+use Smarty\Template;
+
+/**
+ * Smarty {checkvar}
+ *
+ * @param array $params parameter array
+ * @param Template $template template object
+ *
+ * @return string
+ */
+function smarty_function_checkvar($params, \Smarty\Template $template)
+{
+ $output = '';
+ $types = ['template', 'data', 'global'];
+ if (isset($params['types'])) {
+ $types = (array)$params['types'];
+ }
+ $var = $params['var'];
+ $ptr = $template;
+ while ($ptr) {
+ if (in_array('template', $types) && $ptr instanceof Template) {
+ $output .= "#{$ptr->getSource()->name}:\${$var} =";
+ $output .= $ptr->hasVariable($var) ? preg_replace('/\s/', '', var_export($ptr->getValue($var), true)) : '>unassigned<';
+ $ptr = $ptr->parent;
+ } elseif (in_array('data', $types) && !($ptr instanceof Template || $ptr instanceof \Smarty\Smarty)) {
+ $output .= "#data:\${$var} =";
+ $output .= $ptr->hasVariable($var) ? preg_replace('/\s/', '', var_export($ptr->getValue($var), true)) : '>unassigned<';
+ $ptr = $ptr->parent;
+ } else {
+ $ptr = null;
+ }
+ }
+ if (in_array('global', $types)) {
+ $output .= "#global:\${$var} =";
+ $output .= $template->getSmarty()->hasVariable($var) ?
+ preg_replace('/\s/', '', var_export($template->getSmarty()->getValue($var), true)) : '>unassigned<';
+ }
+ return $output;
+}