From: Matthias Schmidt Date: Sun, 10 Jun 2018 08:46:57 +0000 (+0200) Subject: Add FormFieldValidatorUtil X-Git-Tag: 5.2.0_Alpha_1~680^2~33 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=5ce29ee74058d770e7f30b4eb7bab077d34a028b;p=GitHub%2FWoltLab%2FWCF.git Add FormFieldValidatorUtil See #2545 --- diff --git a/wcfsetup/install/files/lib/system/form/builder/field/validation/FormFieldValidatorUtil.class.php b/wcfsetup/install/files/lib/system/form/builder/field/validation/FormFieldValidatorUtil.class.php new file mode 100644 index 0000000000..82a1d92284 --- /dev/null +++ b/wcfsetup/install/files/lib/system/form/builder/field/validation/FormFieldValidatorUtil.class.php @@ -0,0 +1,53 @@ + + * @package WoltLabSuite\Core\System\Form\Builder\Field\Validation + * @since 3.2 + */ +abstract class FormFieldValidatorUtil { + /** + * Returns a form field validator to check the form field value against + * the given regular expression. + * + * @param string $regularExpression regular expression used to validate form field value + * @param string $languageItemPrefix language item prefix used for error language item `{$languageItemPrefix}.error.format` + * @return IFormFieldValidator + * + * @throws \InvalidArgumentException if regular expression is invalid + */ + public static function getRegularExpressionValidator(string $regularExpression, string $languageItemPrefix): IFormFieldValidator { + $regex = Regex::compile($regularExpression); + if (!$regex->isValid()) { + throw new \InvalidArgumentException("Invalid regular expression '{$regularExpression}' given."); + } + + return new FormFieldValidator( + 'format', + function(IFormField $formField) use ($regex, $languageItemPrefix) { + if (!$regex->match($formField->getSaveValue())) { + $formField->addValidationError( + new FormFieldValidationError( + 'format', + $languageItemPrefix . '.error.format' + ) + ); + } + } + ); + } + + /** + * Disallow creating `FormFieldValidatorUtil` objects. + */ + private function __construct() { + // does nothing + } +}