* (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 ==
return $result;
}
- if( $wgUser->isAllowed('read') ) {
+ if( $wgUser->isAllowed( 'read' ) ) {
return true;
} else {
global $wgWhitelistRead;
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;
- }
-
- # Compatibility with old settings
+
+ /**
+ * 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 ) ) {
+ 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;
+ }
+
}
return false;
}