Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 1 |
HTMLIntField | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 1 |
validate | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
12 |
1 | <?php |
2 | |
3 | namespace MediaWiki\HTMLForm\Field; |
4 | |
5 | /** |
6 | * A field that must contain a number |
7 | * |
8 | * @stable to extend |
9 | */ |
10 | class HTMLIntField extends HTMLFloatField { |
11 | |
12 | /** |
13 | * @inheritDoc |
14 | * @stable to override |
15 | */ |
16 | public function validate( $value, $alldata ) { |
17 | $p = parent::validate( $value, $alldata ); |
18 | |
19 | if ( $p !== true ) { |
20 | return $p; |
21 | } |
22 | |
23 | # https://www.w3.org/TR/html5/infrastructure.html#signed-integers |
24 | # with the addition that a leading '+' sign is ok. Note that leading zeros |
25 | # are fine, and will be left in the input, which is useful for things like |
26 | # phone numbers when you know that they are integers (the HTML5 type=tel |
27 | # input does not require its value to be numeric). If you want a tidier |
28 | # value to, eg, save in the DB, clean it up with intval(). |
29 | if ( !preg_match( '/^((\+|\-)?\d+)?$/', trim( $value ?? '' ) ) ) { |
30 | return $this->msg( 'htmlform-int-invalid' ); |
31 | } |
32 | |
33 | return true; |
34 | } |
35 | } |
36 | |
37 | /** @deprecated class alias since 1.42 */ |
38 | class_alias( HTMLIntField::class, 'HTMLIntField' ); |