Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
HTMLIntField
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 1
 validate
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace MediaWiki\HTMLForm\Field;
4
5/**
6 * A field that must contain a number
7 *
8 * @stable to extend
9 */
10class 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 */
38class_alias( HTMLIntField::class, 'HTMLIntField' );