PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 4.50.0
MailPoet – Newsletters, Email Marketing, and Automation v4.50.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 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Doctrine / EntityManagerFactory.php
mailpoet / lib / Doctrine Last commit date
Annotations 3 years ago EntityTraits 2 years ago EventListeners 2 years ago Types 3 years ago Validator 3 years ago ArrayCache.php 3 years ago CacheOnlyMappingDriver.php 3 years ago ConfigurationFactory.php 3 years ago ConnectionFactory.php 3 years ago EntityManagerFactory.php 2 years ago MetadataCache.php 2 years ago PSRArrayCache.php 3 years ago PSRCacheInvalidArgumentException.php 3 years ago PSRCacheItem.php 3 years ago PSRMetadataCache.php 3 years ago ProxyClassNameResolver.php 3 years ago Repository.php 2 years ago SerializableConnection.php 3 years ago TablePrefixMetadataFactory.php 2 years ago index.php 3 years ago
EntityManagerFactory.php
126 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\EventListeners\EmojiEncodingListener;
9 use MailPoet\Doctrine\EventListeners\LastSubscribedAtListener;
10 use MailPoet\Doctrine\EventListeners\NewsletterListener;
11 use MailPoet\Doctrine\EventListeners\SubscriberListener;
12 use MailPoet\Doctrine\EventListeners\TimestampListener;
13 use MailPoet\Doctrine\EventListeners\ValidationListener;
14 use MailPoet\Tracy\DoctrinePanel\DoctrinePanel;
15 use MailPoetVendor\Doctrine\DBAL\Connection;
16 use MailPoetVendor\Doctrine\ORM\Configuration;
17 use MailPoetVendor\Doctrine\ORM\EntityManager;
18 use MailPoetVendor\Doctrine\ORM\Events;
19 use Tracy\Debugger;
20
21 class EntityManagerFactory {
22
23 /** @var Connection */
24 private $connection;
25
26 /** @var Configuration */
27 private $configuration;
28
29 /** @var TimestampListener */
30 private $timestampListener;
31
32 /** @var ValidationListener */
33 private $validationListener;
34
35 /** @var EmojiEncodingListener */
36 private $emojiEncodingListener;
37
38 /** @var LastSubscribedAtListener */
39 private $lastSubscribedAtListener;
40
41 /** @var SubscriberListener */
42 private $subscriberListener;
43
44 private NewsletterListener $newsletterListener;
45
46 public function __construct(
47 Connection $connection,
48 Configuration $configuration,
49 TimestampListener $timestampListener,
50 ValidationListener $validationListener,
51 EmojiEncodingListener $emojiEncodingListener,
52 LastSubscribedAtListener $lastSubscribedAtListener,
53 NewsletterListener $newsletterListener,
54 SubscriberListener $subscriberListener
55 ) {
56 $this->connection = $connection;
57 $this->configuration = $configuration;
58 $this->timestampListener = $timestampListener;
59 $this->validationListener = $validationListener;
60 $this->emojiEncodingListener = $emojiEncodingListener;
61 $this->lastSubscribedAtListener = $lastSubscribedAtListener;
62 $this->subscriberListener = $subscriberListener;
63 $this->newsletterListener = $newsletterListener;
64 }
65
66 public function createEntityManager(): EntityManager {
67 $entityManager = EntityManager::create($this->connection, $this->configuration);
68 $this->cleanupListeners($entityManager);
69 $this->setupListeners($entityManager);
70 if (
71 class_exists(Debugger::class)
72 && class_exists(DoctrinePanel::class)
73 ) {
74 DoctrinePanel::init($entityManager);
75 }
76 return $entityManager;
77 }
78
79 /**
80 * We sometimes work with more EntityManager in tests, and the behavior could be inconsistent with multiple listeners
81 */
82 private function cleanupListeners(EntityManager $entityManager) {
83 $eventManager = $entityManager->getEventManager();
84 foreach ($eventManager->getListeners() as $event => $listeners) {
85 if (!is_array($listeners)) {
86 $eventManager->removeEventListener($event, $listeners);
87 continue;
88 }
89 foreach ($listeners as $listener) {
90 $eventManager->removeEventListener($event, $listener);
91 }
92 }
93
94 $entityManager->getConfiguration()->getEntityListenerResolver()->clear(SubscriberListener::class);
95 }
96
97 private function setupListeners(EntityManager $entityManager) {
98 $entityManager->getEventManager()->addEventListener(
99 [Events::prePersist, Events::preUpdate],
100 $this->timestampListener
101 );
102
103 $entityManager->getEventManager()->addEventListener(
104 [Events::onFlush],
105 $this->validationListener
106 );
107
108 $entityManager->getEventManager()->addEventListener(
109 [Events::prePersist, Events::preUpdate],
110 $this->emojiEncodingListener
111 );
112
113 $entityManager->getEventManager()->addEventListener(
114 [Events::prePersist, Events::preUpdate],
115 $this->lastSubscribedAtListener
116 );
117
118 $entityManager->getEventManager()->addEventListener(
119 [Events::preUpdate],
120 $this->newsletterListener
121 );
122
123 $entityManager->getConfiguration()->getEntityListenerResolver()->register($this->subscriberListener);
124 }
125 }
126