     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: