MediaWiki REL1_34
HTMLRestrictionsField.php
Go to the documentation of this file.
1<?php
2
14 const DEFAULT_ROWS = 5;
15
16 public function __construct( array $params ) {
17 parent::__construct( $params );
18 if ( !$this->mLabel ) {
19 $this->mLabel = $this->msg( 'restrictionsfield-label' )->parse();
20 }
21 }
22
23 public function getHelpText() {
24 $helpText = parent::getHelpText();
25 if ( $helpText === null ) {
26 $helpText = $this->msg( 'restrictionsfield-help' )->parse();
27 }
28 return $helpText;
29 }
30
35 public function loadDataFromRequest( $request ) {
36 if ( !$request->getCheck( $this->mName ) ) {
37 return $this->getDefault();
38 }
39
40 $value = rtrim( $request->getText( $this->mName ), "\r\n" );
41 $ips = $value === '' ? [] : explode( "\n", $value );
42 try {
43 return MWRestrictions::newFromArray( [ 'IPAddresses' => $ips ] );
44 } catch ( InvalidArgumentException $e ) {
45 return $value;
46 }
47 }
48
52 public function getDefault() {
53 $default = parent::getDefault();
54 if ( $default === null ) {
55 $default = MWRestrictions::newDefault();
56 }
57 return $default;
58 }
59
67 public function validate( $value, $alldata ) {
68 if ( $this->isHidden( $alldata ) ) {
69 return true;
70 }
71
72 if (
73 isset( $this->mParams['required'] ) && $this->mParams['required'] !== false
74 && $value instanceof MWRestrictions && !$value->toArray()['IPAddresses']
75 ) {
76 return $this->msg( 'htmlform-required' );
77 }
78
79 if ( is_string( $value ) ) {
80 // MWRestrictions::newFromArray failed; one of the IP ranges must be invalid
81 $status = Status::newGood();
82 foreach ( explode( "\n", $value ) as $range ) {
83 if ( !\IP::isIPAddress( $range ) ) {
84 $status->fatal( 'restrictionsfield-badip', $range );
85 }
86 }
87 if ( $status->isOK() ) {
88 $status->fatal( 'unknown-error' );
89 }
90 return $status->getMessage();
91 }
92
93 if ( isset( $this->mValidationCallback ) ) {
94 return call_user_func( $this->mValidationCallback, $value, $alldata, $this->mParent );
95 }
96
97 return true;
98 }
99
104 public function getInputHTML( $value ) {
105 if ( $value instanceof MWRestrictions ) {
106 $value = implode( "\n", $value->toArray()['IPAddresses'] );
107 }
108 return parent::getInputHTML( $value );
109 }
110
115 public function getInputOOUI( $value ) {
116 if ( $value instanceof MWRestrictions ) {
117 $value = implode( "\n", $value->toArray()['IPAddresses'] );
118 }
119 return parent::getInputOOUI( $value );
120 }
121}
isHidden( $alldata)
Test whether this field is supposed to be hidden, based on the values of the other form fields.
msg( $key,... $params)
Get a translated interface message.
Class for updating an MWRestrictions value (which is, currently, basically just an IP address list).
getHelpText()
Determine the help text to display.
A class to check request restrictions expressed as a JSON object.
static newFromArray(array $restrictions)
toArray()
Return the restrictions as an array.