59 public function validate( $name, $value, array $settings, array $options ) {
60 $mustExist = !empty( $settings[self::PARAM_MUST_EXIST] );
61 $returnObject = !empty( $settings[self::PARAM_RETURN_OBJECT] );
63 $title = $this->titleFactory->newFromText( $value );
66 $this->
failure(
'badtitle', $name, $value, $settings, $options );
67 } elseif ( $mustExist && !
$title->exists() ) {
68 $this->
failure(
'missingtitle', $name, $value, $settings, $options );
71 if ( $returnObject ) {
72 return $title->getTitleValue();
74 return $title->getPrefixedText();
79 public function stringifyValue( $name, $value, array $settings, array $options ) {
81 return $this->titleFactory->newFromLinkTarget( $value )->getPrefixedText();
83 return parent::stringifyValue( $name, $value, $settings, $options );
87 public function checkSettings(
string $name, $settings, array $options, array $ret ): array {
88 $ret = parent::
checkSettings( $name, $settings, $options, $ret );
90 $ret[
'allowedKeys'] = array_merge( $ret[
'allowedKeys'], [
91 self::PARAM_MUST_EXIST, self::PARAM_RETURN_OBJECT,
94 if ( !is_bool( $settings[self::PARAM_MUST_EXIST] ??
false ) ) {
96 . gettype( $settings[self::PARAM_MUST_EXIST] );
99 if ( !is_bool( $settings[self::PARAM_RETURN_OBJECT] ??
false ) ) {
101 . gettype( $settings[self::PARAM_RETURN_OBJECT] );
104 if ( !empty( $settings[ParamValidator::PARAM_ISMULTI] ) &&
105 !empty( $settings[self::PARAM_RETURN_OBJECT] ) &&
107 ( $settings[ParamValidator::PARAM_ISMULTI_LIMIT1] ?? 100 ) > 10 ||
108 ( $settings[ParamValidator::PARAM_ISMULTI_LIMIT2] ?? 100 ) > 10
111 $ret[
'issues'][] =
'Multi-valued title-type parameters with PARAM_RETURN_OBJECT '
112 .
'should set low values (<= 10) for PARAM_ISMULTI_LIMIT1 and PARAM_ISMULTI_LIMIT2.'
113 .
' (Note that "<= 10" is arbitrary. If something hits this, we can investigate a real limit '
114 .
'once we have a real use case to look at.)';
121 public function getParamInfo( $name, array $settings, array $options ) {
122 $info = parent::getParamInfo( $name, $settings, $options );
124 $info[
'mustExist'] = !empty( $settings[self::PARAM_MUST_EXIST] );
130 public function getHelpInfo( $name, array $settings, array $options ) {
131 $info = parent::getParamInfo( $name, $settings, $options );
133 $info[ParamValidator::PARAM_TYPE] = MessageValue::new(
'paramvalidator-help-type-title' );
135 $mustExist = !empty( $settings[self::PARAM_MUST_EXIST] );
136 $info[self::PARAM_MUST_EXIST] = $mustExist
137 ? MessageValue::new(
'paramvalidator-help-type-title-must-exist' )
138 : MessageValue::new(
'paramvalidator-help-type-title-no-must-exist' );