Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F2752146
TemplateDataNormalizer.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
TemplateDataNormalizer.php
View Options
<?php
namespace
MediaWiki\Extension\TemplateData
;
use
stdClass
;
/**
* @license GPL-2.0-or-later
*/
class
TemplateDataNormalizer
{
public
const
DEPRECATED_PARAMETER_TYPES
=
[
'string/line'
=>
'line'
,
'string/wiki-page-name'
=>
'wiki-page-name'
,
'string/wiki-user-name'
=>
'wiki-user-name'
,
'string/wiki-file-name'
=>
'wiki-file-name'
,
];
private
string
$contentLanguageCode
;
public
function
__construct
(
string
$contentLanguageCode
)
{
$this
->
contentLanguageCode
=
$contentLanguageCode
;
}
/**
* @param stdClass $data Expected to be valid according to the {@see TemplateDataValidator}
*/
public
function
normalize
(
stdClass
$data
):
void
{
$data
->
description
??=
null
;
$data
->
sets
??=
[];
$data
->
maps
??=
(
object
)[];
$data
->
format
??=
null
;
$data
->
params
??=
(
object
)[];
$this
->
normaliseInterfaceText
(
$data
->
description
);
foreach
(
$data
->
sets
as
$setObj
)
{
$this
->
normaliseInterfaceText
(
$setObj
->
label
);
}
foreach
(
$data
->
params
as
$param
)
{
if
(
isset
(
$param
->
inherits
)
&&
isset
(
$data
->
params
->{
$param
->
inherits
}
)
)
{
$parent
=
$data
->
params
->{
$param
->
inherits
};
foreach
(
$parent
as
$key
=>
$value
)
{
if
(
!
isset
(
$param
->
$key
)
)
{
$param
->
$key
=
is_object
(
$parent
->
$key
)
?
clone
$parent
->
$key
:
$parent
->
$key
;
}
}
unset
(
$param
->
inherits
);
}
$this
->
normalizeParameter
(
$param
);
}
}
private
function
normalizeParameter
(
stdClass
$paramObj
):
void
{
$paramObj
->
label
??=
null
;
$paramObj
->
description
??=
null
;
$paramObj
->
required
??=
false
;
$paramObj
->
suggested
??=
false
;
$paramObj
->
deprecated
??=
false
;
$paramObj
->
aliases
??=
[];
$paramObj
->
type
??=
'unknown'
;
$paramObj
->
autovalue
??=
null
;
$paramObj
->
default
??=
null
;
$paramObj
->
suggestedvalues
??=
[];
$paramObj
->
example
??=
null
;
$this
->
normaliseInterfaceText
(
$paramObj
->
label
);
$this
->
normaliseInterfaceText
(
$paramObj
->
description
);
$this
->
normaliseInterfaceText
(
$paramObj
->
default
);
$this
->
normaliseInterfaceText
(
$paramObj
->
example
);
foreach
(
$paramObj
->
aliases
as
&
$alias
)
{
if
(
is_int
(
$alias
)
)
{
$alias
=
(
string
)
$alias
;
}
}
// Map deprecated types to newer versions
if
(
isset
(
self
::
DEPRECATED_PARAMETER_TYPES
[
$paramObj
->
type
]
)
)
{
$paramObj
->
type
=
self
::
DEPRECATED_PARAMETER_TYPES
[
$paramObj
->
type
];
}
}
/**
* @param string|stdClass &$text
*/
private
function
normaliseInterfaceText
(
&
$text
):
void
{
if
(
is_string
(
$text
)
)
{
$text
=
(
object
)[
$this
->
contentLanguageCode
=>
$text
];
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Fri, Jul 3, 19:38 (1 d, 5 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7f/84/f0a65daf34bc37b7fc1cae3631f6
Default Alt Text
TemplateDataNormalizer.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment