<?php namespace MailPoet\Doctrine; if (!defined('ABSPATH')) exit; use MailPoet\Doctrine\Annotations\AnnotationReaderProvider; use MailPoetVendor\Doctrine\Common\Cache\ArrayCache; use MailPoetVendor\Doctrine\Common\Proxy\AbstractProxyFactory; use MailPoetVendor\Doctrine\ORM\Configuration; use MailPoetVendor\Doctrine\ORM\Mapping\Driver\AnnotationDriver; use MailPoetVendor\Doctrine\Persistence\Mapping\Driver\PHPDriver; use MailPoetVendor\Doctrine\ORM\Mapping\UnderscoreNamingStrategy; class ConfigurationFactory { const ENTITY_DIR = __DIR__ . '/../Entities'; const METADATA_DIR = __DIR__ . '/../../generated/doctrine-metadata'; const PROXY_DIR = __DIR__ . '/../../generated/doctrine-proxies'; const PROXY_NAMESPACE = 'MailPoetDoctrineProxies'; /** @var bool */ private $isDevMode; /** @var AnnotationReaderProvider */ private $annotationReaderProvider; public function __construct(AnnotationReaderProvider $annotationReaderProvider, $isDevMode = null) { $this->isDevMode = $isDevMode === null ? WP_DEBUG : $isDevMode; $this->annotationReaderProvider = $annotationReaderProvider; } public function createConfiguration() { $configuration = new Configuration(); $configuration->setNamingStrategy(new UnderscoreNamingStrategy(\CASE_LOWER, true)); $this->configureMetadata($configuration); $this->configureProxies($configuration); $this->configureCache($configuration); return $configuration; } private function configureMetadata(Configuration $configuration) { $configuration->setClassMetadataFactoryName(TablePrefixMetadataFactory::class); // annotation reader exists only in dev environment, on production cache is pre-generated $annotationReader = $this->annotationReaderProvider->getAnnotationReader(); if ($annotationReader) { $configuration->setMetadataDriverImpl(new AnnotationDriver($annotationReader, [self::ENTITY_DIR])); } else { // Should never be called but Doctrine requires having driver set $configuration->setMetadataDriverImpl(new PHPDriver([])); } // metadata cache (for production cache is pre-generated at build time) $isReadOnly = !$annotationReader; $metadataStorage = new PSRMetadataCache(self::METADATA_DIR, $isReadOnly); $configuration->setMetadataCache($metadataStorage); } private function configureProxies(Configuration $configuration) { $configuration->setProxyDir(self::PROXY_DIR); $configuration->setProxyNamespace(self::PROXY_NAMESPACE); $configuration->setAutoGenerateProxyClasses( $this->isDevMode ? AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS : AbstractProxyFactory::AUTOGENERATE_NEVER ); } private function configureCache(Configuration $configuration) { $cache = new ArrayCache(); $configuration->setQueryCacheImpl($cache); $configuration->setResultCacheImpl($cache); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Annotations | Folder | 0755 |
|
|
EntityTraits | Folder | 0755 |
|
|
EventListeners | Folder | 0755 |
|
|
Types | Folder | 0755 |
|
|
Validator | Folder | 0755 |
|
|
ConfigurationFactory.php | File | 2.84 KB | 0644 |
|
ConnectionFactory.php | File | 3.19 KB | 0644 |
|
EntityManagerFactory.php | File | 2.5 KB | 0644 |
|
MetadataCache.php | File | 2.8 KB | 0644 |
|
PSRCacheInvalidArgumentException.php | File | 225 B | 0644 |
|
PSRCacheItem.php | File | 1010 B | 0644 |
|
PSRMetadataCache.php | File | 2.23 KB | 0644 |
|
ProxyClassNameResolver.php | File | 1.02 KB | 0644 |
|
Repository.php | File | 2.62 KB | 0644 |
|
SerializableConnection.php | File | 937 B | 0644 |
|
TablePrefixMetadataFactory.php | File | 2.46 KB | 0644 |
|
index.php | File | 0 B | 0644 |
|