Annotations
3 years ago
EntityTraits
2 years ago
EventListeners
2 months ago
Middlewares
1 month ago
Types
2 months ago
Validator
2 months ago
WPDB
2 months ago
ArrayCache.php
2 months ago
CacheOnlyMappingDriver.php
3 years ago
ConfigurationFactory.php
3 years ago
ConnectionFactory.php
1 year ago
EntityManagerFactory.php
2 years ago
MetadataCache.php
2 months ago
PSRArrayCache.php
2 months ago
PSRCacheInvalidArgumentException.php
3 years ago
PSRCacheItem.php
2 months ago
PSRMetadataCache.php
3 years ago
ProxyClassNameResolver.php
3 years ago
Repository.php
8 months ago
TablePrefixMetadataFactory.php
6 months ago
index.php
3 years ago
ConnectionFactory.php
63 lines
| 1 | <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing |
| 2 | |
| 3 | namespace MailPoet\Doctrine; |
| 4 | |
| 5 | if (!defined('ABSPATH')) exit; |
| 6 | |
| 7 | |
| 8 | use MailPoet\Doctrine\Middlewares\PostConnectMiddleware; |
| 9 | use MailPoet\Doctrine\Types\BigIntType; |
| 10 | use MailPoet\Doctrine\Types\DateTimeTzToStringType; |
| 11 | use MailPoet\Doctrine\Types\JsonOrSerializedType; |
| 12 | use MailPoet\Doctrine\Types\JsonType; |
| 13 | use MailPoet\Doctrine\Types\SerializedArrayType; |
| 14 | use MailPoet\Doctrine\WPDB\Driver as WPDBDriver; |
| 15 | use MailPoetVendor\Doctrine\DBAL\Configuration; |
| 16 | use MailPoetVendor\Doctrine\DBAL\Driver; |
| 17 | use MailPoetVendor\Doctrine\DBAL\Driver\Middleware; |
| 18 | use MailPoetVendor\Doctrine\DBAL\DriverManager; |
| 19 | use MailPoetVendor\Doctrine\DBAL\Types\Type; |
| 20 | |
| 21 | class ConnectionFactory { |
| 22 | const DRIVER_CLASS = WPDBDriver::class; |
| 23 | |
| 24 | private $types = [ |
| 25 | BigIntType::NAME => BigIntType::class, |
| 26 | DateTimeTzToStringType::NAME => DateTimeTzToStringType::class, |
| 27 | JsonType::NAME => JsonType::class, |
| 28 | JsonOrSerializedType::NAME => JsonOrSerializedType::class, |
| 29 | SerializedArrayType::NAME => SerializedArrayType::class, |
| 30 | ]; |
| 31 | |
| 32 | public function createConnection() { |
| 33 | $this->setupTypes(); |
| 34 | return DriverManager::getConnection( |
| 35 | [ |
| 36 | 'driverClass' => self::DRIVER_CLASS, |
| 37 | ], |
| 38 | $this->getConfiguration() |
| 39 | ); |
| 40 | } |
| 41 | |
| 42 | private function setupTypes() { |
| 43 | foreach ($this->types as $name => $class) { |
| 44 | if (Type::hasType($name)) { |
| 45 | Type::overrideType($name, $class); |
| 46 | } else { |
| 47 | Type::addType($name, $class); |
| 48 | } |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | private function getConfiguration(): Configuration { |
| 53 | $config = new Configuration(); |
| 54 | $driverMiddleware = new class implements Middleware { |
| 55 | public function wrap(Driver $driver): Driver { |
| 56 | return new PostConnectMiddleware($driver); |
| 57 | } |
| 58 | }; |
| 59 | $config->setMiddlewares([$driverMiddleware]); |
| 60 | return $config; |
| 61 | } |
| 62 | } |
| 63 |