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

  • Parser

Interfaces

  • ParserInterface
  • 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: namespace Thelia\Core\Template;
 24: 
 25: use Symfony\Component\HttpFoundation\Response;
 26: use Thelia\Core\Template\ParserInterface;
 27: use Symfony\Component\DependencyInjection\ContainerInterface;
 28: use Symfony\Component\HttpFoundation\Request;
 29: use Symfony\Component\Routing\Exception\ResourceNotFoundException;
 30: use Symfony\Component\Config\ConfigCache;
 31: 
 32: use Thelia\Tpex\Tpex;
 33: use Thelia\Log\Tlog;
 34: 
 35: /**
 36:  *
 37:  * Master class of Thelia's parser. The loop mechanism depends of this parser
 38:  *
 39:  * From this class all the parser is lunch
 40:  *
 41:  *
 42:  * @author Manuel Raynaud <mraynaud@openstudio.fr>
 43:  */
 44: 
 45: 
 46: class Parser implements ParserInterface
 47: {
 48:     const PREFIXE = 'prx';
 49: 
 50:     const SHOW_TIME = true;
 51:     const ALLOW_DEBUG = true;
 52:     const USE_CACHE = true;
 53:     
 54: 
 55:     /**
 56:      *
 57:      * @var Symfony\Component\DependencyInjection\ContainerInterface
 58:      */
 59:     protected $container;
 60:     
 61:     protected $content;
 62:     protected $status = 200;
 63:     
 64:     /**
 65:      *
 66:      * @var Thelia\Tpex\Tpex
 67:      */
 68:     protected $tpex;
 69:     
 70:     protected $template = "default";
 71:     
 72:     /**
 73:      *
 74:      * @param type $container
 75:      *
 76:      * public function __construct(ContainerBuilder $container)
 77:      */
 78:     public function __construct(ContainerInterface $container)
 79:     {
 80:         $this->container = $container;
 81:     }
 82:     
 83:     /**
 84:      * 
 85:      * @return Symfony\Component\HttpFoundation\Request
 86:      */
 87:     public function getRequest()
 88:     {
 89:         return $this->container->get('request');
 90:     }
 91:     
 92:     /**
 93:      * 
 94:      * @return Symfony\Component\EventDispatcher\EventDispatcher
 95:      */
 96:     public function getDispatcher()
 97:     {
 98:         return $this->container->get('dispatcher');
 99:     }
100: 
101:     /**
102:      *
103:      * This method must return a Symfony\Component\HttpFoudation\Response instance or the content of the response
104:      *
105:      */
106:     public function getContent()
107:     {
108:        $this->loadParser();
109:        
110:        return $this->content;
111:     }
112: 
113:     /**
114:      *
115:      * set $content with the body of the response or the Response object directly
116:      *
117:      * @param string|Symfony\Component\HttpFoundation\Response $content
118:      */
119:     public function setContent($content)
120:     {
121:         $this->content = $content;
122:     }
123: 
124:     /**
125:      *
126:      * @return type the status of the response
127:      */
128:     public function getStatus()
129:     {
130:         return $this->status;
131:     }
132: 
133:     /**
134:      *
135:      * status HTTP of the response
136:      *
137:      * @param int $status
138:      */
139:     public function setStatus($status)
140:     {
141:         $this->status = $status;
142:     }
143: 
144:     /**
145:      * Main parser function, load the parser
146:      */
147:     public function loadParser()
148:     {
149:         $content = $this->openFile($this->getRequest());
150: 
151:         $tpex = $this->container->get("template");
152: 
153:         $tpex->setBaseDir(THELIA_TEMPLATE_DIR . rtrim($this->template, "/") . "/");
154:         $tpex->setContent($content);
155: 
156:         $this->setContent($tpex->execute());
157:     }
158:     
159:     protected function openFile(Request $request)
160:     {
161:         $file = $request->attributes->get('_view');
162:         $fileName = THELIA_TEMPLATE_DIR . rtrim($this->template, "/") . "/" . $file . ".html";
163:         if (file_exists($fileName)) {
164:             $content = file_get_contents($fileName);
165:         } else {
166:             throw new ResourceNotFoundException(sprintf("%s file not found in %s template", $file, $this->template));
167:         }
168:         
169:         return $content;
170:     }
171: }
172: 
thelia API documentation generated by ApiGen 2.8.0