* Fix read permission check for special pages with subpage parameters, e.g. Special:Confirmemail
* Fix read permission check for page titles consisting of one or more zeros, e.g. "0", "00" etc.
This commit is contained in:
parent
9c246e3ef0
commit
8a66b3cc4a
2 changed files with 30 additions and 10 deletions
|
|
@ -234,6 +234,10 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
|
|||
* (bug 10401) Provide non-redirecting link to original title in Special:Movepage
|
||||
* Fix broken handling of log views for page titles consisting of one
|
||||
or more zeros, e.g. "0", "00" etc.
|
||||
* Fix read permission check for special pages with subpage parameters, e.g.
|
||||
Special:Confirmemail
|
||||
* Fix read permission check for page titles consisting of one or more zeros,
|
||||
e.g. "0", "00" etc.
|
||||
|
||||
== API changes since 1.10 ==
|
||||
|
||||
|
|
|
|||
|
|
@ -1148,7 +1148,7 @@ class Title {
|
|||
return $result;
|
||||
}
|
||||
|
||||
if( $wgUser->isAllowed('read') ) {
|
||||
if( $wgUser->isAllowed( 'read' ) ) {
|
||||
return true;
|
||||
} else {
|
||||
global $wgWhitelistRead;
|
||||
|
|
@ -1160,19 +1160,35 @@ class Title {
|
|||
if( $this->isSpecial( 'Userlogin' ) || $this->isSpecial( 'Resetpass' ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** some pages are explicitly allowed */
|
||||
|
||||
/**
|
||||
* Check for explicit whitelisting
|
||||
*/
|
||||
$name = $this->getPrefixedText();
|
||||
if( $wgWhitelistRead && in_array( $name, $wgWhitelistRead ) ) {
|
||||
if( $wgWhitelistRead && in_array( $name, $wgWhitelistRead, true ) )
|
||||
return true;
|
||||
|
||||
/**
|
||||
* Old settings might have the title prefixed with
|
||||
* a colon for main-namespace pages
|
||||
*/
|
||||
if( $wgWhitelistRead && $this->getNamespace() == NS_MAIN ) {
|
||||
if( in_array( ':' . $name, $wgWhitelistRead ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If it's a special page, ditch the subpage bit
|
||||
* and check again
|
||||
*/
|
||||
if( $this->getNamespace() == NS_SPECIAL ) {
|
||||
$name = $this->getText();
|
||||
list( $name, $subpage ) = SpecialPage::resolveAliasWithSubpage( $name );
|
||||
$pure = SpecialPage::getTitleFor( $name )->getPrefixedText();
|
||||
if( in_array( $pure, $wgWhitelistRead, true ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
# Compatibility with old settings
|
||||
if( $wgWhitelistRead && $this->getNamespace() == NS_MAIN ) {
|
||||
if( in_array( ':' . $name, $wgWhitelistRead ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue