52 public function validate( $name, $value, array $settings, array $options ) {
55 if ( in_array( $value, $values,
true ) ) {
57 if ( empty( $options[
'is-default'] ) &&
58 isset( $settings[self::PARAM_DEPRECATED_VALUES][$value] )
62 $message = DataMessageValue::new(
71 $this->
failure( $message, $name, $value, $settings, $options,
false );
77 $isMulti = isset( $options[
'values-list'] );
79 $this->
failureMessage(
'badvalue', [], $isMulti ?
'enummulti' :
'enumnotmulti' )
80 ->textListParams( array_map(
static function ( $v ) {
83 ->numParams( count( $values ) ),
84 $name, $value, $settings, $options
89 public function checkSettings(
string $name, $settings, array $options, array $ret ): array {
90 $ret = parent::
checkSettings( $name, $settings, $options, $ret );
95 if ( !is_array( $dv ) ) {
99 $values = array_map(
function ( $v ) use ( $name, $settings, $options ) {
102 foreach ( $dv as $k => $v ) {
104 if ( !in_array( $k, $values,
true ) ) {
105 $ret[
'issues'][] =
"PARAM_DEPRECATED_VALUES contains \"$k\", which is not "
106 .
'one of the enumerated values';
107 } elseif ( $v instanceof MessageValue ) {
108 $ret[
'messages'][] = $v;
109 } elseif ( $v !==
null && $v !==
true ) {
110 $type = $v ===
false ?
'false' : ( is_object( $v ) ? get_class( $v ) : gettype( $v ) );
111 $ret[
'issues'][] =
'Values in PARAM_DEPRECATED_VALUES must be null, true, or MessageValue, '
112 .
"but value for \"$k\" is $type";
126 public function stringifyValue( $name, $value, array $settings, array $options ) {
127 if ( !is_array( $value ) ) {
128 return parent::stringifyValue( $name, $value, $settings, $options );
135 public function getParamInfo( $name, array $settings, array $options ) {
136 $info = parent::getParamInfo( $name, $settings, $options );
138 $info[
'type'] = $this->sortEnumValues(
145 if ( !empty( $settings[self::PARAM_DEPRECATED_VALUES] ) ) {
146 $deprecatedValues = array_intersect(
147 array_keys( $settings[self::PARAM_DEPRECATED_VALUES] ),
150 if ( $deprecatedValues ) {
151 $deprecatedValues = $this->sortEnumValues( $name, $deprecatedValues, $settings, $options );
152 $info[
'deprecatedvalues'] = array_values( $deprecatedValues );
160 public function getHelpInfo( $name, array $settings, array $options ) {
161 $info = parent::getHelpInfo( $name, $settings, $options );
165 $values = $this->getEnumValuesForHelp( $name, $settings, $options );
166 $count = count( $values );
168 $i = array_search(
'', $values,
true );
169 if ( $i ===
false ) {
170 $valuesParam =
new ListParam( ListType::COMMA, $values );
172 unset( $values[$i] );
173 $valuesParam = MessageValue::new(
'paramvalidator-help-type-enum-can-be-empty' )
174 ->commaListParams( $values )
175 ->numParams( count( $values ) );
179 ->params( $isMulti ? 2 : 1 )
180 ->params( $valuesParam )
181 ->numParams( $count );
199 string $name, array $values, array $settings, array $options
203 foreach ( $values as $k => $value ) {
205 if ( isset( $settings[self::PARAM_DEPRECATED_VALUES][$value] ) ) {
210 array_multisort( $flags, $values, SORT_NATURAL );
224 $values = $this->getEnumValues( $name, $settings, $options );
225 $values = $this->sortEnumValues( $name, $values, $settings, $options );