X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialListusers.php;h=0531444a1ffcf229777067d8ecc22eb704b7cde3;hb=2bae2fc8a97394d85a011cc71a8e67716229db4f;hp=53191414ebc47d3b838f086d7fb7850d4a5d9614;hpb=7b229a2047bb04443486f1a8864ced4ae58ff36a;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialListusers.php b/includes/specials/SpecialListusers.php index 53191414eb..0531444a1f 100644 --- a/includes/specials/SpecialListusers.php +++ b/includes/specials/SpecialListusers.php @@ -1,9 +1,11 @@ * - * © 2006 Rob Church * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -16,12 +18,11 @@ * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html - */ - -/** + * * @file + * @ingroup SpecialPage */ /** @@ -40,7 +41,7 @@ class UsersPager extends AlphabeticPager { if ( $parms[0] != '' && ( in_array( $par, User::getAllGroups() ) || in_array( $par, $symsForAll ) ) ) { $this->requestedGroup = $par; $un = $wgRequest->getText( 'username' ); - } else if ( count( $parms ) == 2 ) { + } elseif ( count( $parms ) == 2 ) { $this->requestedGroup = $parms[0]; $un = $parms[1]; } else { @@ -63,6 +64,9 @@ class UsersPager extends AlphabeticPager { parent::__construct(); } + function getTitle() { + return SpecialPage::getTitleFor( 'Listusers' ); + } function getIndexField() { return $this->creationSort ? 'user_id' : 'user_name'; @@ -73,13 +77,16 @@ class UsersPager extends AlphabeticPager { $dbr = wfGetDB( DB_SLAVE ); $conds = array(); // Don't show hidden names - if( !$wgUser->isAllowed('hideuser') ) + if( !$wgUser->isAllowed('hideuser') ) { $conds[] = 'ipb_deleted IS NULL'; + } + + $options = array(); + if( $this->requestedGroup != '' ) { $conds['ug_group'] = $this->requestedGroup; - $useIndex = ''; } else { - $useIndex = $dbr->useIndexClause( $this->creationSort ? 'PRIMARY' : 'user_name'); + //$options['USE INDEX'] = $this->creationSort ? 'PRIMARY' : 'user_name'; } if( $this->requestedUser != '' ) { # Sorted either by account creation or name @@ -93,11 +100,10 @@ class UsersPager extends AlphabeticPager { $conds[] = 'user_editcount > 0'; } - list ($user,$user_groups,$ipblocks) = $dbr->tableNamesN('user','user_groups','ipblocks'); + $options['GROUP BY'] = $this->creationSort ? 'user_id' : 'user_name'; $query = array( - 'tables' => " $user $useIndex LEFT JOIN $user_groups ON user_id=ug_user - LEFT JOIN $ipblocks ON user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0 ", + 'tables' => array( 'user', 'user_groups', 'ipblocks'), 'fields' => array( $this->creationSort ? 'MAX(user_name) AS user_name' : 'user_name', $this->creationSort ? 'user_id' : 'MAX(user_id) AS user_id', @@ -107,7 +113,11 @@ class UsersPager extends AlphabeticPager { 'MIN(user_registration) AS creation', 'MAX(ipb_deleted) AS ipb_deleted' // block/hide status ), - 'options' => array('GROUP BY' => $this->creationSort ? 'user_id' : 'user_name'), + 'options' => $options, + 'join_conds' => array( + 'user_groups' => array( 'LEFT JOIN', 'user_id=ug_user' ), + 'ipblocks' => array( 'LEFT JOIN', 'user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0' ), + ), 'conds' => $conds ); @@ -122,15 +132,14 @@ class UsersPager extends AlphabeticPager { return ''; $userPage = Title::makeTitle( NS_USER, $row->user_name ); - $name = $this->getSkin()->link( $userPage, htmlspecialchars( $userPage->getText() ) ); + $name = Linker::link( $userPage, htmlspecialchars( $userPage->getText() ) ); - if( $row->numgroups > 1 || ( $this->requestedGroup && $row->numgroups == 1 ) ) { + $groups_list = self::getGroups( $row->user_id ); + if( count( $groups_list ) > 0 ) { $list = array(); - foreach( self::getGroups( $row->user_id ) as $group ) + foreach( $groups_list as $group ) $list[] = self::buildGroupLink( $group ); $groups = $wgLang->commaList( $list ); - } elseif( $row->numgroups == 1 ) { - $groups = self::buildGroupLink( $row->singlegroup ); } else { $groups = ''; } @@ -167,7 +176,7 @@ class UsersPager extends AlphabeticPager { } $this->mResult->rewind(); $batch = new LinkBatch; - while ( $row = $this->mResult->fetchObject() ) { + foreach ( $this->mResult as $row ) { $batch->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) ); } $batch->execute(); @@ -176,13 +185,13 @@ class UsersPager extends AlphabeticPager { } function getPageHeader( ) { - global $wgScript, $wgRequest; + global $wgScript; $self = $this->getTitle(); # Form tag $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listusers-form' ) ) . Xml::fieldset( wfMsg( 'listusers' ) ) . - Xml::hidden( 'title', $self->getPrefixedDbKey() ); + Html::hidden( 'title', $self->getPrefixedDbKey() ); # Username field $out .= Xml::label( wfMsg( 'listusersfrom' ), 'offset' ) . ' ' . @@ -203,7 +212,7 @@ class UsersPager extends AlphabeticPager { wfRunHooks( 'SpecialListusersHeaderForm', array( $this, &$out ) ); # Submit button and form bottom - $out .= Xml::hidden( 'limit', $this->mLimit ); + $out .= Html::hidden( 'limit', $this->mLimit ); $out .= Xml::submitButton( wfMsg( 'allpagessubmit' ) ); wfRunHooks( 'SpecialListusersHeader', array( $this, &$out ) ); $out .= Xml::closeElement( 'fieldset' ) . @@ -247,7 +256,7 @@ class UsersPager extends AlphabeticPager { */ protected static function getGroups( $uid ) { $user = User::newFromId( $uid ); - $groups = array_diff( $user->getEffectiveGroups(), $user->getImplicitGroups() ); + $groups = array_diff( $user->getEffectiveGroups(), User::getImplicitGroups() ); return $groups; } @@ -266,25 +275,42 @@ class UsersPager extends AlphabeticPager { } /** - * constructor - * $par string (optional) A group to list users from + * @ingroup SpecialPage */ -function wfSpecialListusers( $par = null ) { - global $wgRequest, $wgOut; - - $up = new UsersPager($par); - - # getBody() first to check, if empty - $usersbody = $up->getBody(); - $s = XML::openElement( 'div', array('class' => 'mw-spcontent') ); - $s .= $up->getPageHeader(); - if( $usersbody ) { - $s .= $up->getNavigationBar(); - $s .= ''; - $s .= $up->getNavigationBar() ; - } else { - $s .= '

' . wfMsgHTML('listusers-noresult') . '

'; - }; - $s .= XML::closeElement( 'div' ); - $wgOut->addHTML( $s ); +class SpecialListUsers extends SpecialPage { + + /** + * Constructor + */ + public function __construct() { + parent::__construct( 'Listusers' ); + } + + /** + * Show the special page + * + * @param $par string (optional) A group to list users from + */ + public function execute( $par ) { + global $wgOut; + + $this->setHeaders(); + $this->outputHeader(); + + $up = new UsersPager( $par ); + + # getBody() first to check, if empty + $usersbody = $up->getBody(); + + $s = $up->getPageHeader(); + if( $usersbody ) { + $s .= $up->getNavigationBar(); + $s .= Html::rawElement( 'ul', array(), $usersbody ); + $s .= $up->getNavigationBar(); + } else { + $s .= wfMessage( 'listusers-noresult' )->parseAsBlock(); + } + + $wgOut->addHTML( $s ); + } }