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 <[email protected]>
+ */
+$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 <[email protected]>
+ */
+$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 <[email protected]>
+ * @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
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs