smarty_internal_compile_config_load.php (2376B)
1 <?php 2 /** 3 * Smarty Internal Plugin Compile Config Load 4 * Compiles the {config load} tag 5 * 6 * @package Smarty 7 * @subpackage Compiler 8 * @author Uwe Tews 9 */ 10 11 /** 12 * Smarty Internal Plugin Compile Config Load Class 13 * 14 * @package Smarty 15 * @subpackage Compiler 16 */ 17 class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase 18 { 19 /** 20 * Attribute definition: Overwrites base class. 21 * 22 * @var array 23 * @see Smarty_Internal_CompileBase 24 */ 25 public $required_attributes = array('file'); 26 /** 27 * Attribute definition: Overwrites base class. 28 * 29 * @var array 30 * @see Smarty_Internal_CompileBase 31 */ 32 public $shorttag_order = array('file', 'section'); 33 /** 34 * Attribute definition: Overwrites base class. 35 * 36 * @var array 37 * @see Smarty_Internal_CompileBase 38 */ 39 public $optional_attributes = array('section', 'scope'); 40 41 /** 42 * Compiles code for the {config_load} tag 43 * 44 * @param array $args array with attributes from parser 45 * @param object $compiler compiler object 46 * 47 * @return string compiled code 48 */ 49 public function compile($args, $compiler) 50 { 51 static $_is_legal_scope = array('local' => true, 'parent' => true, 'root' => true, 'global' => true); 52 // check and get attributes 53 $_attr = $this->getAttributes($compiler, $args); 54 55 if ($_attr['nocache'] === true) { 56 $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno); 57 } 58 59 // save possible attributes 60 $conf_file = $_attr['file']; 61 if (isset($_attr['section'])) { 62 $section = $_attr['section']; 63 } else { 64 $section = 'null'; 65 } 66 $scope = 'local'; 67 // scope setup 68 if (isset($_attr['scope'])) { 69 $_attr['scope'] = trim($_attr['scope'], "'\""); 70 if (isset($_is_legal_scope[$_attr['scope']])) { 71 $scope = $_attr['scope']; 72 } else { 73 $compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno); 74 } 75 } 76 // create config object 77 $_output = "<?php Smarty_Internal_Extension_Config::configLoad(\$_smarty_tpl, $conf_file, $section, '$scope');?>"; 78 79 return $_output; 80 } 81 }