59 lines
1.6 KiB
PHP
59 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
# Alert the user that this is not a valid entry point to MediaWiki if they try to access the special pages file directly.
|
||
|
if (!defined('MEDIAWIKI')) {
|
||
|
echo <<<EOT
|
||
|
To install my extension, put the following line in LocalSettings.php:
|
||
|
require_once( "\$IP/extensions/UserloginHTTPS/UserloginHTTPS.php" );
|
||
|
EOT;
|
||
|
exit( 1 );
|
||
|
}
|
||
|
|
||
|
$wgExtensionCredits['specialpage'][] = array(
|
||
|
'name' => 'UserloginHTTPS',
|
||
|
'author' => 'Magnus Kristiansen',
|
||
|
'url' => 'http://www.mediawiki.org/wiki/Extension:UserloginHTTPS',
|
||
|
'description' => 'Redirect Special:Userlogin to HTTPS if accessed via HTTP',
|
||
|
'descriptionmsg' => 'userloginhttps-desc',
|
||
|
'version' => '1.0.0',
|
||
|
);
|
||
|
|
||
|
$wgHooks['SpecialPage_initList'][] = 'ulh_overrideUserlogin';
|
||
|
|
||
|
function ulh_overrideUserlogin(&$list) {
|
||
|
global $ulh_originalData;
|
||
|
|
||
|
$ulh_originalData = $list['Userlogin'];
|
||
|
$list['Userlogin'] = array('SpecialPage', 'Userlogin', '', true, 'ulh_SpecialUserlogin', __FILE__);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function ulh_SpecialUserlogin($par) {
|
||
|
global $wgRequest, $wgOut, $ulh_originalData;
|
||
|
|
||
|
$url = $wgRequest->getFullRequestURL();
|
||
|
if (substr($url, 0, 5) == 'http:') {
|
||
|
$new_url = 'https:' . substr($url, 5);
|
||
|
$wgOut->redirect($new_url);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$rec = $ulh_originalData;
|
||
|
if ( is_string( $rec ) ) {
|
||
|
$className = $rec;
|
||
|
$sp = new $className;
|
||
|
} elseif ( is_array( $rec ) ) {
|
||
|
$className = array_shift( $rec );
|
||
|
$sp = wfCreateObject( $className, $rec );
|
||
|
} else {
|
||
|
$wgOut->showErrorPage('Internal error', 'Error in Userlogin override.');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
require_once($sp->getFile());
|
||
|
wfSpecialUserlogin($par);
|
||
|
}
|
||
|
|
||
|
?>
|