From ca1311abf623c71adbee9511641e93eeaaf19d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Thu, 25 Apr 2019 13:42:54 +0200 Subject: [PATCH] Add Doctrine EntityManager configuration [MAILPOET-2014] --- lib/DI/ContainerConfigurator.php | 7 +++++++ lib/Doctrine/ConfigurationFactory.php | 28 +++++++++++++++++++++++++++ lib/Doctrine/EntityManagerFactory.php | 25 ++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 lib/Doctrine/ConfigurationFactory.php create mode 100644 lib/Doctrine/EntityManagerFactory.php diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index f56ef26892..477684a6ac 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -92,10 +92,17 @@ class ContainerConfigurator implements IContainerConfigurator { ->setPublic(true) ->setFactory([new Reference(\MailPoet\Config\RendererFactory::class), 'getRenderer']); // Doctrine + $container->autowire(\MailPoet\Doctrine\ConfigurationFactory::class); $container->autowire(\MailPoet\Doctrine\ConnectionFactory::class); + $container->autowire(\MailPoet\Doctrine\EntityManagerFactory::class); + $container->autowire(\MailPoetVendor\Doctrine\ORM\Configuration::class) + ->setFactory([new Reference(\MailPoet\Doctrine\ConfigurationFactory::class), 'createConfiguration']); $container->autowire(\MailPoetVendor\Doctrine\DBAL\Connection::class) ->setFactory([new Reference(\MailPoet\Doctrine\ConnectionFactory::class), 'createConnection']) ->setPublic(true); + $container->autowire(\MailPoetVendor\Doctrine\ORM\EntityManager::class) + ->setFactory([new Reference(\MailPoet\Doctrine\EntityManagerFactory::class), 'createEntityManager']) + ->setPublic(true); // Cron $container->autowire(\MailPoet\Cron\Daemon::class)->setPublic(true); $container->autowire(\MailPoet\Cron\DaemonHttpRunner::class)->setPublic(true); diff --git a/lib/Doctrine/ConfigurationFactory.php b/lib/Doctrine/ConfigurationFactory.php new file mode 100644 index 0000000000..e7642fa360 --- /dev/null +++ b/lib/Doctrine/ConfigurationFactory.php @@ -0,0 +1,28 @@ +is_dev_mode = WP_DEBUG; + } + + function createConfiguration() { + $configuration = new Configuration(); + $configuration->setNamingStrategy(new UnderscoreNamingStrategy()); + $configuration->setMetadataDriverImpl($configuration->newDefaultAnnotationDriver([self::ENTITY_DIR])); + + if (!$this->is_dev_mode) { + $configuration->ensureProductionSettings(); + } + return $configuration; + } +} diff --git a/lib/Doctrine/EntityManagerFactory.php b/lib/Doctrine/EntityManagerFactory.php new file mode 100644 index 0000000000..95856bad8b --- /dev/null +++ b/lib/Doctrine/EntityManagerFactory.php @@ -0,0 +1,25 @@ +connection = $connection; + $this->configuration = $configuration; + } + + function createEntityManager() { + return EntityManager::create($this->connection, $this->configuration); + } +}