Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
2809 rexy 1
<?php
2
/**
3
 * Smarty Internal Plugin Data
4
 * This file contains the basic classes and methods for template and variable creation
5
 *
6
 * @package    Smarty
7
 * @subpackage Template
8
 * @author     Uwe Tews
9
 */
10
 
11
/**
12
 * Base class with template and variable methods
13
 *
14
 * @package    Smarty
15
 * @subpackage Template
16
 *
17
 * @property int    $scope
18
 * @property Smarty $smarty
19
 * The following methods will be dynamically loaded by the extension handler when they are called.
20
 * They are located in a corresponding Smarty_Internal_Method_xxxx class
21
 *
22
 * @method mixed _getConfigVariable(string $varName, bool $errorEnable = true)
23
 * @method mixed getConfigVariable(string $varName, bool $errorEnable = true)
24
 * @method mixed getConfigVars(string $varName = null, bool $searchParents = true)
25
 * @method mixed getGlobal(string $varName = null)
26
 * @method mixed getStreamVariable(string $variable)
27
 * @method Smarty_Internal_Data clearAssign(mixed $tpl_var)
28
 * @method Smarty_Internal_Data clearAllAssign()
29
 * @method Smarty_Internal_Data clearConfig(string $varName = null)
30
 * @method Smarty_Internal_Data configLoad(string $config_file, mixed $sections = null, string $scope = 'local')
31
 */
