]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/htmlform/fields/HTMLFloatField.php
MediaWiki 1.30.2
[autoinstalls/mediawiki.git] / includes / htmlform / fields / HTMLFloatField.php
1 <?php
2
3 /**
4  * A field that will contain a numeric value
5  */
6 class HTMLFloatField extends HTMLTextField {
7         public function getSize() {
8                 return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 20;
9         }
10
11         public function validate( $value, $alldata ) {
12                 $p = parent::validate( $value, $alldata );
13
14                 if ( $p !== true ) {
15                         return $p;
16                 }
17
18                 $value = trim( $value );
19
20                 # https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
21                 # with the addition that a leading '+' sign is ok.
22                 if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
23                         return $this->msg( 'htmlform-float-invalid' );
24                 }
25
26                 # The "int" part of these message names is rather confusing.
27                 # They make equal sense for all numbers.
28                 if ( isset( $this->mParams['min'] ) ) {
29                         $min = $this->mParams['min'];
30
31                         if ( $min > $value ) {
32                                 return $this->msg( 'htmlform-int-toolow', $min );
33                         }
34                 }
35
36                 if ( isset( $this->mParams['max'] ) ) {
37                         $max = $this->mParams['max'];
38
39                         if ( $max < $value ) {
40                                 return $this->msg( 'htmlform-int-toohigh', $max );
41                         }
42                 }
43
44                 return true;
45         }
46 }