Added a User parameter to SpecialPageFactory::getUsablePages() so that it does not...
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Mon, 17 Oct 2011 14:33:04 +0000 (14:33 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Mon, 17 Oct 2011 14:33:04 +0000 (14:33 +0000)
includes/SpecialPage.php
includes/SpecialPageFactory.php
includes/specials/SpecialSpecialpages.php

index fca8c06..7548200 100644 (file)
@@ -189,11 +189,13 @@ class SpecialPage {
         * Return categorised listable special pages which are available
         * for the current user, and everyone.
         *
+        * @param $user User object to check permissions, $wgUser will be used
+        *              if not provided
         * @return Associative array mapping page's name to its SpecialPage object
         * @deprecated since 1.18 call SpecialPageFactory method directly
         */
-       static function getUsablePages() {
-               return SpecialPageFactory::getUsablePages();
+       static function getUsablePages( User $user = null ) {
+               return SpecialPageFactory::getUsablePages( $user );
        }
 
        /**
index 22aaa75..27cdc3e 100644 (file)
@@ -339,16 +339,21 @@ class SpecialPageFactory {
         * Return categorised listable special pages which are available
         * for the current user, and everyone.
         *
+        * @param $user User object to check permissions, $wgUser will be used
+        *              if not provided
         * @return Array( String => Specialpage )
         */
-       public static function getUsablePages() {
-               global $wgUser;
+       public static function getUsablePages( User $user = null ) {
                $pages = array();
+               if ( $user === null ) {
+                       global $wgUser;
+                       $user = $wgUser;
+               }
                foreach ( self::getList() as $name => $rec ) {
                        $page = self::getPage( $name );
                        if ( $page // not null
                                && $page->isListed()
-                               && ( !$page->isRestricted() || $page->userCanExecute( $wgUser ) )
+                               && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
                        ) {
                                $pages[$name] = $page;
                        }
index 13bc4c2..e973ddc 100644 (file)
@@ -51,7 +51,7 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
        private function getPageGroups() {
                global $wgSortSpecialPages;
 
-               $pages = SpecialPageFactory::getUsablePages();
+               $pages = SpecialPageFactory::getUsablePages( $this->getUser() );
 
                if( !count( $pages ) ) {
                        # Yeah, that was pointless. Thanks for coming.