PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.3
MailPoet – Newsletters, Email Marketing, and Automation v5.34.3
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 / symfony / validator / Mapping / Loader / PropertyInfoLoader.php
mailpoet / vendor-prefixed / symfony / validator / Mapping / Loader Last commit date
schema 3 years ago AbstractLoader.php 4 years ago AnnotationLoader.php 1 year ago AutoMappingTrait.php 1 year ago FileLoader.php 4 years ago FilesLoader.php 4 years ago LoaderChain.php 4 years ago LoaderInterface.php 4 years ago PropertyInfoLoader.php 1 year ago StaticMethodLoader.php 4 years ago XmlFileLoader.php 4 years ago XmlFilesLoader.php 4 years ago YamlFileLoader.php 4 years ago YamlFilesLoader.php 4 years ago index.php 3 years ago
PropertyInfoLoader.php
139 lines
1 <?php
2 namespace MailPoetVendor\Symfony\Component\Validator\Mapping\Loader;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Symfony\Component\PropertyInfo\PropertyAccessExtractorInterface;
5 use MailPoetVendor\Symfony\Component\PropertyInfo\PropertyListExtractorInterface;
6 use MailPoetVendor\Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
7 use MailPoetVendor\Symfony\Component\PropertyInfo\Type as PropertyInfoType;
8 use MailPoetVendor\Symfony\Component\Validator\Constraints\All;
9 use MailPoetVendor\Symfony\Component\Validator\Constraints\NotBlank;
10 use MailPoetVendor\Symfony\Component\Validator\Constraints\NotNull;
11 use MailPoetVendor\Symfony\Component\Validator\Constraints\Type;
12 use MailPoetVendor\Symfony\Component\Validator\Mapping\AutoMappingStrategy;
13 use MailPoetVendor\Symfony\Component\Validator\Mapping\ClassMetadata;
14 final class PropertyInfoLoader implements LoaderInterface
15 {
16 use AutoMappingTrait;
17 private $listExtractor;
18 private $typeExtractor;
19 private $accessExtractor;
20 private $classValidatorRegexp;
21 public function __construct(PropertyListExtractorInterface $listExtractor, PropertyTypeExtractorInterface $typeExtractor, PropertyAccessExtractorInterface $accessExtractor, ?string $classValidatorRegexp = null)
22 {
23 $this->listExtractor = $listExtractor;
24 $this->typeExtractor = $typeExtractor;
25 $this->accessExtractor = $accessExtractor;
26 $this->classValidatorRegexp = $classValidatorRegexp;
27 }
28 public function loadClassMetadata(ClassMetadata $metadata) : bool
29 {
30 $className = $metadata->getClassName();
31 if (!($properties = $this->listExtractor->getProperties($className))) {
32 return \false;
33 }
34 $loaded = \false;
35 $enabledForClass = $this->isAutoMappingEnabledForClass($metadata, $this->classValidatorRegexp);
36 foreach ($properties as $property) {
37 if (\false === $this->accessExtractor->isWritable($className, $property)) {
38 continue;
39 }
40 if (!\property_exists($className, $property)) {
41 continue;
42 }
43 $types = $this->typeExtractor->getTypes($className, $property);
44 if (null === $types) {
45 continue;
46 }
47 $enabledForProperty = $enabledForClass;
48 $hasTypeConstraint = \false;
49 $hasNotNullConstraint = \false;
50 $hasNotBlankConstraint = \false;
51 $allConstraint = null;
52 foreach ($metadata->getPropertyMetadata($property) as $propertyMetadata) {
53 // Enabling or disabling auto-mapping explicitly always takes precedence
54 if (AutoMappingStrategy::DISABLED === $propertyMetadata->getAutoMappingStrategy()) {
55 continue 2;
56 }
57 if (AutoMappingStrategy::ENABLED === $propertyMetadata->getAutoMappingStrategy()) {
58 $enabledForProperty = \true;
59 }
60 foreach ($propertyMetadata->getConstraints() as $constraint) {
61 if ($constraint instanceof Type) {
62 $hasTypeConstraint = \true;
63 } elseif ($constraint instanceof NotNull) {
64 $hasNotNullConstraint = \true;
65 } elseif ($constraint instanceof NotBlank) {
66 $hasNotBlankConstraint = \true;
67 } elseif ($constraint instanceof All) {
68 $allConstraint = $constraint;
69 }
70 }
71 }
72 if (!$enabledForProperty) {
73 continue;
74 }
75 $loaded = \true;
76 $builtinTypes = [];
77 $nullable = \false;
78 $scalar = \true;
79 foreach ($types as $type) {
80 $builtinTypes[] = $type->getBuiltinType();
81 if ($scalar && !\in_array($type->getBuiltinType(), [PropertyInfoType::BUILTIN_TYPE_INT, PropertyInfoType::BUILTIN_TYPE_FLOAT, PropertyInfoType::BUILTIN_TYPE_STRING, PropertyInfoType::BUILTIN_TYPE_BOOL], \true)) {
82 $scalar = \false;
83 }
84 if (!$nullable && $type->isNullable()) {
85 $nullable = \true;
86 }
87 }
88 if (!$hasTypeConstraint) {
89 if (1 === \count($builtinTypes)) {
90 if ($types[0]->isCollection() && \count($collectionValueType = $types[0]->getCollectionValueTypes()) > 0) {
91 [$collectionValueType] = $collectionValueType;
92 $this->handleAllConstraint($property, $allConstraint, $collectionValueType, $metadata);
93 }
94 $metadata->addPropertyConstraint($property, $this->getTypeConstraint($builtinTypes[0], $types[0]));
95 } elseif ($scalar) {
96 $metadata->addPropertyConstraint($property, new Type(['type' => 'scalar']));
97 }
98 }
99 if (!$nullable && !$hasNotBlankConstraint && !$hasNotNullConstraint) {
100 $metadata->addPropertyConstraint($property, new NotNull());
101 }
102 }
103 return $loaded;
104 }
105 private function getTypeConstraint(string $builtinType, PropertyInfoType $type) : Type
106 {
107 if (PropertyInfoType::BUILTIN_TYPE_OBJECT === $builtinType && null !== ($className = $type->getClassName())) {
108 return new Type(['type' => $className]);
109 }
110 return new Type(['type' => $builtinType]);
111 }
112 private function handleAllConstraint(string $property, ?All $allConstraint, PropertyInfoType $propertyInfoType, ClassMetadata $metadata)
113 {
114 $containsTypeConstraint = \false;
115 $containsNotNullConstraint = \false;
116 if (null !== $allConstraint) {
117 foreach ($allConstraint->constraints as $constraint) {
118 if ($constraint instanceof Type) {
119 $containsTypeConstraint = \true;
120 } elseif ($constraint instanceof NotNull) {
121 $containsNotNullConstraint = \true;
122 }
123 }
124 }
125 $constraints = [];
126 if (!$containsNotNullConstraint && !$propertyInfoType->isNullable()) {
127 $constraints[] = new NotNull();
128 }
129 if (!$containsTypeConstraint) {
130 $constraints[] = $this->getTypeConstraint($propertyInfoType->getBuiltinType(), $propertyInfoType);
131 }
132 if (null === $allConstraint) {
133 $metadata->addPropertyConstraint($property, new All(['constraints' => $constraints]));
134 } else {
135 $allConstraint->constraints = \array_merge($allConstraint->constraints, $constraints);
136 }
137 }
138 }
139