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 .= '&nbsp;';
+       }
+
+       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

Reply via email to