From 2a55449257b6a8b7e259cd8f5208b4734bd312d2 Mon Sep 17 00:00:00 2001 From: Catrope Date: Thu, 2 Aug 2012 13:48:49 -0700 Subject: [PATCH] Fix bug causing API to list anons as autoconfirmed in certain cases On a stock install, the autoconfirmed requirements default to zero, so anons qualify for autoconfirmed. They don't actually get it because User::getEffectiveGroups() only checks for autopromote groups for logged-in users. However, ApiQueryUsers::getAutoGroups() (which duplicates this logic for some reason) didn't use the same rule and applied autopromote groups to anons too, which caused discrepancies betwen the API output and wgUserGroups. Krinkle noticed this because a QUnit test for mw.user.getGroups() was failing while logged out: the API response included autoconfirmed but wgUserGroups didn't. Change-Id: I0b781c11e06d3cc7176b2fb3ba06979d3637f970 --- includes/api/ApiQueryUsers.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/includes/api/ApiQueryUsers.php b/includes/api/ApiQueryUsers.php index acc846bcec..855e27090a 100644 --- a/includes/api/ApiQueryUsers.php +++ b/includes/api/ApiQueryUsers.php @@ -253,14 +253,16 @@ class ApiQueryUsers extends ApiQueryBase { * @return array */ public static function getAutoGroups( $user ) { + // FIXME this logic is duplicated from User::getEffectiveGroups(), centralize this $groups = array(); $groups[] = '*'; if ( !$user->isAnon() ) { $groups[] = 'user'; + $groups = array_merge( $groups, Autopromote::getAutopromoteGroups( $user ) ); } - return array_merge( $groups, Autopromote::getAutopromoteGroups( $user ) ); + return $groups; } public function getCacheMode( $params ) { -- 2.20.1