From c796585a305952e13a8f2b10038055bfff3964d0 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Mon, 9 Apr 2012 19:56:33 +0200 Subject: [PATCH] Use $wgUser in ResourceLoaderUserGroupsModule when possible. $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 --- .../ResourceLoaderUserGroupsModule.php | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderUserGroupsModule.php b/includes/resourceloader/ResourceLoaderUserGroupsModule.php index 733dfa0494..b5d96caed0 100644 --- a/includes/resourceloader/ResourceLoaderUserGroupsModule.php +++ b/includes/resourceloader/ResourceLoaderUserGroupsModule.php @@ -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 */ -- 2.20.1