2015-01-22 08:30:07 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
2018-10-24 21:02:35 +02:00
|
|
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
2017-07-01 09:52:38 +02:00
|
|
|
use Symfony\Component\HttpKernel\Kernel;
|
2024-02-19 01:30:12 +01:00
|
|
|
use Wallabag\Import\ImportCompilerPass;
|
2015-01-22 08:30:07 +01:00
|
|
|
|
|
|
|
class AppKernel extends Kernel
|
|
|
|
{
|
|
|
|
public function registerBundles()
|
|
|
|
{
|
2016-01-14 18:15:07 +01:00
|
|
|
$bundles = [
|
2015-01-22 08:30:07 +01:00
|
|
|
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
|
|
|
|
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
|
|
|
|
new Symfony\Bundle\TwigBundle\TwigBundle(),
|
|
|
|
new Symfony\Bundle\MonologBundle\MonologBundle(),
|
|
|
|
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
|
|
|
|
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
|
2015-01-28 17:09:27 +01:00
|
|
|
new FOS\RestBundle\FOSRestBundle(),
|
2015-08-18 11:08:45 +02:00
|
|
|
new FOS\UserBundle\FOSUserBundle(),
|
2015-01-28 17:09:27 +01:00
|
|
|
new JMS\SerializerBundle\JMSSerializerBundle(),
|
|
|
|
new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
|
2015-02-27 21:26:43 +01:00
|
|
|
new Nelmio\CorsBundle\NelmioCorsBundle(),
|
2015-03-29 10:53:10 +02:00
|
|
|
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
|
2024-01-19 21:43:33 +01:00
|
|
|
new Spiriit\Bundle\FormFilterBundle\SpiriitFormFilterBundle(),
|
2015-09-29 14:31:52 +02:00
|
|
|
new FOS\OAuthServerBundle\FOSOAuthServerBundle(),
|
2015-10-14 21:30:25 +02:00
|
|
|
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
|
2015-10-13 22:43:15 +02:00
|
|
|
new Scheb\TwoFactorBundle\SchebTwoFactorBundle(),
|
2015-10-11 16:54:21 +02:00
|
|
|
new KPhoen\RulerZBundle\KPhoenRulerZBundle(),
|
2016-01-08 16:27:29 +01:00
|
|
|
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
|
2016-01-21 08:53:09 +01:00
|
|
|
new Craue\ConfigBundle\CraueConfigBundle(),
|
2020-06-15 08:25:59 +02:00
|
|
|
new BabDev\PagerfantaBundle\BabDevPagerfantaBundle(),
|
2016-10-24 11:20:11 +02:00
|
|
|
new FOS\JsRoutingBundle\FOSJsRoutingBundle(),
|
2018-10-04 14:07:20 +02:00
|
|
|
new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
|
2019-06-05 13:15:15 +02:00
|
|
|
new Sentry\SentryBundle\SentryBundle(),
|
2022-12-15 12:32:16 +01:00
|
|
|
new Twig\Extra\TwigExtraBundle\TwigExtraBundle(),
|
2023-08-10 01:10:54 +01:00
|
|
|
new Symfony\WebpackEncoreBundle\WebpackEncoreBundle(),
|
2016-01-14 18:15:07 +01:00
|
|
|
];
|
2015-01-22 08:30:07 +01:00
|
|
|
|
2016-01-14 18:15:07 +01:00
|
|
|
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
|
2015-01-22 08:30:07 +01:00
|
|
|
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
|
|
|
|
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
|
2015-02-08 23:05:51 +01:00
|
|
|
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
|
2017-05-15 20:47:59 +02:00
|
|
|
|
|
|
|
if ('test' === $this->getEnvironment()) {
|
|
|
|
$bundles[] = new DAMA\DoctrineTestBundle\DAMADoctrineTestBundle();
|
|
|
|
}
|
2018-10-24 21:02:35 +02:00
|
|
|
|
|
|
|
if ('dev' === $this->getEnvironment()) {
|
2020-05-25 06:16:16 +02:00
|
|
|
$bundles[] = new Symfony\Bundle\MakerBundle\MakerBundle();
|
2018-10-24 21:02:35 +02:00
|
|
|
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
|
|
|
|
}
|
2015-01-22 08:30:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return $bundles;
|
|
|
|
}
|
|
|
|
|
2016-01-14 18:15:07 +01:00
|
|
|
public function getCacheDir()
|
|
|
|
{
|
2017-07-01 09:52:38 +02:00
|
|
|
return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment();
|
2016-01-14 18:15:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getLogDir()
|
|
|
|
{
|
2017-07-01 09:52:38 +02:00
|
|
|
return dirname(__DIR__) . '/var/logs';
|
2016-01-14 18:15:07 +01:00
|
|
|
}
|
|
|
|
|
2015-01-22 08:30:07 +01:00
|
|
|
public function registerContainerConfiguration(LoaderInterface $loader)
|
|
|
|
{
|
2025-01-11 04:56:01 +01:00
|
|
|
if (file_exists($this->getProjectDir() . '/app/config/parameters.yml')) {
|
|
|
|
$loader->load($this->getProjectDir() . '/app/config/parameters.yml');
|
|
|
|
}
|
|
|
|
|
2023-08-07 22:22:35 +01:00
|
|
|
$loader->load($this->getProjectDir() . '/app/config/config_' . $this->getEnvironment() . '.yml');
|
2018-10-24 21:02:35 +02:00
|
|
|
|
|
|
|
$loader->load(function (ContainerBuilder $container) {
|
|
|
|
// $container->setParameter('container.autowiring.strict_mode', true);
|
|
|
|
// $container->setParameter('container.dumper.inline_class_loader', true);
|
|
|
|
$container->addObjectResource($this);
|
|
|
|
});
|
2024-01-04 02:04:20 +01:00
|
|
|
|
2025-01-15 22:56:13 +01:00
|
|
|
if (file_exists($this->getProjectDir() . '/app/config/parameters.yml')) {
|
|
|
|
$loader->load(function (ContainerBuilder $container) {
|
2025-01-11 01:11:34 +01:00
|
|
|
$this->loadEnvVarsFromParameters($container);
|
2025-01-18 13:39:31 +01:00
|
|
|
$this->defineDatabaseUrlEnvVar($container);
|
2025-01-15 22:56:13 +01:00
|
|
|
});
|
|
|
|
}
|
2024-01-04 02:04:20 +01:00
|
|
|
}
|
|
|
|
|
2024-02-19 00:53:59 +01:00
|
|
|
protected function build(ContainerBuilder $container)
|
|
|
|
{
|
|
|
|
$container->addCompilerPass(new ImportCompilerPass());
|
|
|
|
}
|
|
|
|
|
2025-01-11 01:11:34 +01:00
|
|
|
private function loadEnvVarsFromParameters(ContainerBuilder $container)
|
|
|
|
{
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_HOST', 'database_host');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_PORT', 'database_port');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_NAME', 'database_name');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_USER', 'database_user');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_PASSWORD', 'database_password');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_PATH', 'database_path');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_TABLE_PREFIX', 'database_table_prefix');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_SOCKET', 'database_socket');
|
|
|
|
$this->setEnvVarFromParameter($container, 'DATABASE_CHARSET', 'database_charset');
|
|
|
|
|
|
|
|
$this->setEnvVarFromParameter($container, 'DOMAIN_NAME', 'domain_name');
|
|
|
|
$this->setEnvVarFromParameter($container, 'SERVER_NAME', 'server_name');
|
|
|
|
$this->setEnvVarFromParameter($container, 'MAILER_DSN', 'mailer_dsn');
|
|
|
|
$this->setEnvVarFromParameter($container, 'LOCALE', 'locale');
|
|
|
|
$this->setEnvVarFromParameter($container, 'SECRET', 'secret');
|
|
|
|
|
|
|
|
$this->setEnvVarFromParameter($container, 'TWOFACTOR_SENDER', 'twofactor_sender');
|
|
|
|
$this->setEnvVarFromParameter($container, 'FOSUSER_REGISTRATION', 'fosuser_registration');
|
|
|
|
$this->setEnvVarFromParameter($container, 'FOSUSER_CONFIRMATION', 'fosuser_confirmation');
|
|
|
|
$this->setEnvVarFromParameter($container, 'FOS_OAUTH_SERVER_ACCESS_TOKEN_LIFETIME', 'fos_oauth_server_access_token_lifetime');
|
|
|
|
$this->setEnvVarFromParameter($container, 'FOS_OAUTH_SERVER_REFRESH_TOKEN_LIFETIME', 'fos_oauth_server_refresh_token_lifetime');
|
|
|
|
$this->setEnvVarFromParameter($container, 'FROM_EMAIL', 'from_email');
|
|
|
|
|
|
|
|
$this->setEnvVarFromParameter($container, 'RABBITMQ_HOST', 'rabbitmq_host');
|
|
|
|
$this->setEnvVarFromParameter($container, 'RABBITMQ_PORT', 'rabbitmq_port');
|
|
|
|
$this->setEnvVarFromParameter($container, 'RABBITMQ_USER', 'rabbitmq_user');
|
|
|
|
$this->setEnvVarFromParameter($container, 'RABBITMQ_PASSWORD', 'rabbitmq_password');
|
|
|
|
$this->setEnvVarFromParameter($container, 'RABBITMQ_PREFETCH_COUNT', 'rabbitmq_prefetch_count');
|
|
|
|
|
|
|
|
$this->setEnvVarFromParameter($container, 'REDIS_SCHEME', 'redis_scheme');
|
|
|
|
$this->setEnvVarFromParameter($container, 'REDIS_HOST', 'redis_host');
|
|
|
|
$this->setEnvVarFromParameter($container, 'REDIS_PORT', 'redis_port');
|
|
|
|
$this->setEnvVarFromParameter($container, 'REDIS_PATH', 'redis_path');
|
|
|
|
$this->setEnvVarFromParameter($container, 'REDIS_PASSWORD', 'redis_password');
|
|
|
|
|
|
|
|
$this->setEnvVarFromParameter($container, 'SENTRY_DSN', 'sentry_dsn');
|
|
|
|
}
|
|
|
|
|
|
|
|
private function setEnvVarFromParameter(ContainerBuilder $container, string $envVar, string $parameter)
|
|
|
|
{
|
|
|
|
$_ENV[$envVar] = $_SERVER[$envVar] = (string) $container->getParameter($parameter);
|
|
|
|
$container->setParameter('env(' . $envVar . ')', (string) $container->getParameter($parameter));
|
|
|
|
}
|
|
|
|
|
2025-01-18 13:39:31 +01:00
|
|
|
private function defineDatabaseUrlEnvVar(ContainerBuilder $container)
|
2024-01-04 02:04:20 +01:00
|
|
|
{
|
2024-01-05 00:41:13 +01:00
|
|
|
switch ($container->getParameter('database_driver')) {
|
2024-01-04 02:04:20 +01:00
|
|
|
case 'pdo_mysql':
|
|
|
|
$scheme = 'mysql';
|
|
|
|
break;
|
|
|
|
case 'pdo_pgsql':
|
|
|
|
$scheme = 'pgsql';
|
|
|
|
break;
|
|
|
|
case 'pdo_sqlite':
|
|
|
|
$scheme = 'sqlite';
|
|
|
|
break;
|
|
|
|
default:
|
2024-01-01 19:11:01 +01:00
|
|
|
throw new RuntimeException('Unsupported database driver: ' . $container->getParameter('database_driver'));
|
2024-01-04 02:04:20 +01:00
|
|
|
}
|
|
|
|
|
2025-01-18 13:39:31 +01:00
|
|
|
$user = $container->getParameter('database_user');
|
|
|
|
$password = $container->getParameter('database_password');
|
|
|
|
$host = $container->getParameter('database_host');
|
|
|
|
$port = $container->getParameter('database_port');
|
|
|
|
$name = $container->getParameter('database_name');
|
2024-01-04 02:04:20 +01:00
|
|
|
|
|
|
|
if ('sqlite' === $scheme) {
|
2025-01-18 13:39:31 +01:00
|
|
|
$name = $container->getParameter('database_path');
|
2024-01-04 02:04:20 +01:00
|
|
|
}
|
|
|
|
|
2025-01-18 13:39:31 +01:00
|
|
|
$url = $scheme . '://' . $user . ':' . $password . '@' . $host;
|
|
|
|
|
|
|
|
if ($port) {
|
|
|
|
$url .= ':' . $port;
|
|
|
|
}
|
|
|
|
|
|
|
|
$url .= '/' . $name;
|
|
|
|
|
|
|
|
$query = [];
|
|
|
|
|
|
|
|
if ($container->getParameter('database_socket')) {
|
|
|
|
$query['unix_socket'] = $container->getParameter('database_socket');
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($container->getParameter('database_charset')) {
|
|
|
|
$query['charset'] = $container->getParameter('database_charset');
|
|
|
|
}
|
|
|
|
|
|
|
|
if ([] !== $query) {
|
|
|
|
$url .= '?' . http_build_query($query);
|
|
|
|
}
|
|
|
|
|
|
|
|
$_ENV['DATABASE_URL'] = $_SERVER['DATABASE_URL'] = $url;
|
|
|
|
$container->setParameter('env(DATABASE_URL)', $url);
|
2015-01-22 08:30:07 +01:00
|
|
|
}
|
|
|
|
}
|