From b21ccf47d9b6ca0059c5b4134f9716479d432927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milan=20Mat=C4=9Bj=C4=8Dek?= Date: Fri, 23 Feb 2018 09:59:07 +0100 Subject: [PATCH] Validator: method validatePattern() check FileUpload and use right name --- src/Forms/Validator.php | 3 ++- tests/Forms/Controls.TestBase.validators.phpt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Forms/Validator.php b/src/Forms/Validator.php index 758626ddc..bed08b42b 100644 --- a/src/Forms/Validator.php +++ b/src/Forms/Validator.php @@ -248,7 +248,8 @@ public static function validateUrl(IControl $control): bool */ public static function validatePattern(IControl $control, string $pattern): bool { - return (bool) Strings::match($control->getValue(), "\x01^(?:$pattern)\\z\x01u"); + $value = $control->getValue() instanceof Nette\Http\FileUpload ? $control->getValue()->getName() : $control->getValue(); + return (bool) Strings::match($value, "\x01^(?:$pattern)\\z\x01u"); } diff --git a/tests/Forms/Controls.TestBase.validators.phpt b/tests/Forms/Controls.TestBase.validators.phpt index 714721cae..0f8a431f1 100644 --- a/tests/Forms/Controls.TestBase.validators.phpt +++ b/tests/Forms/Controls.TestBase.validators.phpt @@ -7,7 +7,9 @@ declare(strict_types=1); use Nette\Forms\Controls\TextInput; +use Nette\Forms\Controls\UploadControl; use Nette\Forms\Validator; +use Nette\Http\FileUpload; use Tester\Assert; @@ -91,6 +93,21 @@ test(function () { Assert::false(Validator::validatePattern($control, '[0-9]')); Assert::true(Validator::validatePattern($control, '[0-9]+x')); Assert::false(Validator::validatePattern($control, '[0-9]+X')); + + + $control = new class extends UploadControl { + public function setValue($value) + { + $this->value = $value; + return $this; + } + }; + + $control->value = new FileUpload([ + 'name' => '123x', 'size' => 1, 'tmp_name' => '456y', 'error' => UPLOAD_ERR_OK, 'type' => '', + ]); + Assert::false(Validator::validatePattern($control, '[4-6]+y')); + Assert::true(Validator::validatePattern($control, '[1-3]+x')); });