* Remove mysql var and move field init to updaters.inc
authorAaron Schulz <aaron@users.mediawiki.org>
Mon, 1 Sep 2008 19:22:28 +0000 (19:22 +0000)
committerAaron Schulz <aaron@users.mediawiki.org>
Mon, 1 Sep 2008 19:22:28 +0000 (19:22 +0000)
includes/SiteStats.php
maintenance/archives/patch-ss_active_users.sql
maintenance/updaters.inc

index 5ae3203..e209cc2 100644 (file)
@@ -265,7 +265,7 @@ class SiteStatsUpdate {
                $dbw->begin();
                $dbw->update( 'site_stats', 
                        array( 'ss_active_users' => intval($activeUsers) ),
-                               array('1 = 1'), __METHOD__, array( 'LIMIT' => 1 )
+                       array( 'ss_row_id' => 1 ), __METHOD__, array( 'LIMIT' => 1 )
                );
                $dbw->commit();
        }
index 7143905..a583cdc 100644 (file)
@@ -1,6 +1,3 @@
 -- More statistics, for version 1.14
 
 ALTER TABLE /*$wgDBprefix*/site_stats ADD ss_active_users bigint default '-1';
-SELECT @activeusers := COUNT( DISTINCT rc_user_text ) FROM /*$wgDBprefix*/recentchanges 
-WHERE rc_user != 0 AND rc_bot = 0 AND rc_log_type != 'newusers';
-UPDATE /*$wgDBprefix*/site_stats SET ss_active_users=@activeusers;
index e22412c..0533b66 100644 (file)
@@ -146,6 +146,7 @@ $wgMysqlUpdates = array(
        
        // 1.14
        array( 'add_field', 'site_stats',     'ss_active_users',  'patch-ss_active_users.sql' ),
+       array( 'do_active_users_init' )
 );
 
 
@@ -1027,6 +1028,23 @@ function do_stats_init() {
        }
 }
 
+function do_active_users_init() {
+       global $wgDatabase;
+       $activeUsers = $wgDatabase->selectField( 'site_stats', 'ss_active_users', 
+               array( 'ss_row_id' => 1 ), __METHOD__ );
+       if( $activeUsers === -1 ) {
+               $activeUsers = $wgDatabase->selectField( 'recentchanges', 
+                       'COUNT( DISTINCT rc_user_text )',
+                       array( 'rc_user != 0', 'rc_bot' => 0, "rc_log_type != 'newusers'" ), __METHOD__ 
+               );
+               $wgDatabase->update( 'site_stats', 
+                       array( 'ss_active_users' => intval($activeUsers) ),
+                       array( 'ss_row_id' => 1 ), __METHOD__, array( 'LIMIT' => 1 )
+               );
+       }
+       echo( "...ss_active_users user count set...\n" );
+}
+
 function purge_cache() {
        global $wgDatabase;
        # We can't guarantee that the user will be able to use TRUNCATE,