http://www.mediawiki.org/wiki/Special:Code/MediaWiki/95182
Revision: 95182 Author: ashley Date: 2011-08-21 22:55:03 +0000 (Sun, 21 Aug 2011) Log Message: ----------- extensionified version of an old Wikia core hack: hide users who have made very little/no edits. SQL query by Wikia, extensionification + some tweaks by me Added Paths: ----------- trunk/extensions/FilterListUsers/ trunk/extensions/FilterListUsers/FilterListUsers.i18n.php trunk/extensions/FilterListUsers/FilterListUsers.php Added: trunk/extensions/FilterListUsers/FilterListUsers.i18n.php =================================================================== --- trunk/extensions/FilterListUsers/FilterListUsers.i18n.php (rev 0) +++ trunk/extensions/FilterListUsers/FilterListUsers.i18n.php 2011-08-21 22:55:03 UTC (rev 95182) @@ -0,0 +1,33 @@ +<?php +/** + * Internationalization file for the FilterListUsers extension. + * + * @file + * @ingroup Extensions + */ + +$messages = array(); + +/** English + * @author Jack Phoenix <j...@countervandalism.net> + */ +$messages['en'] = array( + 'listusers-showall' => 'Show all users, including those with less than 5 edits', + 'right-viewallusers' => 'View all users in [[Special:ListUsers|the user list]]' +); + +/** Finnish (Suomi) + * @author Jack Phoenix <j...@countervandalism.net> + */ +$messages['fi'] = array( + 'listusers-showall' => 'Näytä kaikki käyttäjät, mukaanlukien ne, joilla on alle viisi muokkausta', + 'right-viewallusers' => 'Katsoa kaikki käyttäjät [[Special:ListUsers|käyttäjälistassa]]' +); + +/** Dutch (Nederlands) + * @author Mitchel Corstjens + */ +$messages['nl'] = array( + 'listusers-showall' => 'Geef alle gebruikers weer, ook gebruikers met minder dan 5 bewerkingen', + 'right-viewallusers' => 'Bekijk alle gebruikers in de [[Special:ListUsers|gebruikers lijst]]' +); \ No newline at end of file Property changes on: trunk/extensions/FilterListUsers/FilterListUsers.i18n.php ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/extensions/FilterListUsers/FilterListUsers.php =================================================================== --- trunk/extensions/FilterListUsers/FilterListUsers.php (rev 0) +++ trunk/extensions/FilterListUsers/FilterListUsers.php 2011-08-21 22:55:03 UTC (rev 95182) @@ -0,0 +1,90 @@ +<?php +/** + * FilterListUsers -- filters out users that haven't edited from Special:ListUsers + * + * @file + * @ingroup Extensions + * @version 1.0 + * @date February 22, 2010 + * @author Jack Phoenix <j...@countervandalism.net> + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later + */ + +if ( !defined( 'MEDIAWIKI' ) ) { + die( "This is not a valid entry point.\n" ); +} + +// Extension credits that will show up on Special:Version +$wgExtensionCredits['other'][] = array( + 'name' => 'FilterListUsers', + 'version' => '1.0', + 'author' => 'Jack Phoenix', + 'description' => "Filters out users that haven't edited from [[Special:ListUsers]]", + 'url' => 'http://www.mediawiki.org/wiki/Extension:FilterListUsers', +); + +// New user right, required to view all users in Special:ListUsers +$wgAvailableRights[] = 'viewallusers'; +$wgGroupPermissions['sysop']['viewallusers'] = true; + +// i18n file +$dir = dirname( __FILE__ ) . '/'; +$wgExtensionMessagesFiles['FilterListUsers'] = $dir . 'FilterListUsers.i18n.php'; + +$wgHooks['SpecialListusersQueryInfo'][] = 'efFilterListUsersAlterQuery'; +/** + * Alters the SQL query so that when there is no "showall" parameter in the URL + * or when the user isn't privileged, only users with 5 (or more) edits will be + * shown. + * + * @param $usersPager Object: instance of UsersPager + * @param $query Array: SQL query parameters + * @return Boolean: true + */ +function efFilterListUsersAlterQuery( $usersPager, &$query ) { + global $wgRequest, $wgUser; + + // Members of these groups will always be shown if the user selects this + // group from the dropdown menu, no matter if they haven't edited the wiki + // at all + $exemptGroups = array( + 'sysop', 'bureaucrat', 'steward', 'staff', 'globalbot' + ); + + if ( + !$wgRequest->getVal( 'showall' ) && !in_array( $usersPager->requestedGroup, $exemptGroups ) || + !$wgUser->isAllowed( 'viewallusers' ) && !in_array( $usersPager->requestedGroup, $exemptGroups ) + ) + { + $dbr = wfGetDB( DB_SLAVE ); + $revisionTable = $dbr->tableName( 'revision' ); + $query['tables'] .= " JOIN (SELECT rev_user, COUNT(*) AS cnt FROM {$revisionTable} GROUP BY rev_user HAVING cnt > 5) AS tmp ON user_id = rev_user "; + } + + return true; +} + +$wgHooks['SpecialListusersHeaderForm'][] = 'efFilterListUsersHeaderForm'; +/** + * Adds the "Show all users" checkbox for privileged users. + * + * @param $usersPager Object: instance of UsersPager + * @param $out String: HTML output + * @return Boolean: true + */ +function efFilterListUsersHeaderForm( $usersPager, &$out ) { + global $wgRequest, $wgUser; + + // Show this checkbox only to privileged users + if ( $wgUser->isAllowed( 'viewallusers' ) ) { + $out .= Xml::checkLabel( + wfMsg( 'listusers-showall' ), + 'showall', + 'showall', + $wgRequest->getVal( 'showall' ) + ); + $out .= ' '; + } + + return true; +} \ No newline at end of file Property changes on: trunk/extensions/FilterListUsers/FilterListUsers.php ___________________________________________________________________ Added: svn:eol-style + native _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs