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 / Internal / Hydration / SimpleObjectHydrator.php
mailpoet / vendor-prefixed / doctrine / orm / src / Internal / Hydration Last commit date
AbstractHydrator.php 9 months ago ArrayHydrator.php 9 months ago HydrationException.php 9 months ago IterableResult.php 9 months ago ObjectHydrator.php 9 months ago ScalarColumnHydrator.php 9 months ago ScalarHydrator.php 9 months ago SimpleObjectHydrator.php 9 months ago SingleScalarHydrator.php 9 months ago index.php 9 months ago
SimpleObjectHydrator.php
129 lines
1 <?php
2 declare (strict_types=1);
3 namespace MailPoetVendor\Doctrine\ORM\Internal\Hydration;
4 if (!defined('ABSPATH')) exit;
5 use MailPoetVendor\Doctrine\ORM\Internal\SQLResultCasing;
6 use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata;
7 use MailPoetVendor\Doctrine\ORM\Mapping\MappingException;
8 use MailPoetVendor\Doctrine\ORM\Query;
9 use Exception;
10 use RuntimeException;
11 use ValueError;
12 use function array_keys;
13 use function array_search;
14 use function count;
15 use function in_array;
16 use function is_array;
17 use function key;
18 use function reset;
19 use function sprintf;
20 class SimpleObjectHydrator extends AbstractHydrator
21 {
22 use SQLResultCasing;
23 private $class;
24 protected function prepare()
25 {
26 if (count($this->resultSetMapping()->aliasMap) !== 1) {
27 throw new RuntimeException('Cannot use SimpleObjectHydrator with a ResultSetMapping that contains more than one object result.');
28 }
29 if ($this->resultSetMapping()->scalarMappings) {
30 throw new RuntimeException('Cannot use SimpleObjectHydrator with a ResultSetMapping that contains scalar mappings.');
31 }
32 $this->class = $this->getClassMetadata(reset($this->resultSetMapping()->aliasMap));
33 }
34 protected function cleanup()
35 {
36 parent::cleanup();
37 $this->_uow->triggerEagerLoads();
38 $this->_uow->hydrationComplete();
39 }
40 protected function hydrateAllData()
41 {
42 $result = [];
43 while ($row = $this->statement()->fetchAssociative()) {
44 $this->hydrateRowData($row, $result);
45 }
46 $this->_em->getUnitOfWork()->triggerEagerLoads();
47 return $result;
48 }
49 protected function hydrateRowData(array $row, array &$result)
50 {
51 $entityName = $this->class->name;
52 $data = [];
53 $discrColumnValue = null;
54 // We need to find the correct entity class name if we have inheritance in resultset
55 if ($this->class->inheritanceType !== ClassMetadata::INHERITANCE_TYPE_NONE) {
56 $discrColumn = $this->class->getDiscriminatorColumn();
57 $discrColumnName = $this->getSQLResultCasing($this->_platform, $discrColumn['name']);
58 // Find mapped discriminator column from the result set.
59 $metaMappingDiscrColumnName = array_search($discrColumnName, $this->resultSetMapping()->metaMappings, \true);
60 if ($metaMappingDiscrColumnName) {
61 $discrColumnName = $metaMappingDiscrColumnName;
62 }
63 if (!isset($row[$discrColumnName])) {
64 throw HydrationException::missingDiscriminatorColumn($entityName, $discrColumnName, key($this->resultSetMapping()->aliasMap));
65 }
66 if ($row[$discrColumnName] === '') {
67 throw HydrationException::emptyDiscriminatorValue(key($this->resultSetMapping()->aliasMap));
68 }
69 $discrMap = $this->class->discriminatorMap;
70 if (!isset($discrMap[$row[$discrColumnName]])) {
71 throw HydrationException::invalidDiscriminatorValue($row[$discrColumnName], array_keys($discrMap));
72 }
73 $entityName = $discrMap[$row[$discrColumnName]];
74 $discrColumnValue = $row[$discrColumnName];
75 unset($row[$discrColumnName]);
76 }
77 foreach ($row as $column => $value) {
78 // An ObjectHydrator should be used instead of SimpleObjectHydrator
79 if (isset($this->resultSetMapping()->relationMap[$column])) {
80 throw new Exception(sprintf('Unable to retrieve association information for column "%s"', $column));
81 }
82 $cacheKeyInfo = $this->hydrateColumnInfo($column);
83 if (!$cacheKeyInfo) {
84 continue;
85 }
86 // If we have inheritance in resultset, make sure the field belongs to the correct class
87 if (isset($cacheKeyInfo['discriminatorValues']) && !in_array((string) $discrColumnValue, $cacheKeyInfo['discriminatorValues'], \true)) {
88 continue;
89 }
90 // Check if value is null before conversion (because some types convert null to something else)
91 $valueIsNull = $value === null;
92 // Convert field to a valid PHP value
93 if (isset($cacheKeyInfo['type'])) {
94 $type = $cacheKeyInfo['type'];
95 $value = $type->convertToPHPValue($value, $this->_platform);
96 }
97 if ($value !== null && isset($cacheKeyInfo['enumType'])) {
98 $originalValue = $currentValue = $value;
99 try {
100 if (!is_array($originalValue)) {
101 $value = $this->buildEnum($originalValue, $cacheKeyInfo['enumType']);
102 } else {
103 $value = [];
104 foreach ($originalValue as $i => $currentValue) {
105 $value[$i] = $this->buildEnum($currentValue, $cacheKeyInfo['enumType']);
106 }
107 }
108 } catch (ValueError $e) {
109 throw MappingException::invalidEnumValue($entityName, $cacheKeyInfo['fieldName'], (string) $currentValue, $cacheKeyInfo['enumType'], $e);
110 }
111 }
112 $fieldName = $cacheKeyInfo['fieldName'];
113 // Prevent overwrite in case of inherit classes using same property name (See AbstractHydrator)
114 if (!isset($data[$fieldName]) || !$valueIsNull) {
115 $data[$fieldName] = $value;
116 }
117 }
118 if (isset($this->_hints[Query::HINT_REFRESH_ENTITY])) {
119 $this->registerManaged($this->class, $this->_hints[Query::HINT_REFRESH_ENTITY], $data);
120 }
121 $uow = $this->_em->getUnitOfWork();
122 $entity = $uow->createEntity($entityName, $data, $this->_hints);
123 $result[] = $entity;
124 if (isset($this->_hints[Query::HINT_INTERNAL_ITERATION]) && $this->_hints[Query::HINT_INTERNAL_ITERATION]) {
125 $this->_uow->hydrationComplete();
126 }
127 }
128 }
129