From: This, that and the other Date: Tue, 31 Jan 2017 10:24:20 +0000 (+1100) Subject: Don't return expired user groups in UserRightsProxy X-Git-Tag: 1.31.0-rc.0~4181^2 X-Git-Url: https://git.cyclocoop.org/%27.%24link.%27?a=commitdiff_plain;h=894b319b2f739242317f44329ef64ae458464244;p=lhc%2Fweb%2Fwiklou.git Don't return expired user groups in UserRightsProxy Also add a missing type hint in UserGroupMembership. Bug: T156779 Change-Id: Ica31541f59115db3db92de82592e6a9422082bba --- diff --git a/includes/user/UserGroupMembership.php b/includes/user/UserGroupMembership.php index bb0b7d27b4..59ca31cbb2 100644 --- a/includes/user/UserGroupMembership.php +++ b/includes/user/UserGroupMembership.php @@ -313,7 +313,7 @@ class UserGroupMembership { * @param IDatabase|null $db Optional database connection * @return array Associative array of (group name => UserGroupMembership object) */ - public static function getMembershipsForUser( $userId, $db = null ) { + public static function getMembershipsForUser( $userId, IDatabase $db = null ) { if ( !$db ) { $db = wfGetDB( DB_REPLICA ); } diff --git a/includes/user/UserRightsProxy.php b/includes/user/UserRightsProxy.php index 23c2177d3f..d801fa091b 100644 --- a/includes/user/UserRightsProxy.php +++ b/includes/user/UserRightsProxy.php @@ -198,15 +198,7 @@ class UserRightsProxy { * @return array */ function getGroups() { - $res = $this->db->select( 'user_groups', - [ 'ug_group' ], - [ 'ug_user' => $this->id ], - __METHOD__ ); - $groups = []; - foreach ( $res as $row ) { - $groups[] = $row->ug_group; - } - return $groups; + return array_keys( self::getGroupMemberships() ); } /** @@ -216,15 +208,7 @@ class UserRightsProxy { * @since 1.29 */ function getGroupMemberships() { - $res = $this->db->select( 'user_groups', - UserGroupMembership::selectFields(), - [ 'ug_user' => $this->id ], - __METHOD__ ); - $ugms = []; - foreach ( $res as $row ) { - $ugms[$row->ug_group] = UserGroupMembership::newFromRow( $row ); - } - return $ugms; + return UserGroupMembership::getMembershipsForUser( $this->id, $this->db ); } /**