From f87ac721ebad45616f3fa3b934d090414cdf66c2 Mon Sep 17 00:00:00 2001 From: Rob Church Date: Wed, 11 Apr 2007 01:59:32 +0000 Subject: [PATCH] * (bug 9554) Extension-provided group name messages not used * Clean up SpecialListusers::formatRow() a bit, make group link building a touch more efficient --- RELEASE-NOTES | 1 + includes/SpecialListusers.php | 69 +++++++++++++++++++++++------------ includes/User.php | 19 +++++----- 3 files changed, 55 insertions(+), 34 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 239319b686..3bb73507f6 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -310,6 +310,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * Fixed $wgFeedLimit * (bug 9270) Corrected help namespace name for Dutch Lower Saxon (nds-nl) * (bug 929, 4215) Expose "rcdays" user preference in Special:Preferences +* (bug 9554) Extension-provided group name messages not used == Maintenance == diff --git a/includes/SpecialListusers.php b/includes/SpecialListusers.php index 543d041bf3..39ac0003d3 100644 --- a/includes/SpecialListusers.php +++ b/includes/SpecialListusers.php @@ -80,33 +80,22 @@ class UsersPager extends AlphabeticPager { } - function formatRow($row) { - $userPage = Title::makeTitle(NS_USER, $row->user_name); + function formatRow( $row ) { + $userPage = Title::makeTitle( NS_USER, $row->user_name ); $name = $this->getSkin()->makeLinkObj( $userPage, htmlspecialchars( $userPage->getText() ) ); - $groups = array(); - if ($row->numgroups > 1 || ( $this->requestedGroup and $row->numgroups == 1) ) { - $dbr = wfGetDB(DB_SLAVE); - $result = $dbr->select( 'user_groups', 'ug_group', - array( 'ug_user' => $row->user_id ), - 'UsersPager::formatRow' ); - while ( $group = $dbr->fetchObject($result)) { - $groups[$group->ug_group] = User::getGroupMember ( $group->ug_group ); - } - $dbr->freeResult($result); - } elseif ($row->numgroups == 1 ) { // MAX hack inside query :) - $groups[$row->singlegroup] = User::getGroupMember( $row->singlegroup ); - } - - if ( count($groups) > 0 ) { - foreach( $groups as $group => $desc ) { - $list[] = User::makeGroupLinkHTML( $group, $desc); - } - $groups = implode( ', ', $list); + + if( $row->numgroups > 1 || ( $this->requestedGroup && $row->numgroups == 1 ) ) { + $list = array(); + foreach( self::getGroups( $row->user_id ) as $group ) + $list[] = self::buildGroupLink( $group ); + $groups = implode( ', ', $list ); + } elseif( $row->numgroups == 1 ) { + $groups = self::buildGroupLink( $row->singlegroup ); } else { - $groups =''; + $groups = ''; } - //$ulink = $skin->userLink( $result->user, $result->user_text ) . ' ' . $skin->userToolLinks( $result->user, $result->user_text ); - return '
  • ' . wfSpecialList ($name, $groups) .'
  • '; + + return '
  • ' . wfSpecialList( $name, $groups ) . '
  • '; } function getBody() { @@ -175,6 +164,38 @@ class UsersPager extends AlphabeticPager { $query['username'] = $this->requestedUser; return $query; } + + /** + * Get a list of groups the specified user belongs to + * + * @param int $uid + * @return array + */ + private static function getGroups( $uid ) { + $dbr = wfGetDB( DB_SLAVE ); + $groups = array(); + $res = $dbr->select( 'user_groups', 'ug_group', array( 'ug_user' => $uid ), __METHOD__ ); + if( $res && $dbr->numRows( $res ) > 0 ) { + while( $row = $dbr->fetchObject( $res ) ) + $groups[] = $row->ug_group; + $dbr->freeResult( $res ); + } + return $groups; + } + + /** + * Format a link to a group description page + * + * @param string $group + * @return string + */ + private static function buildGroupLink( $group ) { + static $cache = array(); + if( !isset( $cache[$group] ) ) + $cache[$group] = User::makeGroupLinkHtml( $group, User::getGroupMember( $group ) ); + return $cache[$group]; + } + } /** diff --git a/includes/User.php b/includes/User.php index 8cdad6cf16..13158b9790 100644 --- a/includes/User.php +++ b/includes/User.php @@ -2463,13 +2463,12 @@ class User { * @static */ static function getGroupName( $group ) { + MessageCache::loadAllMessages(); $key = "group-$group"; $name = wfMsg( $key ); - if( $name == '' || wfEmptyMsg( $key, $name ) ) { - return $group; - } else { - return $name; - } + return $name = '' || wfEmptyMsg( $key, $name ) + ? $group + : $name; } /** @@ -2478,13 +2477,12 @@ class User { * @static */ static function getGroupMember( $group ) { + MessageCache::loadAllMessages(); $key = "group-$group-member"; $name = wfMsg( $key ); - if( $name == '' || wfEmptyMsg( $key, $name ) ) { - return $group; - } else { - return $name; - } + return $name = '' || wfEmptyMsg( $key, $name ) + ? $group + : $name; } /** @@ -2509,6 +2507,7 @@ class User { * @return mixed */ static function getGroupPage( $group ) { + MessageCache::loadAllMessages(); $page = wfMsgForContent( 'grouppage-' . $group ); if( !wfEmptyMsg( 'grouppage-' . $group, $page ) ) { $title = Title::newFromText( $page ); -- 2.20.1