Fix userrights-interwiki when the 'user' table is shared

At present, this function selects the user table from the same DB as the
user_groups, however, in wikifarms this is not often the case, as the user
table is often shared, but the user_groups table not. Adding a check in
here, and passing the shared table, if needed, ONLY to the user query,
should fix.

Change-Id: Ib85630067c402b8e4f50ff11a33fe7f0eadd4f16
This commit is contained in:
UltrasonicNXT 2014-02-05 21:03:15 +00:00 committed by Legoktm
parent 6a09d25aee
commit 9d68a8718f

View file

@ -113,12 +113,23 @@ class UserRightsProxy {
* @return null|UserRightsProxy
*/
private static function newFromLookup( $database, $field, $value, $ignoreInvalidDB = false ) {
global $wgSharedDB, $wgSharedTables;
// If the user table is shared, perform the user query on it, but don't pass it to the UserRightsProxy,
// as user rights are normally not shared.
if ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) {
$userdb = self::getDB( $wgSharedDB, $ignoreInvalidDB );
} else {
$userdb = self::getDB( $database, $ignoreInvalidDB );
}
$db = self::getDB( $database, $ignoreInvalidDB );
if ( $db ) {
$row = $db->selectRow( 'user',
if ( $db && $userdb ) {
$row = $userdb->selectRow( 'user',
array( 'user_id', 'user_name' ),
array( $field => $value ),
__METHOD__ );
if ( $row !== false ) {
return new UserRightsProxy( $db, $database,
$row->user_name,