| 
<?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;
 }
 
 }
 
 |