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:
parent
6a09d25aee
commit
9d68a8718f
1 changed files with 13 additions and 2 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue