vendor/symfony/validator/Constraints/Image.php line 22

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Validator\Constraints;
  11. /**
  12.  * @Annotation
  13.  * @Target({"PROPERTY", "METHOD", "ANNOTATION"})
  14.  *
  15.  * @author Benjamin Dulau <benjamin.dulau@gmail.com>
  16.  * @author Bernhard Schussek <bschussek@gmail.com>
  17.  */
  18. #[\Attribute(\Attribute::TARGET_PROPERTY \Attribute::TARGET_METHOD \Attribute::IS_REPEATABLE)]
  19. class Image extends File
  20. {
  21.     public const SIZE_NOT_DETECTED_ERROR '6d55c3f4-e58e-4fe3-91ee-74b492199956';
  22.     public const TOO_WIDE_ERROR '7f87163d-878f-47f5-99ba-a8eb723a1ab2';
  23.     public const TOO_NARROW_ERROR '9afbd561-4f90-4a27-be62-1780fc43604a';
  24.     public const TOO_HIGH_ERROR '7efae81c-4877-47ba-aa65-d01ccb0d4645';
  25.     public const TOO_LOW_ERROR 'aef0cb6a-c07f-4894-bc08-1781420d7b4c';
  26.     public const TOO_FEW_PIXEL_ERROR '1b06b97d-ae48-474e-978f-038a74854c43';
  27.     public const TOO_MANY_PIXEL_ERROR 'ee0804e8-44db-4eac-9775-be91aaf72ce1';
  28.     public const RATIO_TOO_BIG_ERROR '70cafca6-168f-41c9-8c8c-4e47a52be643';
  29.     public const RATIO_TOO_SMALL_ERROR '59b8c6ef-bcf2-4ceb-afff-4642ed92f12e';
  30.     public const SQUARE_NOT_ALLOWED_ERROR '5d41425b-facb-47f7-a55a-de9fbe45cb46';
  31.     public const LANDSCAPE_NOT_ALLOWED_ERROR '6f895685-7cf2-4d65-b3da-9029c5581d88';
  32.     public const PORTRAIT_NOT_ALLOWED_ERROR '65608156-77da-4c79-a88c-02ef6d18c782';
  33.     public const CORRUPTED_IMAGE_ERROR '5d4163f3-648f-4e39-87fd-cc5ea7aad2d1';
  34.     // Include the mapping from the base class
  35.     protected const ERROR_NAMES = [
  36.         self::NOT_FOUND_ERROR => 'NOT_FOUND_ERROR',
  37.         self::NOT_READABLE_ERROR => 'NOT_READABLE_ERROR',
  38.         self::EMPTY_ERROR => 'EMPTY_ERROR',
  39.         self::TOO_LARGE_ERROR => 'TOO_LARGE_ERROR',
  40.         self::INVALID_MIME_TYPE_ERROR => 'INVALID_MIME_TYPE_ERROR',
  41.         self::SIZE_NOT_DETECTED_ERROR => 'SIZE_NOT_DETECTED_ERROR',
  42.         self::TOO_WIDE_ERROR => 'TOO_WIDE_ERROR',
  43.         self::TOO_NARROW_ERROR => 'TOO_NARROW_ERROR',
  44.         self::TOO_HIGH_ERROR => 'TOO_HIGH_ERROR',
  45.         self::TOO_LOW_ERROR => 'TOO_LOW_ERROR',
  46.         self::TOO_FEW_PIXEL_ERROR => 'TOO_FEW_PIXEL_ERROR',
  47.         self::TOO_MANY_PIXEL_ERROR => 'TOO_MANY_PIXEL_ERROR',
  48.         self::RATIO_TOO_BIG_ERROR => 'RATIO_TOO_BIG_ERROR',
  49.         self::RATIO_TOO_SMALL_ERROR => 'RATIO_TOO_SMALL_ERROR',
  50.         self::SQUARE_NOT_ALLOWED_ERROR => 'SQUARE_NOT_ALLOWED_ERROR',
  51.         self::LANDSCAPE_NOT_ALLOWED_ERROR => 'LANDSCAPE_NOT_ALLOWED_ERROR',
  52.         self::PORTRAIT_NOT_ALLOWED_ERROR => 'PORTRAIT_NOT_ALLOWED_ERROR',
  53.         self::CORRUPTED_IMAGE_ERROR => 'CORRUPTED_IMAGE_ERROR',
  54.     ];
  55.     /**
  56.      * @deprecated since Symfony 6.1, use const ERROR_NAMES instead
  57.      */
  58.     protected static $errorNames self::ERROR_NAMES;
  59.     public $mimeTypes 'image/*';
  60.     public $minWidth;
  61.     public $maxWidth;
  62.     public $maxHeight;
  63.     public $minHeight;
  64.     public $maxRatio;
  65.     public $minRatio;
  66.     public $minPixels;
  67.     public $maxPixels;
  68.     public $allowSquare true;
  69.     public $allowLandscape true;
  70.     public $allowPortrait true;
  71.     public $detectCorrupted false;
  72.     // The constant for a wrong MIME type is taken from the parent class.
  73.     public $mimeTypesMessage 'This file is not a valid image.';
  74.     public $sizeNotDetectedMessage 'The size of the image could not be detected.';
  75.     public $maxWidthMessage 'The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.';
  76.     public $minWidthMessage 'The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.';
  77.     public $maxHeightMessage 'The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.';
  78.     public $minHeightMessage 'The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.';
  79.     public $minPixelsMessage 'The image has too few pixels ({{ pixels }} pixels). Minimum amount expected is {{ min_pixels }} pixels.';
  80.     public $maxPixelsMessage 'The image has too many pixels ({{ pixels }} pixels). Maximum amount expected is {{ max_pixels }} pixels.';
  81.     public $maxRatioMessage 'The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}.';
  82.     public $minRatioMessage 'The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}.';
  83.     public $allowSquareMessage 'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.';
  84.     public $allowLandscapeMessage 'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.';
  85.     public $allowPortraitMessage 'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.';
  86.     public $corruptedMessage 'The image file is corrupted.';
  87.     /**
  88.      * {@inheritdoc}
  89.      */
  90.     public function __construct(
  91.         array $options null,
  92.         int|string $maxSize null,
  93.         bool $binaryFormat null,
  94.         array $mimeTypes null,
  95.         int $minWidth null,
  96.         int $maxWidth null,
  97.         int $maxHeight null,
  98.         int $minHeight null,
  99.         int|float $maxRatio null,
  100.         int|float $minRatio null,
  101.         int|float $minPixels null,
  102.         int|float $maxPixels null,
  103.         bool $allowSquare null,
  104.         bool $allowLandscape null,
  105.         bool $allowPortrait null,
  106.         bool $detectCorrupted null,
  107.         string $notFoundMessage null,
  108.         string $notReadableMessage null,
  109.         string $maxSizeMessage null,
  110.         string $mimeTypesMessage null,
  111.         string $disallowEmptyMessage null,
  112.         string $uploadIniSizeErrorMessage null,
  113.         string $uploadFormSizeErrorMessage null,
  114.         string $uploadPartialErrorMessage null,
  115.         string $uploadNoFileErrorMessage null,
  116.         string $uploadNoTmpDirErrorMessage null,
  117.         string $uploadCantWriteErrorMessage null,
  118.         string $uploadExtensionErrorMessage null,
  119.         string $uploadErrorMessage null,
  120.         string $sizeNotDetectedMessage null,
  121.         string $maxWidthMessage null,
  122.         string $minWidthMessage null,
  123.         string $maxHeightMessage null,
  124.         string $minHeightMessage null,
  125.         string $minPixelsMessage null,
  126.         string $maxPixelsMessage null,
  127.         string $maxRatioMessage null,
  128.         string $minRatioMessage null,
  129.         string $allowSquareMessage null,
  130.         string $allowLandscapeMessage null,
  131.         string $allowPortraitMessage null,
  132.         string $corruptedMessage null,
  133.         array $groups null,
  134.         mixed $payload null
  135.     ) {
  136.         parent::__construct(
  137.             $options,
  138.             $maxSize,
  139.             $binaryFormat,
  140.             $mimeTypes,
  141.             $notFoundMessage,
  142.             $notReadableMessage,
  143.             $maxSizeMessage,
  144.             $mimeTypesMessage,
  145.             $disallowEmptyMessage,
  146.             $uploadIniSizeErrorMessage,
  147.             $uploadFormSizeErrorMessage,
  148.             $uploadPartialErrorMessage,
  149.             $uploadNoFileErrorMessage,
  150.             $uploadNoTmpDirErrorMessage,
  151.             $uploadCantWriteErrorMessage,
  152.             $uploadExtensionErrorMessage,
  153.             $uploadErrorMessage,
  154.             $groups,
  155.             $payload
  156.         );
  157.         $this->minWidth $minWidth ?? $this->minWidth;
  158.         $this->maxWidth $maxWidth ?? $this->maxWidth;
  159.         $this->maxHeight $maxHeight ?? $this->maxHeight;
  160.         $this->minHeight $minHeight ?? $this->minHeight;
  161.         $this->maxRatio $maxRatio ?? $this->maxRatio;
  162.         $this->minRatio $minRatio ?? $this->minRatio;
  163.         $this->minPixels $minPixels ?? $this->minPixels;
  164.         $this->maxPixels $maxPixels ?? $this->maxPixels;
  165.         $this->allowSquare $allowSquare ?? $this->allowSquare;
  166.         $this->allowLandscape $allowLandscape ?? $this->allowLandscape;
  167.         $this->allowPortrait $allowPortrait ?? $this->allowPortrait;
  168.         $this->detectCorrupted $detectCorrupted ?? $this->detectCorrupted;
  169.         $this->sizeNotDetectedMessage $sizeNotDetectedMessage ?? $this->sizeNotDetectedMessage;
  170.         $this->maxWidthMessage $maxWidthMessage ?? $this->maxWidthMessage;
  171.         $this->minWidthMessage $minWidthMessage ?? $this->minWidthMessage;
  172.         $this->maxHeightMessage $maxHeightMessage ?? $this->maxHeightMessage;
  173.         $this->minHeightMessage $minHeightMessage ?? $this->minHeightMessage;
  174.         $this->minPixelsMessage $minPixelsMessage ?? $this->minPixelsMessage;
  175.         $this->maxPixelsMessage $maxPixelsMessage ?? $this->maxPixelsMessage;
  176.         $this->maxRatioMessage $maxRatioMessage ?? $this->maxRatioMessage;
  177.         $this->minRatioMessage $minRatioMessage ?? $this->minRatioMessage;
  178.         $this->allowSquareMessage $allowSquareMessage ?? $this->allowSquareMessage;
  179.         $this->allowLandscapeMessage $allowLandscapeMessage ?? $this->allowLandscapeMessage;
  180.         $this->allowPortraitMessage $allowPortraitMessage ?? $this->allowPortraitMessage;
  181.         $this->corruptedMessage $corruptedMessage ?? $this->corruptedMessage;
  182.         if (!\in_array('image/*', (array) $this->mimeTypestrue) && !\array_key_exists('mimeTypesMessage'$options ?? []) && null === $mimeTypesMessage) {
  183.             $this->mimeTypesMessage 'The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.';
  184.         }
  185.     }
  186. }