diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 10959839a3..f56ef26892 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -91,6 +91,11 @@ class ContainerConfigurator implements IContainerConfigurator { $container->register(\MailPoet\Config\Renderer::class) ->setPublic(true) ->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']); + // Doctrine + $container->autowire(\MailPoet\Doctrine\ConnectionFactory::class); + $container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class) + ->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection']) + ->setPublic(true); // Cron $container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true); $container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true); diff --git a/lib/Doctrine/ConnectionFactory.php b/lib/Doctrine/ConnectionFactory.php new file mode 100644 index 0000000000..38c1921d7e --- /dev/null +++ b/lib/Doctrine/ConnectionFactory.php @@ -0,0 +1,29 @@ + self::DRIVER, + 'platform' => new $platform_class, + 'host' => Env::$db_host, + 'port' => Env::$db_port, + 'socket' => Env::$db_socket, + 'user' => Env::$db_username, + 'password' => Env::$db_password, + 'charset' => Env::$db_charset, + 'dbname' => Env::$db_name, + ]; + return DriverManager::getConnection($connection_params); + } +} diff --git a/tests/integration/Doctrine/ConnectionFactoryTest.php b/tests/integration/Doctrine/ConnectionFactoryTest.php new file mode 100644 index 0000000000..35a1698c27 --- /dev/null +++ b/tests/integration/Doctrine/ConnectionFactoryTest.php @@ -0,0 +1,27 @@ +createConnection(); + + expect($connection->getWrappedConnection())->isInstanceOf(PDO::class); + expect($connection->getDriver())->isInstanceOf(PDOMySql\Driver::class); + expect($connection->getDatabasePlatform())->isInstanceOf(MySqlPlatform::class); + expect($connection->getHost())->equals(Env::$db_host); + expect($connection->getPort())->equals(Env::$db_port); + expect($connection->getParams()['socket'])->equals(Env::$db_socket); + expect($connection->getUsername())->equals(Env::$db_username); + expect($connection->getPassword())->equals(Env::$db_password); + expect($connection->getParams()['charset'])->equals(Env::$db_charset); + expect($connection->getDatabase())->equals(Env::$db_name); + } +}