diff options
author | emkael <emkael@tlen.pl> | 2016-10-11 14:01:29 +0200 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2016-10-11 14:01:29 +0200 |
commit | 51609351f2c4b5082b7e6f0744cd3811c325303f (patch) | |
tree | 739015e9ec69bc185ebe30db21369ae0b8b692ce /lib/smarty/sysplugins/smarty_internal_compile_config_load.php | |
parent | 8d1b0dad63e3906efa9393ef01d08b77d83417b5 (diff) |
* initial template
Diffstat (limited to 'lib/smarty/sysplugins/smarty_internal_compile_config_load.php')
-rw-r--r-- | lib/smarty/sysplugins/smarty_internal_compile_config_load.php | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/smarty/sysplugins/smarty_internal_compile_config_load.php b/lib/smarty/sysplugins/smarty_internal_compile_config_load.php new file mode 100644 index 0000000..deaa052 --- /dev/null +++ b/lib/smarty/sysplugins/smarty_internal_compile_config_load.php @@ -0,0 +1,85 @@ +<?php +/** + * Smarty Internal Plugin Compile Config Load + * + * Compiles the {config load} tag + * + * @package Smarty + * @subpackage Compiler + * @author Uwe Tews + */ + +/** + * Smarty Internal Plugin Compile Config Load Class + * + * @package Smarty + * @subpackage Compiler + */ +class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase { + + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $required_attributes = array('file'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $shorttag_order = array('file','section'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $optional_attributes = array('section', 'scope'); + + /** + * Compiles code for the {config_load} tag + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @return string compiled code + */ + public function compile($args, $compiler) + { + static $_is_legal_scope = array('local' => true,'parent' => true,'root' => true,'global' => true); + // check and get attributes + $_attr = $this->getAttributes($compiler, $args); + + if ($_attr['nocache'] === true) { + $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno); + } + + + // save posible attributes + $conf_file = $_attr['file']; + if (isset($_attr['section'])) { + $section = $_attr['section']; + } else { + $section = 'null'; + } + $scope = 'local'; + // scope setup + if (isset($_attr['scope'])) { + $_attr['scope'] = trim($_attr['scope'], "'\""); + if (isset($_is_legal_scope[$_attr['scope']])) { + $scope = $_attr['scope']; + } else { + $compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno); + } + } + // create config object + $_output = "<?php \$_config = new Smarty_Internal_Config($conf_file, \$_smarty_tpl->smarty, \$_smarty_tpl);"; + $_output .= "\$_config->loadConfigVars($section, '$scope'); ?>"; + return $_output; + } + +} + +?>
\ No newline at end of file |