MediaWiki
REL1_34
SpecialGoToInterwiki.php
Go to the documentation of this file.
1
<?php
36
class
SpecialGoToInterwiki
extends
UnlistedSpecialPage
{
37
public
function
__construct
( $name =
'GoToInterwiki'
) {
38
parent::__construct( $name );
39
}
40
41
public
function
execute
( $par ) {
42
// Allow forcing an interstitial for local interwikis. This is used
43
// when a redirect page is reached via a special page which resolves
44
// to a user-dependent value (as defined by
45
// RedirectSpecialPage::personallyIdentifiableTarget). See the hack
46
// for avoiding T109724 in MediaWiki::performRequest (which also
47
// explains why we can't use a query parameter instead).
48
//
49
// HHVM dies when substr_compare is used on an empty string so ensure it's not.
50
$force = ( substr_compare( $par ?:
'x'
,
'force/'
, 0, 6 ) === 0 );
51
if
( $force ) {
52
$par = substr( $par, 6 );
53
}
54
55
$this->
setHeaders
();
56
$target = Title::newFromText( $par );
57
// Disallow special pages as a precaution against
58
// possible redirect loops.
59
if
( !$target || $target->isSpecialPage() ) {
60
$this->
getOutput
()->setStatusCode( 404 );
61
$this->
getOutput
()->addWikiMsg(
'gotointerwiki-invalid'
);
62
return
;
63
}
64
65
$url = $target->getFullURL();
66
if
( !$target->isExternal() || ( $target->isLocal() && !$force ) ) {
67
// Either a normal page, or a local interwiki.
68
// Just redirect.
69
$this->
getOutput
()->redirect( $url,
'301'
);
70
}
else
{
71
$this->
getOutput
()->addWikiMsg(
72
'gotointerwiki-external'
,
73
$url,
74
$target->getFullText()
75
);
76
}
77
}
78
82
public
function
requiresWrite
() {
83
return
false
;
84
}
85
89
protected
function
getGroupName
() {
90
return
'redirects'
;
91
}
92
}
SpecialGoToInterwiki
Landing page for non-local interwiki links.
Definition
SpecialGoToInterwiki.php:36
SpecialGoToInterwiki\__construct
__construct( $name='GoToInterwiki')
Definition
SpecialGoToInterwiki.php:37
SpecialGoToInterwiki\requiresWrite
requiresWrite()
Definition
SpecialGoToInterwiki.php:82
SpecialGoToInterwiki\getGroupName
getGroupName()
Definition
SpecialGoToInterwiki.php:89
SpecialGoToInterwiki\execute
execute( $par)
Default execute method Checks user permissions.
Definition
SpecialGoToInterwiki.php:41
SpecialPage\setHeaders
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!
Definition
SpecialPage.php:537
SpecialPage\getOutput
getOutput()
Get the OutputPage being used for this instance.
Definition
SpecialPage.php:719
UnlistedSpecialPage
Shortcut to construct a special page which is unlisted by default.
Definition
UnlistedSpecialPage.php:29
includes
specials
SpecialGoToInterwiki.php
Generated on Mon Nov 25 2024 16:05:52 for MediaWiki by
1.10.0