From 66cfeae703b5ec0fc9225778ec296dbe6c05bc43 Mon Sep 17 00:00:00 2001 From: Sergei Predvoditelev Date: Thu, 28 Mar 2024 14:49:32 +0300 Subject: [PATCH] Add `Image` validation rule (#670) Co-authored-by: Alexey Rogachev Co-authored-by: Alexander Makarov --- .github/workflows/build.yml | 2 +- CHANGELOG.md | 1 + composer-require-checker.json | 1 + composer.json | 6 +- docs/guide/en/built-in-rules.md | 4 + src/Rule/Image/CompositeImageInfoProvider.php | 30 +++ src/Rule/Image/Image.php | 243 ++++++++++++++++++ src/Rule/Image/ImageHandler.php | 141 ++++++++++ src/Rule/Image/ImageInfo.php | 24 ++ src/Rule/Image/ImageInfoProviderInterface.php | 10 + src/Rule/Image/NativeImageInfoProvider.php | 24 ++ tests/Rule/Base/RuleTestCase.php | 2 +- tests/Rule/CompareTest.php | 2 +- tests/Rule/Image/16x18.jpg | Bin 0 -> 921 bytes tests/Rule/Image/16x18.png | Bin 0 -> 611 bytes tests/Rule/Image/797x808.HEIC | Bin 0 -> 108274 bytes .../Image/CompositeImageInfoProviderTest.php | 73 ++++++ tests/Rule/Image/ImageTest.php | 182 +++++++++++++ tests/Rule/Image/StubImageInfoProvider.php | 21 ++ 19 files changed, 761 insertions(+), 5 deletions(-) create mode 100644 src/Rule/Image/CompositeImageInfoProvider.php create mode 100644 src/Rule/Image/Image.php create mode 100644 src/Rule/Image/ImageHandler.php create mode 100644 src/Rule/Image/ImageInfo.php create mode 100644 src/Rule/Image/ImageInfoProviderInterface.php create mode 100644 src/Rule/Image/NativeImageInfoProvider.php create mode 100644 tests/Rule/Image/16x18.jpg create mode 100644 tests/Rule/Image/16x18.png create mode 100644 tests/Rule/Image/797x808.HEIC create mode 100644 tests/Rule/Image/CompositeImageInfoProviderTest.php create mode 100644 tests/Rule/Image/ImageTest.php create mode 100644 tests/Rule/Image/StubImageInfoProvider.php diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 73624d14d..1412b732e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: phpunit: uses: yiisoft/actions/.github/workflows/phpunit.yml@master with: - extensions: intl + extensions: intl,fileinfo coverage: xdebug os: >- ['ubuntu-latest', 'windows-latest'] diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae77f8c9..9275ff293 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - New #665: Add methods `addErrorWithFormatOnly()` and `addErrorWithoutPostProcessing()` to `Result` object (@vjik) - Enh #668: Clarify psalm types in `Result` (@vjik) +- New #670: Add `Image` validation rule (@vjik, @arogachev) ## 1.2.0 February 21, 2024 diff --git a/composer-require-checker.json b/composer-require-checker.json index cfd850c67..50fda2ddc 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -15,6 +15,7 @@ "Reflection", "SPL", "standard", + "fileinfo", "intl" ], "scan-files": [] diff --git a/composer.json b/composer.json index 3f5dfbae2..af44699b9 100644 --- a/composer.json +++ b/composer.json @@ -30,11 +30,12 @@ "php": "^8.0", "ext-mbstring": "*", "psr/container": "^1.0|^2.0", + "psr/http-message": "^1.0|^2.0", "yiisoft/arrays": "^2.1|^3.0", - "yiisoft/translator": "^2.1|^3.0", "yiisoft/friendly-exception": "^1.0", "yiisoft/network-utilities": "^1.0", - "yiisoft/strings": "^2.1" + "yiisoft/strings": "^2.1", + "yiisoft/translator": "^2.1|^3.0" }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.0", @@ -52,6 +53,7 @@ }, "suggest": { "ext-intl": "Allows using IDN validation for emails", + "ext-fileinfo": "To use image rule", "yiisoft/di": "To create rule handlers via Yii DI" }, "autoload": { diff --git a/docs/guide/en/built-in-rules.md b/docs/guide/en/built-in-rules.md index c67944b4c..59779e554 100644 --- a/docs/guide/en/built-in-rules.md +++ b/docs/guide/en/built-in-rules.md @@ -45,6 +45,10 @@ Here is a list of all available built-in rules, divided by category. - [Count](../../../src/Rule/Count.php) - [OneOf](../../../src/Rule/OneOf.php) +### File rules + +- [Image](../../../src/Rule/Image/Image.php) + ### General purpose rules - [Callback](../../../src/Rule/Callback.php) diff --git a/src/Rule/Image/CompositeImageInfoProvider.php b/src/Rule/Image/CompositeImageInfoProvider.php new file mode 100644 index 000000000..ae6479a4c --- /dev/null +++ b/src/Rule/Image/CompositeImageInfoProvider.php @@ -0,0 +1,30 @@ +providers = $providers; + } + + public function get(string $path): ?ImageInfo + { + foreach ($this->providers as $provider) { + $info = $provider->get($path); + if ($info !== null) { + return $info; + } + } + return null; + } +} diff --git a/src/Rule/Image/Image.php b/src/Rule/Image/Image.php new file mode 100644 index 000000000..bf191845a --- /dev/null +++ b/src/Rule/Image/Image.php @@ -0,0 +1,243 @@ +width; + } + + public function getHeight(): ?int + { + return $this->height; + } + + public function getMinWidth(): ?int + { + return $this->minWidth; + } + + public function getMinHeight(): ?int + { + return $this->minHeight; + } + + public function getMaxWidth(): ?int + { + return $this->maxWidth; + } + + public function getMaxHeight(): ?int + { + return $this->maxHeight; + } + + public function getNotImageMessage(): string + { + return $this->notImageMessage; + } + + public function getNotExactWidthMessage(): string + { + return $this->notExactWidthMessage; + } + + public function getNotExactHeightMessage(): string + { + return $this->notExactHeightMessage; + } + + public function getTooSmallWidthMessage(): string + { + return $this->tooSmallWidthMessage; + } + + public function getTooSmallHeightMessage(): string + { + return $this->tooSmallHeightMessage; + } + + public function getTooLargeWidthMessage(): string + { + return $this->tooLargeWidthMessage; + } + + public function getTooLargeHeightMessage(): string + { + return $this->tooLargeHeightMessage; + } + + public function getName(): string + { + return 'image'; + } + + public function getHandler(): string + { + return ImageHandler::class; + } + + public function getOptions(): array + { + return [ + 'notExactWidthMessage' => [ + 'template' => $this->notExactWidthMessage, + 'parameters' => [ + 'exactly' => $this->width, + ], + ], + 'notExactHeightMessage' => [ + 'template' => $this->notExactHeightMessage, + 'parameters' => [ + 'exactly' => $this->height, + ], + ], + 'tooSmallWidthMessage' => [ + 'template' => $this->tooSmallWidthMessage, + 'parameters' => [ + 'limit' => $this->minWidth, + ], + ], + 'tooSmallHeightMessage' => [ + 'template' => $this->tooSmallHeightMessage, + 'parameters' => [ + 'limit' => $this->minHeight, + ], + ], + 'tooLargeWidthMessage' => [ + 'template' => $this->tooLargeWidthMessage, + 'parameters' => [ + 'limit' => $this->maxWidth, + ], + ], + 'tooLargeHeightMessage' => [ + 'template' => $this->tooLargeHeightMessage, + 'parameters' => [ + 'limit' => $this->maxHeight, + ], + ], + 'notImageMessage' => [ + 'template' => $this->notImageMessage, + 'parameters' => [], + ], + 'skipOnEmpty' => $this->getSkipOnEmptyOption(), + 'skipOnError' => $this->skipOnError, + ]; + } +} diff --git a/src/Rule/Image/ImageHandler.php b/src/Rule/Image/ImageHandler.php new file mode 100644 index 000000000..759d6c98a --- /dev/null +++ b/src/Rule/Image/ImageHandler.php @@ -0,0 +1,141 @@ +imageInfoProvider = $imageInfoProvider ?? new NativeImageInfoProvider(); + } + + public function validate(mixed $value, object $rule, ValidationContext $context): Result + { + if (!$rule instanceof Image) { + throw new UnexpectedRuleException(Image::class, $rule); + } + + $result = new Result(); + + $imageFilePath = $this->getImageFilePath($value); + if (empty($imageFilePath)) { + $result->addError($rule->getNotImageMessage(), ['attribute' => $context->getTranslatedAttribute()]); + return $result; + } + + if (!$this->shouldValidateDimensions($rule)) { + return $result; + } + + $info = $this->imageInfoProvider->get($imageFilePath); + if (empty($info)) { + $result->addError($rule->getNotImageMessage(), ['attribute' => $context->getTranslatedAttribute()]); + return $result; + } + + $width = $info->getWidth(); + $height = $info->getHeight(); + + if ($rule->getWidth() !== null && $width !== $rule->getWidth()) { + $result->addError($rule->getNotExactWidthMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'exactly' => $rule->getWidth(), + ]); + } + if ($rule->getHeight() !== null && $height !== $rule->getHeight()) { + $result->addError($rule->getNotExactHeightMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'exactly' => $rule->getHeight(), + ]); + } + if ($rule->getMinWidth() !== null && $width < $rule->getMinWidth()) { + $result->addError($rule->getTooSmallWidthMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'limit' => $rule->getMinWidth(), + ]); + } + if ($rule->getMinHeight() !== null && $height < $rule->getMinHeight()) { + $result->addError($rule->getTooSmallHeightMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'limit' => $rule->getMinHeight(), + ]); + } + if ($rule->getMaxWidth() !== null && $width > $rule->getMaxWidth()) { + $result->addError($rule->getTooLargeWidthMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'limit' => $rule->getMaxWidth(), + ]); + } + if ($rule->getMaxHeight() !== null && $height > $rule->getMaxHeight()) { + $result->addError($rule->getTooLargeHeightMessage(), [ + 'attribute' => $context->getTranslatedAttribute(), + 'limit' => $rule->getMaxHeight(), + ]); + } + + return $result; + } + + private function shouldValidateDimensions(Image $rule): bool + { + return $rule->getWidth() !== null + || $rule->getHeight() !== null + || $rule->getMinHeight() !== null + || $rule->getMinWidth() !== null + || $rule->getMaxHeight() !== null + || $rule->getMaxWidth() !== null; + } + + private function getImageFilePath(mixed $value): ?string + { + $filePath = $this->getFilePath($value); + if (empty($filePath)) { + return null; + } + + if (!$this->isImageFile($filePath)) { + return null; + } + + return $filePath; + } + + /** + * From PHP documentation: do not use `getimagesize()` to check that a given file is a valid image. Use + * a purpose-built solution such as the `Fileinfo` extension instead. + * + * @link https://www.php.net/manual/function.getimagesize.php + * @link https://www.php.net/manual/function.mime-content-type.php + */ + private function isImageFile(string $filePath): bool + { + $mimeType = @mime_content_type($filePath); + return $mimeType !== false && str_starts_with($mimeType, 'image/'); + } + + private function getFilePath(mixed $value): ?string + { + if ($value instanceof UploadedFileInterface) { + $value = $value->getError() === UPLOAD_ERR_OK ? $value->getStream()->getMetadata('uri') : null; + } + return is_string($value) ? $value : null; + } +} diff --git a/src/Rule/Image/ImageInfo.php b/src/Rule/Image/ImageInfo.php new file mode 100644 index 000000000..36a97b899 --- /dev/null +++ b/src/Rule/Image/ImageInfo.php @@ -0,0 +1,24 @@ +width; + } + + public function getHeight(): int + { + return $this->height; + } +} diff --git a/src/Rule/Image/ImageInfoProviderInterface.php b/src/Rule/Image/ImageInfoProviderInterface.php new file mode 100644 index 000000000..c720d3ade --- /dev/null +++ b/src/Rule/Image/ImageInfoProviderInterface.php @@ -0,0 +1,10 @@ + PHP native function `getimagesize()` don't support HEIF / HEIC formats. + */ +final class NativeImageInfoProvider implements ImageInfoProviderInterface +{ + public function get(string $path): ?ImageInfo + { + /** + * @psalm-var (array{0:int,1:int}&array)|false $data Need for PHP 8.0 only + */ + $data = @getimagesize($path); + if ($data === false) { + return null; + } + + return new ImageInfo($data[0], $data[1]); + } +} diff --git a/tests/Rule/Base/RuleTestCase.php b/tests/Rule/Base/RuleTestCase.php index 178efe6c1..da795364a 100644 --- a/tests/Rule/Base/RuleTestCase.php +++ b/tests/Rule/Base/RuleTestCase.php @@ -15,7 +15,7 @@ abstract public function dataValidationPassed(): array; /** * @dataProvider dataValidationPassed */ - public function testValidationPassed(mixed $data, ?array $rules = null): void + public function testValidationPassed(mixed $data, array|RuleInterface|null $rules = null): void { $result = (new Validator())->validate($data, $rules); diff --git a/tests/Rule/CompareTest.php b/tests/Rule/CompareTest.php index d20b304ed..24bc942ed 100644 --- a/tests/Rule/CompareTest.php +++ b/tests/Rule/CompareTest.php @@ -543,7 +543,7 @@ public function hasAttribute(string $attribute): bool * @dataProvider dataValidationPassed * @dataProvider dataValidationPassedWithDifferentTypes */ - public function testValidationPassed(mixed $data, ?array $rules = null): void + public function testValidationPassed(mixed $data, array|RuleInterface|null $rules = null): void { parent::testValidationPassed($data, $rules); } diff --git a/tests/Rule/Image/16x18.jpg b/tests/Rule/Image/16x18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ba693aeb90f852423a26ffdacbb094536818f4a GIT binary patch literal 921 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

+X_ZlSv5d~B|d9+pmJxW0+r!Yk*X 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

ML2vde2vo_(4%P+tjAr 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%0A)u-vKXig- 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

ZZtEeBr9`l^K48V&FXl_ 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 OD0}UsuEqs8$9aGmIPMSt literal 0 HcmV?d00001 diff --git a/tests/Rule/Image/CompositeImageInfoProviderTest.php b/tests/Rule/Image/CompositeImageInfoProviderTest.php new file mode 100644 index 000000000..72523f408 --- /dev/null +++ b/tests/Rule/Image/CompositeImageInfoProviderTest.php @@ -0,0 +1,73 @@ +get(__DIR__ . '/16x18.jpg'); + + $this->assertNull($result); + } + + public function testWithOneProvider(): void + { + $provider = new CompositeImageInfoProvider(new NativeImageInfoProvider()); + + $result = $provider->get(__DIR__ . '/16x18.jpg'); + + $this->assertInstanceOf(ImageInfo::class, $result); + $this->assertSame(16, $result->getWidth()); + $this->assertSame(18, $result->getHeight()); + } + + public function testWithTwoProviders(): void + { + $provider = new CompositeImageInfoProvider( + new StubImageInfoProvider(), + new NativeImageInfoProvider(), + ); + + $result = $provider->get(__DIR__ . '/16x18.jpg'); + + $this->assertInstanceOf(ImageInfo::class, $result); + $this->assertSame(16, $result->getWidth()); + $this->assertSame(18, $result->getHeight()); + } + + public function testWithTwoProviders2(): void + { + $provider = new CompositeImageInfoProvider( + new StubImageInfoProvider(new ImageInfo(10, 15)), + new NativeImageInfoProvider(), + ); + + $result = $provider->get(__DIR__ . '/16x18.jpg'); + + $this->assertInstanceOf(ImageInfo::class, $result); + $this->assertSame(10, $result->getWidth()); + $this->assertSame(15, $result->getHeight()); + } + + public function testWithTwoProviders3(): void + { + $provider = new CompositeImageInfoProvider( + new StubImageInfoProvider(), + new StubImageInfoProvider(), + ); + + $result = $provider->get(__DIR__ . '/16x18.jpg'); + + $this->assertNull($result); + } +} diff --git a/tests/Rule/Image/ImageTest.php b/tests/Rule/Image/ImageTest.php new file mode 100644 index 000000000..44a954b2b --- /dev/null +++ b/tests/Rule/Image/ImageTest.php @@ -0,0 +1,182 @@ +assertSame('image', $rule->getName()); + } + + public function dataValidationPassed(): array + { + return [ + 'png' => [__DIR__ . '/16x18.png', new Image()], + 'jpg' => [__DIR__ . '/16x18.jpg', new Image()], + 'heic' => [__DIR__ . '/797x808.HEIC', new Image()], + 'uploaded-file' => [new UploadedFile(__DIR__ . '/16x18.jpg', 0, UPLOAD_ERR_OK), new Image()], + 'exactly' => [__DIR__ . '/16x18.jpg', new Image(width: 16, height: 18)], + 'min-width' => [__DIR__ . '/16x18.jpg', new Image(minWidth: 12)], + 'min-width-boundary' => [__DIR__ . '/16x18.jpg', new Image(minWidth: 16)], + 'min-height' => [__DIR__ . '/16x18.jpg', new Image(minHeight: 17)], + 'min-height-boundary' => [__DIR__ . '/16x18.jpg', new Image(minHeight: 18)], + 'max-width' => [__DIR__ . '/16x18.jpg', new Image(maxWidth: 17)], + 'max-width-boundary' => [__DIR__ . '/16x18.jpg', new Image(maxWidth: 16)], + 'max-height' => [__DIR__ . '/16x18.jpg', new Image(maxHeight: 19)], + 'max-height-boundary' => [__DIR__ . '/16x18.jpg', new Image(maxHeight: 18)], + ]; + } + + public function dataValidationFailed(): array + { + $notImageResult = ['' => ['The value must be an image.']]; + + return [ + 'heic-with-width' => [__DIR__ . '/797x808.HEIC', new Image(width: 10), $notImageResult], + 'heic-with-height' => [__DIR__ . '/797x808.HEIC', new Image(height: 10), $notImageResult], + 'heic-with-min-width' => [__DIR__ . '/797x808.HEIC', new Image(minWidth: 10), $notImageResult], + 'heic-with-max-height' => [__DIR__ . '/797x808.HEIC', new Image(minHeight: 10), $notImageResult], + 'heic-with-max-width' => [__DIR__ . '/797x808.HEIC', new Image(maxWidth: 10), $notImageResult], + 'heic-with-min-height' => [__DIR__ . '/797x808.HEIC', new Image(maxHeight: 10), $notImageResult], + 'heic-with-size-and-custom-message' => [ + ['a' => __DIR__ . '/797x808.HEIC'], + ['a' => new Image(minWidth: 10, notImageMessage: 'The value of "{attribute}" must be an image.')], + ['a' => ['The value of "a" must be an image.']], + ], + 'empty-string' => ['', new Image(), $notImageResult], + 'not-file-path' => ['test', new Image(), $notImageResult], + 'not-image' => [__DIR__ . '/ImageTest.php', new Image(), $notImageResult], + 'not-image-with-custom-message' => [ + ['a' => __DIR__ . '/ImageTest.php'], + ['a' => new Image(notImageMessage: 'The value of "{attribute}" must be an image.')], + ['a' => ['The value of "a" must be an image.']], + ], + 'not-uploaded-file' => [ + new UploadedFile(__DIR__ . '/16x18.jpg', 0, UPLOAD_ERR_NO_FILE), + new Image(), + $notImageResult, + ], + 'not-exactly' => [ + __DIR__ . '/16x18.jpg', + new Image(width: 24, height: 32), + [ + '' => [ + 'The width of image "" must be exactly 24 pixels.', + 'The height of image "" must be exactly 32 pixels.', + ], + ], + ], + 'too-small-width' => [ + __DIR__ . '/16x18.jpg', + new Image(minWidth: 17), + ['' => ['The width of image "" cannot be smaller than 17 pixels.']], + ], + 'too-small-height' => [ + __DIR__ . '/16x18.jpg', + new Image(minHeight: 19), + ['' => ['The height of image "" cannot be smaller than 19 pixels.']], + ], + 'too-large-width' => [ + __DIR__ . '/16x18.jpg', + new Image(maxWidth: 15), + ['' => ['The width of image "" cannot be larger than 15 pixels.']], + ], + 'too-large-height' => [ + __DIR__ . '/16x18.jpg', + new Image(maxHeight: 17), + ['' => ['The height of image "" cannot be larger than 17 pixels.']], + ], + ]; + } + + protected function getDifferentRuleInHandlerItems(): array + { + return [Image::class, ImageHandler::class]; + } + + public function dataOptions(): array + { + return [ + [ + new Image(), + [ + 'notExactWidthMessage' => [ + 'template' => 'The width of image "{attribute}" must be exactly {exactly, number} {exactly, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'exactly' => null, + ], + ], + 'notExactHeightMessage' => [ + 'template' => 'The height of image "{attribute}" must be exactly {exactly, number} {exactly, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'exactly' => null, + ], + ], + 'tooSmallWidthMessage' => [ + 'template' => 'The width of image "{attribute}" cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'limit' => null, + ], + ], + 'tooSmallHeightMessage' => [ + 'template' => 'The height of image "{attribute}" cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'limit' => null, + ], + ], + 'tooLargeWidthMessage' => [ + 'template' => 'The width of image "{attribute}" cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'limit' => null, + ], + ], + 'tooLargeHeightMessage' => [ + 'template' => 'The height of image "{attribute}" cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.', + 'parameters' => [ + 'limit' => null, + ], + ], + 'notImageMessage' => [ + 'template' => 'The value must be an image.', + 'parameters' => [], + ], + 'skipOnEmpty' => false, + 'skipOnError' => false, + ], + ], + ]; + } + + public function testSkipOnError(): void + { + $this->testSkipOnErrorInternal(new Image(), new Image(skipOnError: true)); + } + + public function testWhen(): void + { + $this->testWhenInternal( + new Image(), + new Image( + when: static fn(mixed $value): bool => $value !== null + ) + ); + } +} diff --git a/tests/Rule/Image/StubImageInfoProvider.php b/tests/Rule/Image/StubImageInfoProvider.php new file mode 100644 index 000000000..e6493d37d --- /dev/null +++ b/tests/Rule/Image/StubImageInfoProvider.php @@ -0,0 +1,21 @@ +info; + } +}