diff options
Diffstat (limited to 'www/wiki/includes/htmlform/fields/HTMLIntField.php')
-rw-r--r-- | www/wiki/includes/htmlform/fields/HTMLIntField.php | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/www/wiki/includes/htmlform/fields/HTMLIntField.php b/www/wiki/includes/htmlform/fields/HTMLIntField.php new file mode 100644 index 00000000..02af7de9 --- /dev/null +++ b/www/wiki/includes/htmlform/fields/HTMLIntField.php @@ -0,0 +1,26 @@ +<?php + +/** + * A field that must contain a number + */ +class HTMLIntField extends HTMLFloatField { + public function validate( $value, $alldata ) { + $p = parent::validate( $value, $alldata ); + + if ( $p !== true ) { + return $p; + } + + # https://www.w3.org/TR/html5/infrastructure.html#signed-integers + # with the addition that a leading '+' sign is ok. Note that leading zeros + # are fine, and will be left in the input, which is useful for things like + # phone numbers when you know that they are integers (the HTML5 type=tel + # input does not require its value to be numeric). If you want a tidier + # value to, eg, save in the DB, clean it up with intval(). + if ( !preg_match( '/^((\+|\-)?\d+)?$/', trim( $value ) ) ) { + return $this->msg( 'htmlform-int-invalid' ); + } + + return true; + } +} |