PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.36.0
MailPoet – Newsletters, Email Marketing, and Automation v5.36.0
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 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 / vendor-prefixed / doctrine / orm / src / Cache / DefaultEntityHydrator.php
mailpoet / vendor-prefixed / doctrine / orm / src / Cache Last commit date
Exception 9 months ago Logging 9 months ago Persister 9 months ago Region 9 months ago AssociationCacheEntry.php 9 months ago CacheConfiguration.php 9 months ago CacheEntry.php 9 months ago CacheException.php 9 months ago CacheFactory.php 9 months ago CacheKey.php 9 months ago CollectionCacheEntry.php 9 months ago CollectionCacheKey.php 9 months ago CollectionHydrator.php 9 months ago ConcurrentRegion.php 9 months ago DefaultCache.php 9 months ago DefaultCacheFactory.php 9 months ago DefaultCollectionHydrator.php 9 months ago DefaultEntityHydrator.php 9 months ago DefaultQueryCache.php 9 months ago EntityCacheEntry.php 9 months ago EntityCacheKey.php 9 months ago EntityHydrator.php 9 months ago Lock.php 9 months ago LockException.php 9 months ago MultiGetRegion.php 9 months ago QueryCache.php 9 months ago QueryCacheEntry.php 9 months ago QueryCacheKey.php 9 months ago QueryCacheValidator.php 9 months ago Region.php 9 months ago RegionsConfiguration.php 9 months ago TimestampCacheEntry.php 9 months ago TimestampCacheKey.php 9 months ago TimestampQueryCacheValidator.php 9 months ago TimestampRegion.php 9 months ago index.php 9 months ago
DefaultEntityHydrator.php
128 lines
1 <?php
2 declare (strict_types=1);
3 namespace MailPoetVendor\Doctrine\ORM\Cache;
4 if (!defined('ABSPATH')) exit;
5 use MailPoetVendor\Doctrine\ORM\EntityManagerInterface;
6 use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
7 use MailPoetVendor\Doctrine\ORM\Proxy\DefaultProxyClassNameResolver;
8 use MailPoetVendor\Doctrine\ORM\Query;
9 use MailPoetVendor\Doctrine\ORM\UnitOfWork;
10 use MailPoetVendor\Doctrine\ORM\Utility\IdentifierFlattener;
11 use function array_merge;
12 use function assert;
13 use function is_array;
14 use function is_object;
15 use function reset;
16 class DefaultEntityHydrator implements EntityHydrator
17 {
18 private $em;
19 private $uow;
20 private $identifierFlattener;
21 private static $hints = [Query::HINT_CACHE_ENABLED => \true];
22 public function __construct(EntityManagerInterface $em)
23 {
24 $this->em = $em;
25 $this->uow = $em->getUnitOfWork();
26 $this->identifierFlattener = new IdentifierFlattener($em->getUnitOfWork(), $em->getMetadataFactory());
27 }
28 public function buildCacheEntry(ClassMetadata $metadata, EntityCacheKey $key, $entity)
29 {
30 $data = $this->uow->getOriginalEntityData($entity);
31 $data = array_merge($data, $metadata->getIdentifierValues($entity));
32 // why update has no identifier values ?
33 if ($metadata->requiresFetchAfterChange) {
34 if ($metadata->isVersioned) {
35 assert($metadata->versionField !== null);
36 $data[$metadata->versionField] = $metadata->getFieldValue($entity, $metadata->versionField);
37 }
38 foreach ($metadata->fieldMappings as $name => $fieldMapping) {
39 if (isset($fieldMapping['generated'])) {
40 $data[$name] = $metadata->getFieldValue($entity, $name);
41 }
42 }
43 }
44 foreach ($metadata->associationMappings as $name => $assoc) {
45 if (!isset($data[$name])) {
46 continue;
47 }
48 if (!($assoc['type'] & ClassMetadata::TO_ONE)) {
49 unset($data[$name]);
50 continue;
51 }
52 if (!isset($assoc['cache'])) {
53 $targetClassMetadata = $this->em->getClassMetadata($assoc['targetEntity']);
54 $owningAssociation = !$assoc['isOwningSide'] ? $targetClassMetadata->associationMappings[$assoc['mappedBy']] : $assoc;
55 $associationIds = $this->identifierFlattener->flattenIdentifier($targetClassMetadata, $targetClassMetadata->getIdentifierValues($data[$name]));
56 unset($data[$name]);
57 foreach ($associationIds as $fieldName => $fieldValue) {
58 if (isset($targetClassMetadata->fieldMappings[$fieldName])) {
59 $fieldMapping = $targetClassMetadata->fieldMappings[$fieldName];
60 $data[$owningAssociation['targetToSourceKeyColumns'][$fieldMapping['columnName']]] = $fieldValue;
61 continue;
62 }
63 $targetAssoc = $targetClassMetadata->associationMappings[$fieldName];
64 foreach ($assoc['targetToSourceKeyColumns'] as $referencedColumn => $localColumn) {
65 if (isset($targetAssoc['sourceToTargetKeyColumns'][$referencedColumn])) {
66 $data[$localColumn] = $fieldValue;
67 }
68 }
69 }
70 continue;
71 }
72 if (!isset($assoc['id'])) {
73 $targetClass = DefaultProxyClassNameResolver::getClass($data[$name]);
74 $targetId = $this->uow->getEntityIdentifier($data[$name]);
75 $data[$name] = new AssociationCacheEntry($targetClass, $targetId);
76 continue;
77 }
78 // handle association identifier
79 $targetId = is_object($data[$name]) && $this->uow->isInIdentityMap($data[$name]) ? $this->uow->getEntityIdentifier($data[$name]) : $data[$name];
80 // @TODO - fix it !
81 // handle UnitOfWork#createEntity hash generation
82 if (!is_array($targetId)) {
83 $data[reset($assoc['joinColumnFieldNames'])] = $targetId;
84 $targetEntity = $this->em->getClassMetadata($assoc['targetEntity']);
85 $targetId = [$targetEntity->identifier[0] => $targetId];
86 }
87 $data[$name] = new AssociationCacheEntry($assoc['targetEntity'], $targetId);
88 }
89 return new EntityCacheEntry($metadata->name, $data);
90 }
91 public function loadCacheEntry(ClassMetadata $metadata, EntityCacheKey $key, EntityCacheEntry $entry, $entity = null)
92 {
93 $data = $entry->data;
94 $hints = self::$hints;
95 if ($entity !== null) {
96 $hints[Query::HINT_REFRESH] = \true;
97 $hints[Query::HINT_REFRESH_ENTITY] = $entity;
98 }
99 foreach ($metadata->associationMappings as $name => $assoc) {
100 if (!isset($assoc['cache']) || !isset($data[$name])) {
101 continue;
102 }
103 $assocClass = $data[$name]->class;
104 $assocId = $data[$name]->identifier;
105 $isEagerLoad = $assoc['fetch'] === ClassMetadata::FETCH_EAGER || $assoc['type'] === ClassMetadata::ONE_TO_ONE && !$assoc['isOwningSide'];
106 if (!$isEagerLoad) {
107 $data[$name] = $this->em->getReference($assocClass, $assocId);
108 continue;
109 }
110 $assocMetadata = $this->em->getClassMetadata($assoc['targetEntity']);
111 $assocKey = new EntityCacheKey($assocMetadata->rootEntityName, $assocId);
112 $assocPersister = $this->uow->getEntityPersister($assoc['targetEntity']);
113 $assocRegion = $assocPersister->getCacheRegion();
114 $assocEntry = $assocRegion->get($assocKey);
115 if ($assocEntry === null) {
116 return null;
117 }
118 $data[$name] = $this->uow->createEntity($assocEntry->class, $assocEntry->resolveAssociationEntries($this->em), $hints);
119 }
120 if ($entity !== null) {
121 $this->uow->registerManaged($entity, $key->identifier, $data);
122 }
123 $result = $this->uow->createEntity($entry->class, $data, $hints);
124 $this->uow->hydrationComplete();
125 return $result;
126 }
127 }
128