diff options
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php b/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php new file mode 100644 index 000000000..dd9e8d1ca --- /dev/null +++ b/library/Smarty/libs/sysplugins/smarty_internal_method_gettags.php @@ -0,0 +1,62 @@ +<?php + +/** + * Smarty Method GetTags + * + * Smarty::getTags() method + * + * @package Smarty + * @subpackage PluginsInternal + * @author Uwe Tews + */ +class Smarty_Internal_Method_GetTags +{ + /** + * Valid for Smarty and template object + * + * @var int + */ + public $objMap = 3; + + /** + * Return array of tag/attributes of all tags used by an template + * + * @api Smarty::getTags() + * @link http://www.smarty.net/docs/en/api.get.tags.tpl + * + * @param \Smarty_Internal_TemplateBase|\Smarty_Internal_Template|\Smarty $obj + * @param null|string|Smarty_Internal_Template $template + * + * @return array of tag/attributes + * @throws \SmartyException + */ + public function getTags(Smarty_Internal_TemplateBase $obj, $template = null) + { + /* @var Smarty $smarty */ + $smarty = isset($this->smarty) ? $this->smarty : $obj; + if ($obj->_objType == 2 && !isset($template)) { + $tpl = clone $obj; + } elseif (isset($template) && $template->_objType == 2) { + $tpl = clone $template; + } elseif (isset($template) && is_string($template)) { + /* @var Smarty_Internal_Template $tpl */ + $tpl = new $smarty->template_class($template, $smarty); + // checks if template exists + if (!$tpl->source->exists) { + throw new SmartyException("Unable to load template {$tpl->source->type} '{$tpl->source->name}'"); + } + } + if (isset($tpl)) { + $tpl->smarty = clone $tpl->smarty; + $tpl->smarty->_cache['get_used_tags'] = true; + $tpl->_cache['used_tags'] = array(); + $tpl->smarty->merge_compiled_includes = false; + $tpl->smarty->disableSecurity(); + $tpl->caching = false; + $tpl->loadCompiler(); + $tpl->compiler->compileTemplate($tpl); + return $tpl->_cache['used_tags']; + } + throw new SmartyException("Missing template specification"); + } +}
\ No newline at end of file |