PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.23.1
MailPoet – Newsletters, Email Marketing, and Automation v5.23.1
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 / ValidatorBuilder.php
mailpoet / vendor-prefixed / symfony / validator Last commit date
Command 1 year ago Constraints 1 year ago Context 1 year ago Exception 3 years ago Mapping 3 months ago Util 3 years ago Validator 6 months ago Violation 3 years ago Constraint.php 1 year ago ConstraintValidator.php 1 year ago ConstraintValidatorFactory.php 4 years ago ConstraintValidatorFactoryInterface.php 4 years ago ConstraintValidatorInterface.php 4 years ago ConstraintViolation.php 1 year ago ConstraintViolationInterface.php 4 years ago ConstraintViolationList.php 4 years ago ConstraintViolationListInterface.php 4 years ago ContainerConstraintValidatorFactory.php 4 years ago GroupSequenceProviderInterface.php 4 years ago ObjectInitializerInterface.php 4 years ago Validation.php 4 years ago ValidatorBuilder.php 4 years ago index.php 3 years ago
ValidatorBuilder.php
234 lines
1 <?php
2 namespace MailPoetVendor\Symfony\Component\Validator;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Doctrine\Common\Annotations\AnnotationReader;
5 use MailPoetVendor\Doctrine\Common\Annotations\CachedReader;
6 use MailPoetVendor\Doctrine\Common\Annotations\PsrCachedReader;
7 use MailPoetVendor\Doctrine\Common\Annotations\Reader;
8 use MailPoetVendor\Doctrine\Common\Cache\ArrayCache;
9 use MailPoetVendor\Psr\Cache\CacheItemPoolInterface;
10 use MailPoetVendor\Symfony\Component\Cache\Adapter\ArrayAdapter;
11 use MailPoetVendor\Symfony\Component\Validator\Context\ExecutionContextFactory;
12 use MailPoetVendor\Symfony\Component\Validator\Exception\LogicException;
13 use MailPoetVendor\Symfony\Component\Validator\Exception\ValidatorException;
14 use MailPoetVendor\Symfony\Component\Validator\Mapping\Factory\LazyLoadingMetadataFactory;
15 use MailPoetVendor\Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
16 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\AnnotationLoader;
17 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\LoaderChain;
18 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\LoaderInterface;
19 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
20 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\XmlFileLoader;
21 use MailPoetVendor\Symfony\Component\Validator\Mapping\Loader\YamlFileLoader;
22 use MailPoetVendor\Symfony\Component\Validator\Validator\RecursiveValidator;
23 use MailPoetVendor\Symfony\Component\Validator\Validator\ValidatorInterface;
24 use MailPoetVendor\Symfony\Contracts\Translation\LocaleAwareInterface;
25 use MailPoetVendor\Symfony\Contracts\Translation\TranslatorInterface;
26 use MailPoetVendor\Symfony\Contracts\Translation\TranslatorTrait;
27 // Help opcache.preload discover always-needed symbols
28 \class_exists(TranslatorInterface::class);
29 \class_exists(LocaleAwareInterface::class);
30 \class_exists(TranslatorTrait::class);
31 class ValidatorBuilder
32 {
33 private $initializers = [];
34 private $loaders = [];
35 private $xmlMappings = [];
36 private $yamlMappings = [];
37 private $methodMappings = [];
38 private $annotationReader;
39 private $enableAnnotationMapping = \false;
40 private $metadataFactory;
41 private $validatorFactory;
42 private $mappingCache;
43 private $translator;
44 private $translationDomain;
45 public function addObjectInitializer(ObjectInitializerInterface $initializer)
46 {
47 $this->initializers[] = $initializer;
48 return $this;
49 }
50 public function addObjectInitializers(array $initializers)
51 {
52 $this->initializers = \array_merge($this->initializers, $initializers);
53 return $this;
54 }
55 public function addXmlMapping(string $path)
56 {
57 if (null !== $this->metadataFactory) {
58 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
59 }
60 $this->xmlMappings[] = $path;
61 return $this;
62 }
63 public function addXmlMappings(array $paths)
64 {
65 if (null !== $this->metadataFactory) {
66 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
67 }
68 $this->xmlMappings = \array_merge($this->xmlMappings, $paths);
69 return $this;
70 }
71 public function addYamlMapping(string $path)
72 {
73 if (null !== $this->metadataFactory) {
74 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
75 }
76 $this->yamlMappings[] = $path;
77 return $this;
78 }
79 public function addYamlMappings(array $paths)
80 {
81 if (null !== $this->metadataFactory) {
82 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
83 }
84 $this->yamlMappings = \array_merge($this->yamlMappings, $paths);
85 return $this;
86 }
87 public function addMethodMapping(string $methodName)
88 {
89 if (null !== $this->metadataFactory) {
90 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
91 }
92 $this->methodMappings[] = $methodName;
93 return $this;
94 }
95 public function addMethodMappings(array $methodNames)
96 {
97 if (null !== $this->metadataFactory) {
98 throw new ValidatorException('You cannot add custom mappings after setting a custom metadata factory. Configure your metadata factory instead.');
99 }
100 $this->methodMappings = \array_merge($this->methodMappings, $methodNames);
101 return $this;
102 }
103 public function enableAnnotationMapping()
104 {
105 if (null !== $this->metadataFactory) {
106 throw new ValidatorException('You cannot enable annotation mapping after setting a custom metadata factory. Configure your metadata factory instead.');
107 }
108 $skipDoctrineAnnotations = 1 > \func_num_args() ? \false : \func_get_arg(0);
109 if (\false === $skipDoctrineAnnotations || null === $skipDoctrineAnnotations) {
110 trigger_deprecation('symfony/validator', '5.2', 'Not passing true as first argument to "%s" is deprecated. Pass true and call "addDefaultDoctrineAnnotationReader()" if you want to enable annotation mapping with Doctrine Annotations.', __METHOD__);
111 $this->addDefaultDoctrineAnnotationReader();
112 } elseif ($skipDoctrineAnnotations instanceof Reader) {
113 trigger_deprecation('symfony/validator', '5.2', 'Passing an instance of "%s" as first argument to "%s" is deprecated. Pass true instead and call setDoctrineAnnotationReader() if you want to enable annotation mapping with Doctrine Annotations.', \get_debug_type($skipDoctrineAnnotations), __METHOD__);
114 $this->setDoctrineAnnotationReader($skipDoctrineAnnotations);
115 } elseif (\true !== $skipDoctrineAnnotations) {
116 throw new \TypeError(\sprintf('"%s": Argument 1 is expected to be a boolean, "%s" given.', __METHOD__, \get_debug_type($skipDoctrineAnnotations)));
117 }
118 $this->enableAnnotationMapping = \true;
119 return $this;
120 }
121 public function disableAnnotationMapping()
122 {
123 $this->enableAnnotationMapping = \false;
124 $this->annotationReader = null;
125 return $this;
126 }
127 public function setDoctrineAnnotationReader(?Reader $reader) : self
128 {
129 $this->annotationReader = $reader;
130 return $this;
131 }
132 public function addDefaultDoctrineAnnotationReader() : self
133 {
134 $this->annotationReader = $this->createAnnotationReader();
135 return $this;
136 }
137 public function setMetadataFactory(MetadataFactoryInterface $metadataFactory)
138 {
139 if (\count($this->xmlMappings) > 0 || \count($this->yamlMappings) > 0 || \count($this->methodMappings) > 0 || $this->enableAnnotationMapping) {
140 throw new ValidatorException('You cannot set a custom metadata factory after adding custom mappings. You should do either of both.');
141 }
142 $this->metadataFactory = $metadataFactory;
143 return $this;
144 }
145 public function setMappingCache(CacheItemPoolInterface $cache)
146 {
147 if (null !== $this->metadataFactory) {
148 throw new ValidatorException('You cannot set a custom mapping cache after setting a custom metadata factory. Configure your metadata factory instead.');
149 }
150 $this->mappingCache = $cache;
151 return $this;
152 }
153 public function setConstraintValidatorFactory(ConstraintValidatorFactoryInterface $validatorFactory)
154 {
155 $this->validatorFactory = $validatorFactory;
156 return $this;
157 }
158 public function setTranslator(TranslatorInterface $translator)
159 {
160 $this->translator = $translator;
161 return $this;
162 }
163 public function setTranslationDomain(?string $translationDomain)
164 {
165 $this->translationDomain = $translationDomain;
166 return $this;
167 }
168 public function addLoader(LoaderInterface $loader)
169 {
170 $this->loaders[] = $loader;
171 return $this;
172 }
173 public function getLoaders()
174 {
175 $loaders = [];
176 foreach ($this->xmlMappings as $xmlMapping) {
177 $loaders[] = new XmlFileLoader($xmlMapping);
178 }
179 foreach ($this->yamlMappings as $yamlMappings) {
180 $loaders[] = new YamlFileLoader($yamlMappings);
181 }
182 foreach ($this->methodMappings as $methodName) {
183 $loaders[] = new StaticMethodLoader($methodName);
184 }
185 if ($this->enableAnnotationMapping) {
186 $loaders[] = new AnnotationLoader($this->annotationReader);
187 }
188 return \array_merge($loaders, $this->loaders);
189 }
190 public function getValidator()
191 {
192 $metadataFactory = $this->metadataFactory;
193 if (!$metadataFactory) {
194 $loaders = $this->getLoaders();
195 $loader = null;
196 if (\count($loaders) > 1) {
197 $loader = new LoaderChain($loaders);
198 } elseif (1 === \count($loaders)) {
199 $loader = $loaders[0];
200 }
201 $metadataFactory = new LazyLoadingMetadataFactory($loader, $this->mappingCache);
202 }
203 $validatorFactory = $this->validatorFactory ?? new ConstraintValidatorFactory();
204 $translator = $this->translator;
205 if (null === $translator) {
206 $translator = new class implements TranslatorInterface, LocaleAwareInterface
207 {
208 use TranslatorTrait;
209 };
210 // Force the locale to be 'en' when no translator is provided rather than relying on the Intl default locale
211 // This avoids depending on Intl or the stub implementation being available. It also ensures that Symfony
212 // validation messages are pluralized properly even when the default locale gets changed because they are in
213 // English.
214 $translator->setLocale('en');
215 }
216 $contextFactory = new ExecutionContextFactory($translator, $this->translationDomain);
217 return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers);
218 }
219 private function createAnnotationReader() : Reader
220 {
221 if (!\class_exists(AnnotationReader::class)) {
222 throw new LogicException('Enabling annotation based constraint mapping requires the packages doctrine/annotations and symfony/cache to be installed.');
223 }
224 if (\class_exists(ArrayAdapter::class)) {
225 return new PsrCachedReader(new AnnotationReader(), new ArrayAdapter());
226 }
227 if (\class_exists(CachedReader::class) && \class_exists(ArrayCache::class)) {
228 trigger_deprecation('symfony/validator', '5.4', 'Enabling annotation based constraint mapping without having symfony/cache installed is deprecated.');
229 return new CachedReader(new AnnotationReader(), new ArrayCache());
230 }
231 throw new LogicException('Enabling annotation based constraint mapping requires the packages doctrine/annotations and symfony/cache to be installed.');
232 }
233 }
234