From cd9b698d8e48d0b30cd8e6e3c1cee7efe4ae00b2 Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Tue, 11 Oct 2011 15:45:27 +0000 Subject: [PATCH] list=allusers was throwing fatals when invalid user names occurred in the database. Address this scenario gracefully --- includes/api/ApiQueryAllUsers.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php index 1dd7f19860..c26c2008f1 100644 --- a/includes/api/ApiQueryAllUsers.php +++ b/includes/api/ApiQueryAllUsers.php @@ -234,11 +234,13 @@ class ApiQueryAllUsers extends ApiQueryBase { ApiBase::dieDebug( __METHOD__, 'MediaWiki configuration error: the database contains more user groups than known to User::getAllGroups() function' ); } + + $lastUserObj = User::newFromName( $lastUser ); // Add user's group info if ( $fld_groups ) { - if ( !isset( $lastUserData['groups'] ) ) { - $lastUserData['groups'] = ApiQueryUsers::getAutoGroups( User::newFromName( $lastUser ) ); + if ( !isset( $lastUserData['groups'] ) && $lastUserObj ) { + $lastUserData['groups'] = ApiQueryUsers::getAutoGroups( $lastUserObj ); } if ( !is_null( $row->ug_group2 ) ) { @@ -247,13 +249,13 @@ class ApiQueryAllUsers extends ApiQueryBase { $result->setIndexedTagName( $lastUserData['groups'], 'g' ); } - if ( $fld_implicitgroups && !isset( $lastUserData['implicitgroups'] ) ) { - $lastUserData['implicitgroups'] = ApiQueryUsers::getAutoGroups( User::newFromName( $lastUser ) ); + if ( $fld_implicitgroups && !isset( $lastUserData['implicitgroups'] ) && $lastUserObj ) { + $lastUserData['implicitgroups'] = ApiQueryUsers::getAutoGroups( $lastUserObj ); $result->setIndexedTagName( $lastUserData['implicitgroups'], 'g' ); } if ( $fld_rights ) { - if ( !isset( $lastUserData['rights'] ) ) { - $lastUserData['rights'] = User::getGroupPermissions( User::newFromName( $lastUser )->getAutomaticGroups() ); + if ( !isset( $lastUserData['rights'] ) && $lastUserObj ) { + $lastUserData['rights'] = User::getGroupPermissions( $lastUserObj->getAutomaticGroups() ); } if ( !is_null( $row->ug_group2 ) ) { $lastUserData['rights'] = array_unique( array_merge( $lastUserData['rights'], -- 2.20.1