Use $wgUser in ResourceLoaderUserGroupsModule when possible.
authorAlexandre Emsenhuber <ialex.wiki@gmail.com>
Mon, 9 Apr 2012 17:56:33 +0000 (19:56 +0200)
committerAlexandre Emsenhuber <ialex.wiki@gmail.com>
Mon, 9 Apr 2012 18:27:40 +0000 (20:27 +0200)
$wgUser will be used is the User object corresponding to the user name passed in the "user" parameter. This avoids calling User::newFromName() (which will unstub $wgAuth, do database requests, etc.) when an object is already available.

Change-Id: Ia6c5ee1a59581b6410232fa3101af5ae1ff8577e

includes/resourceloader/ResourceLoaderUserGroupsModule.php

index 733dfa0..b5d96ca 100644 (file)
@@ -31,21 +31,32 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
         * @return array
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               if ( $context->getUser() ) {
-                       $user = User::newFromName( $context->getUser() );
-                       if ( $user instanceof User ) {
-                               $pages = array();
-                               foreach( $user->getEffectiveGroups() as $group ) {
-                                       if ( in_array( $group, array( '*', 'user' ) ) ) {
-                                               continue;
-                                       }
-                                       $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
-                                       $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
-                               }
-                               return $pages;
+               global $wgUser;
+
+               $userName = $context->getUser();
+               if ( !$userName ) {
+                       return array();
+               }
+
+               // Use $wgUser is possible; allows to skip a lot of code
+               if ( is_object( $wgUser ) && $wgUser->getName() == $userName ) {
+                       $user = $wgUser;
+               } else {
+                       $user = User::newFromName( $userName );
+                       if ( !$user instanceof User ) {
+                               return array();
+                       }
+               }
+
+               $pages = array();
+               foreach( $user->getEffectiveGroups() as $group ) {
+                       if ( in_array( $group, array( '*', 'user' ) ) ) {
+                               continue;
                        }
+                       $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
+                       $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
                }
-               return array();
+               return $pages;
        }
 
        /* Methods */