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

  • Thelia
  • TheliaContainerBuilder
  • TheliaHttpKernel
  • 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;
 24: 
 25: use Symfony\Component\HttpKernel\HttpKernel;
 26: use Symfony\Component\HttpKernel\HttpKernelInterface;
 27: use Symfony\Component\HttpFoundation\Request;
 28: use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
 29: use Symfony\Component\DependencyInjection\ContainerInterface;
 30: use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 31: use Symfony\Component\HttpFoundation\Session;
 32: 
 33: use Thelia\Model;
 34: 
 35: /**
 36:  *
 37:  * @author Manuel Raynaud <mraynaud@openstudio.fr>
 38:  */
 39: 
 40: class TheliaHttpKernel extends HttpKernel
 41: {
 42:     public function __construct(EventDispatcherInterface $dispatcher, ContainerInterface $container, ControllerResolverInterface $controllerResolver)
 43:     {
 44:         parent::__construct($dispatcher, $controllerResolver);
 45: 
 46:         $this->container = $container;
 47:     }
 48: 
 49:     /**
 50:      * Handles a Request to convert it to a Response.
 51:      *
 52:      * When $catch is true, the implementation must catch all exceptions
 53:      * and do its best to convert them to a Response instance.
 54:      *
 55:      * @param Request $request A Request instance
 56:      * @param integer $type    The type of the request
 57:      *                          (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
 58:      * @param Boolean $catch Whether to catch exceptions or not
 59:      *
 60:      * @return Response A Response instance
 61:      *
 62:      * @throws \Exception When an Exception occurs during processing
 63:      *
 64:      * @api
 65:      */
 66:     public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
 67:     {
 68:         //$request->headers->set('X-Php-Ob-Level', ob_get_level());
 69:         $request = $this->initSession($request);
 70:         $this->container->enterScope('request');
 71:         $this->container->set('request', $request, 'request');
 72: 
 73:         try {
 74:             $response = parent::handle($request, $type, $catch);
 75:         } catch (\Exception $e) {
 76:             $this->container->leaveScope('request');
 77: 
 78:             throw $e;
 79:         }
 80: 
 81:         $this->container->leaveScope('request');
 82: 
 83:         return $response;
 84:     }
 85:     
 86:     protected function initSession(Request $request)
 87:     {
 88:         
 89:         $storage = new Session\Storage\NativeSessionStorage();
 90:         
 91:         if (Model\ConfigQuery::read("session_config.default")) {
 92:             $storage->setSaveHandler(new Session\Storage\Handler\NativeFileSessionHandler(Model\ConfigQuery::read("session_config.save_path", THELIA_ROOT . '/local/session/')));
 93:         } else {
 94:             $handlerString = Model\ConfigQuery::read("session_config.handlers");
 95:             
 96:             $handler = new $handlerString;
 97:             
 98:             $storage->setSaveHandler($handler);
 99:         }
100:         
101:         if (Model\ConfigQuery::read("session_config.config", null)) {
102:            $storage->setOptions(json_decode(Model\ConfigQuery::read("session_config.config"))); 
103:         }
104:         
105:         
106:         $session = new Session\Session($storage);
107:         $session->start();
108:         
109:         $request->setSession($session);
110:         
111:         return $request;
112:     }
113: }
114: 
thelia API documentation generated by ApiGen 2.8.0