1: <?php
2: /**
3: * Smarty Plugin Data
4: * This file contains the data object
5: *
6: * @package Smarty
7: * @subpackage Template
8: * @author Uwe Tews
9: */
10:
11: /**
12: * class for the Smarty data object
13: * The Smarty data object will hold Smarty variables in the current scope
14: *
15: * @package Smarty
16: * @subpackage Template
17: */
18: class Smarty_Data extends Smarty_Internal_Data
19: {
20: /**
21: * Counter
22: *
23: * @var int
24: */
25: public static $count = 0;
26:
27: /**
28: * Data block name
29: *
30: * @var string
31: */
32: public $dataObjectName = '';
33:
34: /**
35: * Smarty object
36: *
37: * @var Smarty
38: */
39: public $smarty = null;
40:
41: /**
42: * create Smarty data object
43: *
44: * @param Smarty|array $_parent parent template
45: * @param Smarty|Smarty_Internal_Template $smarty global smarty instance
46: * @param string $name optional data block name
47: *
48: * @throws SmartyException
49: */
50: public function __construct($_parent = null, $smarty = null, $name = null)
51: {
52: parent::__construct();
53: self::$count++;
54: $this->dataObjectName = 'Data_object ' . (isset($name) ? "'{$name}'" : self::$count);
55: $this->smarty = $smarty;
56: if (is_object($_parent)) {
57: // when object set up back pointer
58: $this->parent = $_parent;
59: } elseif (is_array($_parent)) {
60: // set up variable values
61: foreach ($_parent as $_key => $_val) {
62: $this->tpl_vars[ $_key ] = new Smarty_Variable($_val);
63: }
64: } elseif ($_parent !== null) {
65: throw new SmartyException('Wrong type for template variables');
66: }
67: }
68: }
69: