summaryrefslogtreecommitdiff
path: root/www/wiki/includes/htmlform/fields/HTMLIntField.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/includes/htmlform/fields/HTMLIntField.php')
-rw-r--r--www/wiki/includes/htmlform/fields/HTMLIntField.php26
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;
+ }
+}