<?php namespace MailPoetVendor\Symfony\Component\Validator\Constraints; if (!defined('ABSPATH')) exit; use MailPoetVendor\Symfony\Component\Validator\Constraint; use MailPoetVendor\Symfony\Component\Validator\Exception\InvalidArgumentException; #[\Attribute(\Attribute::TARGET_PROPERTY | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)] class CssColor extends Constraint { public const HEX_LONG = 'hex_long'; public const HEX_LONG_WITH_ALPHA = 'hex_long_with_alpha'; public const HEX_SHORT = 'hex_short'; public const HEX_SHORT_WITH_ALPHA = 'hex_short_with_alpha'; public const BASIC_NAMED_COLORS = 'basic_named_colors'; public const EXTENDED_NAMED_COLORS = 'extended_named_colors'; public const SYSTEM_COLORS = 'system_colors'; public const KEYWORDS = 'keywords'; public const RGB = 'rgb'; public const RGBA = 'rgba'; public const HSL = 'hsl'; public const HSLA = 'hsla'; public const INVALID_FORMAT_ERROR = '454ab47b-aacf-4059-8f26-184b2dc9d48d'; protected static $errorNames = [self::INVALID_FORMAT_ERROR => 'INVALID_FORMAT_ERROR']; private static $validationModes = [self::HEX_LONG, self::HEX_LONG_WITH_ALPHA, self::HEX_SHORT, self::HEX_SHORT_WITH_ALPHA, self::BASIC_NAMED_COLORS, self::EXTENDED_NAMED_COLORS, self::SYSTEM_COLORS, self::KEYWORDS, self::RGB, self::RGBA, self::HSL, self::HSLA]; public $message = 'This value is not a valid CSS color.'; public $formats; public function __construct($formats = [], string $message = null, array $groups = null, $payload = null, array $options = null) { $validationModesAsString = \implode(', ', self::$validationModes); if (!$formats) { $options['value'] = self::$validationModes; } elseif (\is_array($formats) && \is_string(\key($formats))) { $options = \array_merge($formats, $options ?? []); } elseif (\is_array($formats)) { if ([] === \array_intersect(self::$validationModes, $formats)) { throw new InvalidArgumentException(\sprintf('The "formats" parameter value is not valid. It must contain one or more of the following values: "%s".', $validationModesAsString)); } $options['value'] = $formats; } elseif (\is_string($formats)) { if (!\in_array($formats, self::$validationModes)) { throw new InvalidArgumentException(\sprintf('The "formats" parameter value is not valid. It must contain one or more of the following values: "%s".', $validationModesAsString)); } $options['value'] = [$formats]; } else { throw new InvalidArgumentException('The "formats" parameter type is not valid. It should be a string or an array.'); } parent::__construct($options, $groups, $payload); $this->message = $message ?? $this->message; } public function getDefaultOption() : string { return 'formats'; } public function getRequiredOptions() : array { return ['formats']; } }