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
* @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 ) {