PluginProbe
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.1
MailPoet – Newsletters, Email Marketing, and Automation v5.34.1
5.38.0 5.37.0 5.36.1 5.36.0 5.35.1 5.35.0 5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 All 542 releases
mailpoet / lib / Doctrine / ConnectionFactory.php
ConnectionFactory.php
63 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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