Overview

Namespaces

  • Thelia
    • Action
    • Config
    • Controller
    • Core
      • Bundle
      • DependencyInjection
        • Compiler
        • Loader
      • Event
      • EventListener
      • Template
        • BaseParam
    • Exception
    • Log
      • Destination
    • Model
      • map
      • om
    • Routing
      • Matcher
    • Tools
    • Tpex
      • BaseParam
      • Element
        • Loop
        • TestLoop
      • Event
      • Exception
      • Filter
      • Tokenizer

Classes

  • BaseElement
  • ConditionalLoopElement
  • ConditionalVarLoopElement
  • ElementCollection
  • RepeatLoopElement
  • SimpleLoopElement
  • TestLoopElement
  • TextElement
  • VariablesTemplate
  • Overview
  • Namespace
  • Class
  • Tree
  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 Symfony\Component\EventDispatcher\EventDispatcher;
 27: use Thelia\Tpex\Tools;
 28: use Thelia\Tpex\TpexToken;
 29: use Thelia\Tpex\Exception\ElementNotFoundException;
 30: use Thelia\Tpex\Exception\InvalidElementException;
 31: 
 32: use Symfony\Component\HttpFoundation\Request;
 33: use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 34: 
 35: class TestLoopElement extends BaseElement
 36: {
 37: 
 38:     public $name;
 39:     public $args;
 40:     public $testLoop;
 41: 
 42:     protected $request;
 43:     protected $dispatcher;
 44: 
 45:     public function __construct($name, array $testLoop, Request $request, EventDispatcherInterface $dispatcher)
 46:     {
 47:         $this->name = $name;
 48:         $this->content = array();
 49:         $this->testLoop = $testLoop;
 50: 
 51:         $this->request = $request;
 52:         $this->dispatcher = $dispatcher;
 53:     }
 54: 
 55:     public function setArgs($args)
 56:     {
 57:         $this->args = $args;
 58:     }
 59: 
 60:     public function addContent($content)
 61:     {
 62:         $this->content[] = $content;
 63:     }
 64: 
 65:     public function exec($substitutions = array())
 66:     {
 67:         $args = $this->replace($substitutions, $this->args);
 68: 
 69:         if ($this->execLoop($args)) {
 70:             return $this->content[0]->exec($substitutions);
 71:         } else {
 72:             return $this->content[1]->exec($substitutions);
 73:         }
 74: 
 75:     }
 76: 
 77:     public function execLoop($args)
 78:     {
 79:         $test = Tools::extractValueParam("test", $args);
 80: 
 81:         $loop = $this->constructLoop($test);
 82: 
 83:         return $loop->exec(Tools::extractValueParam("variable", $args), Tools::extractValueParam("value", $args));
 84:     }
 85: 
 86:     public function constructLoop($name)
 87:     {
 88:         if (!isset($this->testLoop[$name])) {
 89:             throw new ElementNotFoundException(sprintf("%s test loop does not exists", $name));
 90:         }
 91: 
 92:         $class = new \ReflectionClass($this->testLoop[$name]);
 93: 
 94:         if ($class->isSubclassOf("Thelia\Tpex\Element\TestLoop\BaseTestLoop") === false) {
 95:             throw new InvalidElementException(sprintf("%s Loop class have to extends Thelia\Tpex\Element\TestLoop\BaseTestLoop",
 96:                 $name));
 97:         }
 98: 
 99:         return $class->newInstance($this->request, $this->dispatcher);
100:     }
101: 
102:     public function type()
103:     {
104:         return TpexToken::TPEX_TEST_LOOP;
105:     }
106: }
107: 
thelia API documentation generated by ApiGen 2.8.0