diff options
Diffstat (limited to 'vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php')
-rw-r--r-- | vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php new file mode 100644 index 000000000..5718b69e9 --- /dev/null +++ b/vendor/smarty/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 = $obj->_getSmartyObj(); + if ($obj->_isTplObj() && !isset($template)) { + $tpl = clone $obj; + } elseif (isset($template) && $template->_isTplObj()) { + $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 |