37 parent::__construct( $params );
42 if ( $value ===
null ) {
47 if ( $value ===
'' ) {
48 return parent::validate( $value, $alldata );
56 return $this->
msg(
'htmlform-user-not-valid', $value );
59 ( $this->mParams[
'exists'] && $user->getId() === 0 ) &&
61 !( $this->mParams[
'ipallowed'] && IPUtils::isValid( $value ) ) &&
63 !( $this->mParams[
'iprange'] && ( $rangeError = $this->isValidIPRange( $value ) ) ===
true )
65 if ( is_string( $rangeError ) ) {
68 return $this->
msg(
'htmlform-user-not-exists', $user->getName() );
71 return parent::validate( $value, $alldata );
75 $cidrIPRanges = $this->mParams[
'iprangelimits'];
77 if ( !IPUtils::isValidRange( $value ) ) {
81 list( $ip, $range ) = explode(
'/', $value, 2 );
84 ( IPUtils::isIPv4( $ip ) && $cidrIPRanges[
'IPv4'] == 32 ) ||
85 ( IPUtils::isIPv6( $ip ) && $cidrIPRanges[
'IPv6'] == 128 )
88 return $this->
msg(
'ip_range_toolow' )->parse();
92 ( IPUtils::isIPv4( $ip ) && $range > 32 ) ||
93 ( IPUtils::isIPv6( $ip ) && $range > 128 )
96 return $this->
msg(
'ip_range_invalid' )->parse();
99 if ( IPUtils::isIPv4( $ip ) && $range < $cidrIPRanges[
'IPv4'] ) {
100 return $this->
msg(
'ip_range_exceeded', $cidrIPRanges[
'IPv4'] )->parse();
103 if ( IPUtils::isIPv6( $ip ) && $range < $cidrIPRanges[
'IPv6'] ) {
104 return $this->
msg(
'ip_range_exceeded', $cidrIPRanges[
'IPv6'] )->parse();
119 return [
'mediawiki.widgets.UserInputWidget' ];
124 $this->mParent->getOutput()->addModules(
'mediawiki.userSuggest' );
125 $this->mClass .=
' mw-autocomplete-user';
128 return parent::getInputHTML( $value );
wfArrayPlus2d(array $baseArray, array $newValues)
Merges two (possibly) 2 dimensional arrays into the target array ($baseArray).
Implements a text input field for user names.
shouldInfuseOOUI()
Whether the field should be automatically infused.
getOOUIModules()
Get the list of extra ResourceLoader modules which must be loaded client-side before it's possible to...
validate( $value, $alldata)
Override this function to add specific validation checks on the field input.
static newFromName( $name, $validate='valid')