32
abstract class Smarty_Internal_Data
33
{
34
    /**
35
     * This object type (Smarty = 1, template = 2, data = 4)
36
     *
37
     * @var int
38
     */
39
    public $_objType = 4;
40
 
41
    /**
42
     * name of class used for templates
43
     *
44
     * @var string
45
     */
46
    public $template_class = 'Smarty_Internal_Template';
47
 
48
    /**
49
     * template variables
50
     *
51
     * @var Smarty_Variable[]
52
     */
53
    public $tpl_vars = array();
54
 
55
    /**
56
     * parent template (if any)
57
     *
58
     * @var Smarty|Smarty_Internal_Template|Smarty_Data
59
     */
60
    public $parent = null;
61
 
62
    /**
63
     * configuration settings
64
     *
65
     * @var string[]
66
     */
67
    public $config_vars = array();
68
 
69
    /**
70
     * extension handler
71
     *
72
     * @var Smarty_Internal_Extension_Handler
73
     */
74
    public $ext = null;
75
 
76
    /**
77
     * Smarty_Internal_Data constructor.
78
     *
79
     * Install extension handler
80
     */
81
    public function __construct()
82
    {
83
        $this->ext = new Smarty_Internal_Extension_Handler();
84
        $this->ext->objType = $this->_objType;
85
    }
86
 
87
    /**
88
     * assigns a Smarty variable
89
     *
90
     * @param array|string $tpl_var the template variable name(s)
91
     * @param mixed        $value   the value to assign
92
     * @param boolean      $nocache if true any output of this variable will be not cached
93
     *
94
     * @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for
95
     *                              chaining
96
     */
97
    public function assign($tpl_var, $value = null, $nocache = false)
98
    {
99
        if (is_array($tpl_var)) {
100
            foreach ($tpl_var as $_key => $_val) {
101
                $this->assign($_key, $_val, $nocache);
102
            }
103
        } else {
104
            if ($tpl_var !== '') {
105
                if ($this->_objType === 2) {
106
                    /**
107
                     *
108
                     *
109
                     * @var Smarty_Internal_Template $this
110
                     */
111
                    $this->_assignInScope($tpl_var, $value, $nocache);
112
                } else {
113
                    $this->tpl_vars[ $tpl_var ] = new Smarty_Variable($value, $nocache);
114
                }
115
            }
116
        }
117
        return $this;
118
    }
119
 
120
    /**
121
     * appends values to template variables
122
     *
123
     * @api  Smarty::append()
124
     * @link http://www.smarty.net/docs/en/api.append.tpl
125
     *
126
     * @param array|string $tpl_var the template variable name(s)
127
     * @param mixed        $value   the value to append
128
     * @param bool         $merge   flag if array elements shall be merged
129
     * @param bool         $nocache if true any output of this variable will
130
     *                              be not cached
131
     *
132
     * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
133
     */
134
    public function append($tpl_var, $value = null, $merge = false, $nocache = false)
135
    {
136
        return $this->ext->append->append($this, $tpl_var, $value, $merge, $nocache);
137
    }
138
 
139
    /**
140
     * assigns a global Smarty variable
141
     *
142
     * @param string  $varName the global variable name
143
     * @param mixed   $value   the value to assign
144
     * @param boolean $nocache if true any output of this variable will be not cached
145
     *
146
     * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
147
     */
148
    public function assignGlobal($varName, $value = null, $nocache = false)
149
    {
150
        return $this->ext->assignGlobal->assignGlobal($this, $varName, $value, $nocache);
151
    }
152
 
153
    /**
154
     * appends values to template variables by reference
155
     *
156
     * @param string  $tpl_var the template variable name
157
     * @param mixed   &$value  the referenced value to append
158
     * @param boolean $merge   flag if array elements shall be merged
159
     *
160
     * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
161
     */
162
    public function appendByRef($tpl_var, &$value, $merge = false)
163
    {
164
        return $this->ext->appendByRef->appendByRef($this, $tpl_var, $value, $merge);
165
    }
166
 
167
    /**
168
     * assigns values to template variables by reference
169
     *
170
     * @param string  $tpl_var the template variable name
171
     * @param         $value
172
     * @param boolean $nocache if true any output of this variable will be not cached
173
     *
174
     * @return \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty
175
     */
176
    public function assignByRef($tpl_var, &$value, $nocache = false)
177
    {
178
        return $this->ext->assignByRef->assignByRef($this, $tpl_var, $value, $nocache);
179
    }
180
 
181
    /**
182
     * Returns a single or all template variables
183
     *
184
     * @api  Smarty::getTemplateVars()
185
     * @link http://www.smarty.net/docs/en/api.get.template.vars.tpl
186
     *
187
     * @param string                                                  $varName       variable name or null
188
     * @param \Smarty_Internal_Data|\Smarty_Internal_Template|\Smarty $_ptr          optional pointer to data object
189
     * @param bool                                                    $searchParents include parent templates?
190
     *
191
     * @return mixed variable value or or array of variables
192
     */
193
    public function getTemplateVars($varName = null, Smarty_Internal_Data $_ptr = null, $searchParents = true)
194
    {
195
        return $this->ext->getTemplateVars->getTemplateVars($this, $varName, $_ptr, $searchParents);
196
    }
197
 
198
    /**
199
     * gets the object of a Smarty variable
200
     *
201
     * @param string               $variable      the name of the Smarty variable
202
     * @param Smarty_Internal_Data $_ptr          optional pointer to data object
203
     * @param boolean              $searchParents search also in parent data
204
     * @param bool                 $error_enable
205
     *
206
     * @return     Smarty_Variable|Smarty_Undefined_Variable the object of the variable
207
     * @deprecated since 3.1.28 please use Smarty_Internal_Data::getTemplateVars() instead.
208
     */
209
    public function getVariable(
210
        $variable = null,
211
        Smarty_Internal_Data $_ptr = null,
212
        $searchParents = true,
213
        $error_enable = true
214
    ) {
215
        return $this->ext->getTemplateVars->_getVariable($this, $variable, $_ptr, $searchParents, $error_enable);
216
    }
217
 
218
    /**
219
     * Follow the parent chain an merge template and config variables
220
     *
221
     * @param \Smarty_Internal_Data|null $data
222
     */
223
    public function _mergeVars(Smarty_Internal_Data $data = null)
224
    {
225
        if (isset($data)) {
226
            if (!empty($this->tpl_vars)) {
227
                $data->tpl_vars = array_merge($this->tpl_vars, $data->tpl_vars);
228
            }
229
            if (!empty($this->config_vars)) {
230
                $data->config_vars = array_merge($this->config_vars, $data->config_vars);
231
            }
232
        } else {
233
            $data = $this;
234
        }
235
        if (isset($this->parent)) {
236
            $this->parent->_mergeVars($data);
237
        }
238
    }
239
 
240
    /**
241
     * Return true if this instance is a Data obj
242
     *
243
     * @return bool
244
     */
245
    public function _isDataObj()
246
    {
247
        return $this->_objType === 4;
248
    }
249
 
250
    /**
251
     * Return true if this instance is a template obj
252
     *
253
     * @return bool
254
     */
255
    public function _isTplObj()
256
    {
257
        return $this->_objType === 2;
258
    }
259
 
260
    /**
261
     * Return true if this instance is a Smarty obj
262
     *
263
     * @return bool
264
     */
265
    public function _isSmartyObj()
266
    {
267
        return $this->_objType === 1;
268
    }
269
 
270
    /**
271
     * Get Smarty object
272
     *
273
     * @return Smarty
274
     */
275
    public function _getSmartyObj()
276
    {
277
        return $this->smarty;
278
    }
279
 
280
    /**
281
     * Handle unknown class methods
282
     *
283
     * @param string $name unknown method-name
284
     * @param array  $args argument array
285
     *
286
     * @return mixed
287
     */
288
    public function __call($name, $args)
289
    {
290
        return $this->ext->_callExternalMethod($this, $name, $args);
291
    }
292
}