Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4047661
ConfigHelper.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
ConfigHelper.php
View Options
<?php
namespace
MediaWiki\Skins\Vector
;
use
MediaWiki\MediaWikiServices
;
use
MediaWiki\Request\WebRequest
;
use
MediaWiki\Title\Title
;
/**
* @stable for use inside Minerva as a soft dependency temporarily until T360452 is resolved.
* @see doc/adr/0004-code-sharing-between-vector-and-minerva.md
*/
class
ConfigHelper
{
/**
* Determine whether the configuration should be disabled on the page.
*
* @param array $options read from MediaWiki configuration.
* $params = [
* 'exclude' => [
* 'mainpage' => (bool) should it be disabled on the main page?
* 'namespaces' => int[] namespaces it should be excluded on.
* 'querystring' => array of strings mapping to regex for patterns
* the query strings it should be excluded on
* e.g. [ 'action' => '*' ] disable on all actions
* 'pagetitles' => string[] of pages it should be excluded on.
* For special pages, use canonical English name.
* ]
* ]
* @param WebRequest $request
* @param Title|null $title
*
* @return bool
*/
public
static
function
shouldDisable
(
array
$options
,
WebRequest
$request
,
?
Title
$title
=
null
)
{
$canonicalTitle
=
$title
?
$title
->
getRootTitle
()
:
null
;
$exclusions
=
$options
[
'exclude'
]
??
[];
$inclusions
=
$options
[
'include'
]
??
[];
$excludeQueryString
=
$exclusions
[
'querystring'
]
??
[];
foreach
(
$excludeQueryString
as
$param
=>
$excludedParamPattern
)
{
$paramValue
=
$request
->
getRawVal
(
$param
);
if
(
$paramValue
!==
null
)
{
if
(
$excludedParamPattern
===
'*'
)
{
// Backwards compatibility for the '*' wildcard.
$excludedParamPattern
=
'.+'
;
}
return
(
bool
)
preg_match
(
"/$excludedParamPattern/"
,
$paramValue
);
}
}
if
(
$title
&&
$title
->
isMainPage
()
)
{
// only one check to make
return
$exclusions
[
'mainpage'
]
??
false
;
}
if
(
$canonicalTitle
&&
$canonicalTitle
->
isSpecialPage
()
)
{
$spFactory
=
MediaWikiServices
::
getInstance
()->
getSpecialPageFactory
();
[
$canonicalName
,
$par
]
=
$spFactory
->
resolveAlias
(
$canonicalTitle
->
getDBKey
()
);
if
(
$canonicalName
)
{
$canonicalTitle
=
Title
::
makeTitle
(
NS_SPECIAL
,
$canonicalName
);
}
}
//
// Check the inclusions based on the canonical title
// The inclusions are checked first as these trump any exclusions.
//
// Now we have the canonical title and the inclusions link we look for any matches.
foreach
(
$inclusions
as
$titleText
)
{
$includedTitle
=
Title
::
newFromText
(
$titleText
);
if
(
$canonicalTitle
->
equals
(
$includedTitle
)
)
{
return
false
;
}
}
//
// Check the excluded page titles based on the canonical title
//
// Now we have the canonical title and the exclusions link we look for any matches.
$pageTitles
=
$exclusions
[
'pagetitles'
]
??
[];
foreach
(
$pageTitles
as
$titleText
)
{
// use strtolower to make sure the config passed for special pages
// is case insensitive, so it does not generate a wrong special page title
$excludedTitle
=
Title
::
newFromText
(
$titleText
);
if
(
$canonicalTitle
&&
$canonicalTitle
->
equals
(
$excludedTitle
)
)
{
return
true
;
}
}
//
// Check the exclusions
// If nothing matches the exclusions to determine what should happen
//
$excludeNamespaces
=
$exclusions
[
'namespaces'
]
??
[];
return
$title
&&
$title
->
inNamespaces
(
$excludeNamespaces
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 15 2026, 12:42 (12 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
3b/89/36aca9fe36492d0e1c12cca9191d
Default Alt Text
ConfigHelper.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment