1: <?php
2: /*************************************************************************************/
3: /* */
4: /* Thelia */
5: /* */
6: /* Copyright (c) OpenStudio */
7: /* email : info@thelia.net */
8: /* web : http://www.thelia.net */
9: /* */
10: /* This program is free software; you can redistribute it and/or modify */
11: /* it under the terms of the GNU General Public License as published by */
12: /* the Free Software Foundation; either version 3 of the License */
13: /* */
14: /* This program is distributed in the hope that it will be useful, */
15: /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
16: /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
17: /* GNU General Public License for more details. */
18: /* */
19: /* You should have received a copy of the GNU General Public License */
20: /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
21: /* */
22: /*************************************************************************************/
23:
24: namespace Thelia\Tpex\Element;
25:
26: use Thelia\Tpex\TpexToken;
27:
28: class ElementCollection extends BaseElement
29: {
30: /**
31: * @var array BaseElement
32: */
33: protected $elements = array();
34: protected $idx = 0;
35: protected $lastType = -1;
36:
37: public function addElement(BaseElement $element)
38: {
39: if ($this->idx > 0 && $this->lastType === TpexToken::TPEX_TEXT && $element->type() === TpexToken::TPEX_TEXT) {
40: $this->elements[$this->idx-1]->addContent($element->content);
41: } else {
42: $this->elements[] = $element;
43: $this->lastType = $element->type();
44:
45: $this->idx++;
46: }
47:
48: }
49:
50: public function addContent($content){}
51:
52: public function exec($substitutions = array())
53: {
54: $res = "";
55: foreach ($this->elements as $element) {
56: $res .= $element->exec($substitutions);
57: }
58:
59: return $res;
60: }
61:
62: public function type()
63: {
64: return TpexToken::TPEX_CONTENT;
65: }
66:
67: public function getElements()
68: {
69: return $this->elements;
70: }
71: }
72: