initialize session process

session by default are save in local/session
This commit is contained in:
Manuel Raynaud
2013-02-11 12:44:52 +01:00
parent ccee45c48a
commit 96f5e2e9cf
6 changed files with 52 additions and 5 deletions

View File

@@ -36,7 +36,7 @@ class Cart extends BaseAction
*/
public function addCart(Request $request)
{
var_dump($this->getDispatcher()); exit;
}
/**

View File

@@ -73,7 +73,7 @@ class Parser implements ParserInterface
public function getContent()
{
$this->loadParser();
echo \Thelia\Model\ConfigQuery::read("alfred", "dupont");
\Thelia\Log\Tlog::getInstance()->debug("tutu");

View File

@@ -34,8 +34,11 @@ namespace Thelia\Core;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
use Thelia\Core\Bundle;
use Thelia\Log\Tlog;
use Propel;
use PropelConfiguration;
@@ -76,9 +79,19 @@ class Thelia extends Kernel
*/
public function loadConfiguration()
{
$request = $this->getContainer()->get('request');
}
/**
*
* initialize session in Request object
*
* All param must be change in Config table
*
* @param \Symfony\Component\HttpFoundation\Request $request
*/
/**
*
* boot parent kernel and after current kernel
@@ -86,6 +99,9 @@ class Thelia extends Kernel
*/
public function boot()
{
parent::boot();
$this->loadConfiguration();

View File

@@ -28,6 +28,9 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Session;
use Thelia\Model;
/**
*
@@ -63,7 +66,7 @@ class TheliaHttpKernel extends HttpKernel
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
//$request->headers->set('X-Php-Ob-Level', ob_get_level());
$request = $this->initSession($request);
$this->container->enterScope('request');
$this->container->set('request', $request, 'request');
@@ -79,4 +82,32 @@ class TheliaHttpKernel extends HttpKernel
return $response;
}
protected function initSession(Request $request)
{
$storage = new Session\Storage\NativeSessionStorage();
if (Model\ConfigQuery::read("session_config.default")) {
$storage->setSaveHandler(new Session\Storage\Handler\NativeFileSessionHandler(Model\ConfigQuery::read("session_config.save_path", THELIA_ROOT . '/local/session/')));
} else {
$handlerString = Model\ConfigQuery::read("session_config.handlers");
$handler = new $handlerString;
$storage->setSaveHandler($handler);
}
if (Model\ConfigQuery::read("session_config.config", null)) {
$storage->setOptions(json_decode(Model\ConfigQuery::read("session_config.config")));
}
$session = new Session\Session($storage);
$session->start();
$request->setSession($session);
return $request;
}
}

View File

@@ -18,7 +18,7 @@ use Thelia\Model\om\BaseConfigQuery;
*/
class ConfigQuery extends BaseConfigQuery
{
public static function read($search, $default)
public static function read($search, $default = null)
{
$value = self::create()->findOneByName($search);

0
local/session/.gitkeep Normal file
View File