Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F2750859
RedirectSpecialArticle.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
RedirectSpecialArticle.php
View Options
<?php
/**
* @license GPL-2.0-or-later
* @file
*/
namespace
MediaWiki\SpecialPage
;
use
MediaWiki\Title\Title
;
/**
* Helper for any RedirectSpecialPage which redirects the user
* to a particular article (as opposed to user contributions, logs, etc.).
*
* This is used by subclasses to create user-independent URLs pointing to
* pages about the current user (user page, talk page, contributions, etc.).
* This can let us link it statically and cache-safe within wikitext,
* e.g. on help pages.
*
* For security reasons these special pages are restricted to only preserve
* the following subset of GET parameters to the target page, while
* removing and/or ignoring all others.
*
* - useskin, uselang, printable: to alter the appearance of the resulting page
*
* - redirect: allows viewing one's user page or talk page even if it is a
* redirect.
*
* - rdfrom: allows redirecting to one's user page or talk page from an
* external wiki with the "Redirect from..." notice.
*
* - limit, offset: Useful for linking to history of one's own user page or
* user talk page. For example, this would be a link to "the last edit to your
* user talk page in the year 2010":
* https://en.wikipedia.org/wiki/Special:MyPage?offset=20110000000000&limit=1&action=history
*
* - feed: would allow linking to the current user's RSS feed for their user
* talk page:
* https://en.wikipedia.org/w/index.php?title=Special:MyTalk&action=history&feed=rss
*
* - preloadtitle: Can be used to provide a default section title for a
* preloaded new comment on one's own talk page.
*
* - summary : Can be used to provide a default edit summary for a preloaded
* edit to one's own user page or talk page.
*
* - preview: Allows showing/hiding preview on first edit regardless of user
* preference, useful for preloaded edits where you know preview wouldn't be
* useful.
*
* - redlink: Affects the message the user sees if their talk page/user talk
* page does not currently exist. Avoids confusion for newbies with no user
* pages over why they got a "permission error" following this link:
* https://en.wikipedia.org/w/index.php?title=Special:MyPage&redlink=1
*
* - debug: determines whether the debug parameter is passed to load.php,
* which disables reformatting and allows scripts to be debugged. Useful
* when debugging scripts that manipulate one's own user page or talk page.
*
* @par Hook extension:
* Extensions can add to the redirect parameters list by using the hook
* RedirectSpecialArticleRedirectParams
*
* This hook allows extensions which add GET parameters like FlaggedRevs to
* retain those parameters when redirecting using special pages.
*
* @par Hook extension example:
* @code
* $wgHooks['RedirectSpecialArticleRedirectParams'][] =
* 'MyExtensionHooks::onRedirectSpecialArticleRedirectParams';
* public static function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
* $redirectParams[] = 'stable';
* return true;
* }
* @endcode
*
* @stable to extend
* @ingroup SpecialPage
*/
abstract
class
RedirectSpecialArticle
extends
RedirectSpecialPage
{
/**
* @stable to call
*
* @param string $name
*/
public
function
__construct
(
$name
)
{
parent
::
__construct
(
$name
);
$redirectParams
=
[
'action'
,
'redirect'
,
'rdfrom'
,
# Options for preloaded edits
'preload'
,
'preloadparams'
,
'editintro'
,
'preloadtitle'
,
'summary'
,
'nosummary'
,
# Options for overriding user settings
'preview'
,
'minor'
,
'watchthis'
,
# Options for history/diffs
'section'
,
'oldid'
,
'diff'
,
'dir'
,
'limit'
,
'offset'
,
'feed'
,
# Misc options
'redlink'
,
# Options for action=raw; missing ctype can break JS or CSS in some browsers
'ctype'
,
'maxage'
,
'smaxage'
,
];
$this
->
getHookRunner
()->
onRedirectSpecialArticleRedirectParams
(
$redirectParams
);
$this
->
mAllowedRedirectParams
=
$redirectParams
;
}
/**
* @inheritDoc
*/
public
function
getRedirectQuery
(
$subpage
)
{
$query
=
parent
::
getRedirectQuery
(
$subpage
);
$title
=
$this
->
getRedirect
(
$subpage
);
// Avoid double redirect for action=edit&redlink=1 for existing pages
// (compare to the check in EditPage::edit)
if
(
$query
&&
isset
(
$query
[
'action'
]
)
&&
isset
(
$query
[
'redlink'
]
)
&&
(
$query
[
'action'
]
===
'edit'
||
$query
[
'action'
]
===
'submit'
)
&&
(
bool
)
$query
[
'redlink'
]
&&
$title
instanceof
Title
&&
$title
->
exists
()
)
{
return
false
;
}
return
$query
;
}
}
/** @deprecated class alias since 1.41 */
class_alias
(
RedirectSpecialArticle
::
class
,
'RedirectSpecialArticle'
);
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Fri, Jul 3, 17:16 (21 h, 20 m)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
2b/87/b8a1a9f0ef188526ee6d851e23f7
Default Alt Text
RedirectSpecialArticle.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment