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' );
2025-02-18 01:11:01 +01:00
@ trigger_error ( 'The "app/config/parameters.yml" file is deprecated and will not be supported in a future version. Move your configuration to environment variables and remove the file.' , \E_USER_DEPRECATED );
2025-01-11 04:56:01 +01:00
}
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_TABLE_PREFIX' , 'database_table_prefix' );
$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
}
}