/** * @param \Symfony\Component\HttpFoundation\Session\Session $session * @param string $key */ public function __construct(Session $session, $key = 'profiler') { $this->session = $session; $bag = new NamespacedAttributeBag($key); // Profiler defines its own bag $bag->setName($key); $this->session->registerBag($bag); $this->key = $key; }
/** * @param Session $session */ public function __construct(Session $session) { $this->session = $session; try { $bag = $this->session->getBag('pheat'); } catch (InvalidArgumentException $e) { $bag = new NamespacedAttributeBag('_pheat_feature'); $bag->setName('pheat'); $this->session->registerBag($bag); } $this->bag = $bag; }
protected function registerBag(SymfonySession $session) { $bag = new AttributeBag('_' . self::BAG_NAME); $bag->setName(self::BAG_NAME); $session->registerBag($bag); $this->sessionBag = $session->getBag(self::BAG_NAME); }
/** * Constructor. * * @param Session $session * @param string $storageKey * @param SessionCacheBag|null $bag */ public function __construct(Session $session, $storageKey = '_rollerworks_cache', SessionCacheBag $bag = null) { if (!$bag) { $bag = new SessionCacheBag($storageKey); $session->registerBag($bag); } $this->bagName = $bag->getName(); $this->session = $session; }
public function register(Application $app) { $this->app = $app; $app['session'] = function ($app) { $session = new Session($app['session.storage']); $session->registerBag($app['message']); return $session; }; $app['message'] = function () { return new Message(); }; $app['session.storage'] = function ($app) { switch ($app['config']['session.storage']) { case 'database': $handler = new Handler\DatabaseSessionHandler($app['db'], $app['config']['session.table']); $storage = new NativeSessionStorage($app['session.options'], $handler); break; case 'array': $storage = new MockArraySessionStorage(); $app['session.test'] = true; break; default: $handler = new NativeFileSessionHandler($app['config']['session.files']); $storage = new NativeSessionStorage($app['session.options'], $handler); break; } return $storage; }; $app['session.options'] = function ($app) { $options = $app['config']['session']; if (isset($options['cookie'])) { foreach ($options['cookie'] as $name => $value) { $options[$name == 'name' ? 'name' : 'cookie_' . $name] = $value; } unset($options['cookie']); } if (isset($options['lifetime']) && !isset($options['gc_maxlifetime'])) { $options['gc_maxlifetime'] = $options['lifetime']; } return $options; }; $app['session.test'] = false; }
/** * Returns the container object. * * @param string $rootDir The root directoy * * @return ContainerBuilder The object instance */ public static function create($rootDir) { $container = new ContainerBuilder(); // Set up the kernel parameters $container->setParameter('kernel.root_dir', $rootDir); $container->setParameter('kernel.cache_dir', $rootDir . '/cache/install'); $container->setParameter('kernel.debug', false); // Load the parameters.yml file if (file_exists($rootDir . '/config/parameters.yml')) { $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml')); } else { $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist')); } // Add the parameters to the container foreach ($parameters['parameters'] as $name => $value) { $container->setParameter($name, $value); } // Add the Contao upload path $container->setParameter('contao.upload_path', 'files'); // Set up the request stack $request = Request::createFromGlobals(); $requestStack = new RequestStack(); $requestStack->push($request); $container->set('request_stack', $requestStack); // Create the session bag $bag = new ArrayAttributeBag('_contao_be_attributes'); $bag->setName('contao_backend'); // Start the session $session = new Session(); $session->registerBag($bag); $session->start(); $container->set('session', $session); // Set up the database connection $container->set('database_connection', ConnectionFactory::create($parameters)); // Resolve the locale $translationsDir = __DIR__ . '/../Resources/translations'; $resolver = new LanguageResolver($requestStack, $translationsDir); $locale = $resolver->getLocale(); // Set up the translator $translator = new Translator($locale); $translator->setFallbackLocales(['en']); $translator->addLoader('xlf', new XliffFileLoader()); $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en'); if ('en' !== $locale) { $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en'); } $container->setParameter('locale', $locale); $container->set('translator.default', $translator); // Set up Twig $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(__DIR__ . '/../Resources/views')); $twig->addGlobal('path', $request->getBasePath()); $twig->addGlobal('language', str_replace('_', '-', $locale)); $twig->addGlobal('ua', Environment::get('agent')->class); $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) { return '/' . ltrim($request->getBasePath() . '/' . $path, '/'); })); $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) { return $translator->trans($message, $params); })); $container->set('twig', $twig); // Add the kernel bundles $kernel = new UnbootableKernel('prod', false); $kernel->setRootDir($rootDir); $kernel->setBundles($kernel->registerBundles()); $bundles = []; foreach ($kernel->getBundles() as $bundle) { $bundles[$bundle->getName()] = get_class($bundle); } $container->set('kernel', $kernel); $container->setParameter('kernel.bundles', $bundles); // Add the file system $container->set('filesystem', new Filesystem()); // Add the Contao resources paths $pass = new AddResourcesPathsPass(); $pass->process($container); // Add the Contao resource finder $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths'))); // Add the Contao resource locator $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths'))); // Add the installer services $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator.default'))); $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir)); $container->set('contao.install_tool_user', new InstallToolUser($container->get('session'))); return $container; }
<?php use Pagekit\Session\Csrf\Event\CsrfListener; use Pagekit\Session\Csrf\Provider\SessionCsrfProvider; use Pagekit\Session\Handler\DatabaseSessionHandler; use Pagekit\Session\MessageBag; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; return ['name' => 'session', 'main' => function ($app) { $app['session'] = function ($app) { $session = new Session($app['session.storage']); $session->registerBag($app['message']); return $session; }; $app['message'] = function () { return new MessageBag(); }; $app['session.storage'] = function ($app) { switch ($this->config['storage']) { case 'database': $handler = new DatabaseSessionHandler($app['db'], $this->config['table']); $storage = new NativeSessionStorage($app['session.options'], $handler); break; default: $handler = new NativeFileSessionHandler($this->config['files']); $storage = new NativeSessionStorage($app['session.options'], $handler); break; } return $storage; };
/** * Mocks a Symfony session containing the Contao attribute bags. * * @return SessionInterface The session object */ protected function mockSession() { $session = new Session(new MockArraySessionStorage()); $session->setId('session_test'); $session->start(); $beBag = new ArrayAttributeBag('_contao_be_attributes'); $beBag->setName('contao_backend'); $session->registerBag($beBag); $feBag = new ArrayAttributeBag('_contao_fe_attributes'); $feBag->setName('contao_frontend'); $session->registerBag($feBag); return $session; }
/** * Returns the container object. * * @param KernelInterface $kernel * @param Request $request * * @return ContainerBuilder */ public static function create(KernelInterface $kernel, Request $request) { $rootDir = $kernel->getRootDir(); $cacheDir = dirname($rootDir) . '/var/cache/' . $kernel->getEnvironment(); $logsDir = dirname($rootDir) . '/var/logs'; $container = new ContainerBuilder(); $container->setParameter('kernel.root_dir', $rootDir); $container->setParameter('kernel.cache_dir', $cacheDir); $container->setParameter('kernel.logs_dir', $logsDir); $container->setParameter('kernel.debug', false); $parameters = []; // Load the parameters.yml file if (file_exists($rootDir . '/config/parameters.yml')) { $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml')); } elseif (file_exists($rootDir . '/config/parameters.yml.dist')) { $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist')); } // Add the parameters to the container if (!empty($parameters['parameters'])) { foreach ($parameters['parameters'] as $name => $value) { $container->setParameter($name, $value); } } // Add the Contao parameters $container->setParameter('contao.upload_path', 'files'); $container->setParameter('contao.image.target_path', 'assets/images'); // Set up the request stack $requestStack = new RequestStack(); $requestStack->push($request); $container->set('request_stack', $requestStack); // Create the session bag $bag = new ArrayAttributeBag('_contao_be_attributes'); $bag->setName('contao_backend'); // Start the session $session = new Session(); $session->registerBag($bag); $session->start(); $container->set('session', $session); // Set up the database connection $container->set('database_connection', ConnectionFactory::create($parameters)); // Resolve the locale $translationsDir = __DIR__ . '/../Resources/translations'; $resolver = new LanguageResolver($requestStack, $translationsDir); $locale = $resolver->getLocale(); // Update the request locale $request->setLocale($locale); // Set up the translator $translator = new Translator($locale); $translator->setFallbackLocales(['en']); $translator->addLoader('xlf', new XliffFileLoader()); $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en'); if ('en' !== $locale) { $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en'); } $container->set('translator', $translator); // Set up Twig $twigLoader = new \Twig_Loader_Filesystem(); $twigLoader->addPath(__DIR__ . '/../Resources/views', 'ContaoInstallation'); $twig = new \Twig_Environment($twigLoader); $twig->addExtension(new AnsiExtension()); $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) { return '/' . ltrim($request->getBasePath() . '/' . $path, '/'); })); $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) { return $translator->trans($message, $params); })); $container->set('twig', $twig); $kernelBundles = []; foreach ($kernel->getBundles() as $bundle) { $kernelBundles[$bundle->getName()] = get_class($bundle); } $container->set('kernel', $kernel); $container->setParameter('kernel.bundles', $kernelBundles); // Add the file system $container->set('filesystem', new Filesystem()); // Add the Contao resources paths $pass = new AddResourcesPathsPass(); $pass->process($container); // Add the Contao resource finder $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths'))); // Add the Contao resource locator $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths'))); // Add the Contao cache $container->set('contao.cache', new FilesystemCache($cacheDir . '/contao/cache', '', 022)); // Add the installer services $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator'))); $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir)); $container->set('contao.install_tool_user', new InstallToolUser($container->get('session'))); return $container; }