On 2/27/07, aaron(a)svn.wikimedia.org <aaron(a)svn.wikimedia.org> wrote:
Revision: 20075
Author: aaron
Date: 2007-02-27 14:17:35 -0800 (Tue, 27 Feb 2007)
Log Message:
-----------
* Allow /16 and /24 CIDR ips
Modified Paths:
--------------
trunk/phase3/includes/SpecialContributions.php
Modified: trunk/phase3/includes/SpecialContributions.php
===================================================================
--- trunk/phase3/includes/SpecialContributions.php 2007-02-27 22:06:53 UTC (rev
20074)
+++ trunk/phase3/includes/SpecialContributions.php 2007-02-27 22:17:35 UTC (rev
20075)
@@ -71,13 +71,18 @@
if ( $this->username == 'newbies' ) {
$max = $this->dbr->selectField( 'user',
'max(user_id)', false, 'make_sql' );
$condition = '>' . (int)($max - $max / 100);
+ } else if (
preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/(24|16)/", $this->username)
) {
+ $abcd = explode( ".", $this->username );
+ if( substr( $this->username, -2 ) == 24 ) $ipmask = $abcd[0] .
'.' . $abcd[1] . '.' . $abcd[2] . '.%';
+ else $ipmask=$abcd[0] . '.' . $abcd[1] . '.%';
+ $condition = 'rev_user_text LIKE ' .
$this->dbr->addQuotes($ipmask);
}
if ( $condition == '' ) {
$condition = ' rev_user_text=' .
$this->dbr->addQuotes( $this->username );
$index = 'usertext_timestamp';
} else {
- $condition = ' rev_user '.$condition ;
+ #$condition = ' rev_user '.$condition ;
Is it just me, or is this broken? The prefixing of rev_user later was
removed, but the original instance of $condition didn't have the
prefixing added. It seems to me that you'll get conditions like
"WHERE > 12345", which is obviously a syntax error. The patch that
this was copied from didn't have this issue, changing the "$condition
= ..." line to include " rev_user". And commenting out lines rather
than removing them is probably not generally good.
Incidentally, why is this still using the old 1% method of calculating
newbies? Shouldn't it use user_registration?