Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1427687
PresenceBooleanDef.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
PresenceBooleanDef.php
View Options
<?php
namespace
Wikimedia\ParamValidator\TypeDef
;
use
Wikimedia\Message\MessageValue
;
use
Wikimedia\ParamValidator\ParamValidator
;
use
Wikimedia\ParamValidator\TypeDef
;
/**
* Type definition for checkbox-like boolean types
*
* This boolean is considered true if the parameter is present in the request,
* regardless of value. The only way for it to be false is for the parameter to
* be omitted entirely.
*
* The result from validate() is a PHP boolean.
*
* @since 1.34
* @unstable
*/
class
PresenceBooleanDef
extends
TypeDef
{
public
function
getValue
(
$name
,
array
$settings
,
array
$options
)
{
return
$this
->
callbacks
->
hasParam
(
$name
,
$options
)
?
true
:
null
;
}
public
function
validate
(
$name
,
$value
,
array
$settings
,
array
$options
)
{
return
(
bool
)
$value
;
}
public
function
normalizeSettings
(
array
$settings
)
{
// Cannot be multi-valued
$settings
[
ParamValidator
::
PARAM_ISMULTI
]
=
false
;
// Default the default to false so ParamValidator::getValue() returns false (T244440)
$settings
+=
[
ParamValidator
::
PARAM_DEFAULT
=>
false
];
return
parent
::
normalizeSettings
(
$settings
);
}
public
function
checkSettings
(
string
$name
,
$settings
,
array
$options
,
array
$ret
):
array
{
$ret
=
parent
::
checkSettings
(
$name
,
$settings
,
$options
,
$ret
);
if
(
!
empty
(
$settings
[
ParamValidator
::
PARAM_ISMULTI
]
)
&&
!
isset
(
$ret
[
'issues'
][
ParamValidator
::
PARAM_ISMULTI
]
)
)
{
$ret
[
'issues'
][
ParamValidator
::
PARAM_ISMULTI
]
=
'PARAM_ISMULTI cannot be used for presence-boolean-type parameters'
;
}
if
(
(
$settings
[
ParamValidator
::
PARAM_DEFAULT
]
??
false
)
!==
false
&&
!
isset
(
$ret
[
'issues'
][
ParamValidator
::
PARAM_DEFAULT
]
)
)
{
$ret
[
'issues'
][
ParamValidator
::
PARAM_DEFAULT
]
=
'Default for presence-boolean-type parameters must be false or null'
;
}
return
$ret
;
}
public
function
getParamInfo
(
$name
,
array
$settings
,
array
$options
)
{
$info
=
parent
::
getParamInfo
(
$name
,
$settings
,
$options
);
// No need to report the default of "false"
$info
[
'default'
]
=
null
;
return
$info
;
}
public
function
getHelpInfo
(
$name
,
array
$settings
,
array
$options
)
{
$info
=
parent
::
getHelpInfo
(
$name
,
$settings
,
$options
);
$info
[
ParamValidator
::
PARAM_TYPE
]
=
MessageValue
::
new
(
'paramvalidator-help-type-presenceboolean'
)->
params
(
1
);
// No need to report the default of "false"
$info
[
ParamValidator
::
PARAM_DEFAULT
]
=
null
;
return
$info
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 14:58 (1 d, 3 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
66/8a/0a6e7e277bcd2ef8c17d80fac590
Default Alt Text
PresenceBooleanDef.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment