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); + } +}