|
1 <?php |
|
2 /** |
|
3 * Smarty Internal Plugin Compile Config Load |
|
4 * |
|
5 * Compiles the {config load} tag |
|
6 * |
|
7 * @package Smarty |
|
8 * @subpackage Compiler |
|
9 * @author Uwe Tews |
|
10 */ |
|
11 |
|
12 /** |
|
13 * Smarty Internal Plugin Compile Config Load Class |
|
14 * |
|
15 * @package Smarty |
|
16 * @subpackage Compiler |
|
17 */ |
|
18 class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase { |
|
19 |
|
20 /** |
|
21 * Attribute definition: Overwrites base class. |
|
22 * |
|
23 * @var array |
|
24 * @see Smarty_Internal_CompileBase |
|
25 */ |
|
26 public $required_attributes = array('file'); |
|
27 /** |
|
28 * Attribute definition: Overwrites base class. |
|
29 * |
|
30 * @var array |
|
31 * @see Smarty_Internal_CompileBase |
|
32 */ |
|
33 public $shorttag_order = array('file','section'); |
|
34 /** |
|
35 * Attribute definition: Overwrites base class. |
|
36 * |
|
37 * @var array |
|
38 * @see Smarty_Internal_CompileBase |
|
39 */ |
|
40 public $optional_attributes = array('section', 'scope'); |
|
41 |
|
42 /** |
|
43 * Compiles code for the {config_load} tag |
|
44 * |
|
45 * @param array $args array with attributes from parser |
|
46 * @param object $compiler compiler object |
|
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 |
|
60 // save posible attributes |
|
61 $conf_file = $_attr['file']; |
|
62 if (isset($_attr['section'])) { |
|
63 $section = $_attr['section']; |
|
64 } else { |
|
65 $section = 'null'; |
|
66 } |
|
67 $scope = 'local'; |
|
68 // scope setup |
|
69 if (isset($_attr['scope'])) { |
|
70 $_attr['scope'] = trim($_attr['scope'], "'\""); |
|
71 if (isset($_is_legal_scope[$_attr['scope']])) { |
|
72 $scope = $_attr['scope']; |
|
73 } else { |
|
74 $compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno); |
|
75 } |
|
76 } |
|
77 // create config object |
|
78 $_output = "<?php \$_config = new Smarty_Internal_Config($conf_file, \$_smarty_tpl->smarty, \$_smarty_tpl);"; |
|
79 $_output .= "\$_config->loadConfigVars($section, '$scope'); ?>"; |
|
80 return $_output; |
|
81 } |
|
82 |
|
83 } |
|
84 |
|
85 ?> |