oont-contents/plugins/mailpoet/vendor-prefixed/symfony/validator/Mapping/GenericMetadata.php
2025-02-08 15:10:23 +01:00

87 lines
2.9 KiB
PHP

<?php
namespace MailPoetVendor\Symfony\Component\Validator\Mapping;
if (!defined('ABSPATH')) exit;
use MailPoetVendor\Symfony\Component\Validator\Constraint;
use MailPoetVendor\Symfony\Component\Validator\Constraints\Cascade;
use MailPoetVendor\Symfony\Component\Validator\Constraints\DisableAutoMapping;
use MailPoetVendor\Symfony\Component\Validator\Constraints\EnableAutoMapping;
use MailPoetVendor\Symfony\Component\Validator\Constraints\Traverse;
use MailPoetVendor\Symfony\Component\Validator\Constraints\Valid;
use MailPoetVendor\Symfony\Component\Validator\Exception\ConstraintDefinitionException;
class GenericMetadata implements MetadataInterface
{
public $constraints = [];
public $constraintsByGroup = [];
public $cascadingStrategy = CascadingStrategy::NONE;
public $traversalStrategy = TraversalStrategy::NONE;
public $autoMappingStrategy = AutoMappingStrategy::NONE;
public function __sleep()
{
return ['constraints', 'constraintsByGroup', 'cascadingStrategy', 'traversalStrategy', 'autoMappingStrategy'];
}
public function __clone()
{
$constraints = $this->constraints;
$this->constraints = [];
$this->constraintsByGroup = [];
foreach ($constraints as $constraint) {
$this->addConstraint(clone $constraint);
}
}
public function addConstraint(Constraint $constraint)
{
if ($constraint instanceof Traverse || $constraint instanceof Cascade) {
throw new ConstraintDefinitionException(\sprintf('The constraint "%s" can only be put on classes. Please use "Symfony\\Component\\Validator\\Constraints\\Valid" instead.', \get_debug_type($constraint)));
}
if ($constraint instanceof Valid && null === $constraint->groups) {
$this->cascadingStrategy = CascadingStrategy::CASCADE;
if ($constraint->traverse) {
$this->traversalStrategy = TraversalStrategy::IMPLICIT;
} else {
$this->traversalStrategy = TraversalStrategy::NONE;
}
return $this;
}
if ($constraint instanceof DisableAutoMapping || $constraint instanceof EnableAutoMapping) {
$this->autoMappingStrategy = $constraint instanceof EnableAutoMapping ? AutoMappingStrategy::ENABLED : AutoMappingStrategy::DISABLED;
// The constraint is not added
return $this;
}
$this->constraints[] = $constraint;
foreach ($constraint->groups as $group) {
$this->constraintsByGroup[$group][] = $constraint;
}
return $this;
}
public function addConstraints(array $constraints)
{
foreach ($constraints as $constraint) {
$this->addConstraint($constraint);
}
return $this;
}
public function getConstraints()
{
return $this->constraints;
}
public function hasConstraints()
{
return \count($this->constraints) > 0;
}
public function findConstraints(string $group)
{
return $this->constraintsByGroup[$group] ?? [];
}
public function getCascadingStrategy()
{
return $this->cascadingStrategy;
}
public function getTraversalStrategy()
{
return $this->traversalStrategy;
}
public function getAutoMappingStrategy() : int
{
return $this->autoMappingStrategy;
}
}