http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99671

Revision: 99671
Author:   aaron
Date:     2011-10-13 06:29:51 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
* Generalized getReviewTimesAnons() and renamed it to getEditReviewTimes()
* Avoid usage of some useless temp vars in updateCache()

Modified Paths:
--------------
    trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php

Modified: trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php
===================================================================
--- trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php       
2011-10-13 05:40:19 UTC (rev 99670)
+++ trunk/extensions/FlaggedRevs/dataclasses/FlaggedRevsStats.php       
2011-10-13 06:29:51 UTC (rev 99671)
@@ -85,11 +85,7 @@
                $avePET = self::getMeanPendingEditTime();
 
                # Get wait (till review) time samples for anon edits...
-               $reviewData = self::getReviewTimesAnons( $dbCache );
-               $aveRT = $reviewData['average'];
-               $medianRT = $reviewData['median'];
-               $rPerTable = $reviewData['percTable'];
-               $rSize = $reviewData['sampleSize'];
+               $reviewData = self::getEditReviewTimes( $dbCache, 'anons' );
 
                $dbw = wfGetDB( DB_MASTER );
                // The timestamp to identify this whole batch of data
@@ -105,7 +101,7 @@
                        'frs_stat_val'  => $reviewData['sampleEndTS'], // unix
                        'frs_timestamp' => $encDataTimestamp );
                // All-namespace percentiles...
-               foreach( $rPerTable as $percentile => $seconds ) {
+               foreach( $reviewData['percTable'] as $percentile => $seconds ) {
                        $dataSet[] = array(
                                'frs_stat_key'  => 
'reviewLag-percentile:'.(int)$percentile,
                                'frs_stat_val'  => $seconds,
@@ -114,17 +110,17 @@
                // Sample size...
                $dataSet[] = array(
                        'frs_stat_key'  => 'reviewLag-sampleSize',
-                       'frs_stat_val'  => $rSize,
+                       'frs_stat_val'  => $reviewData['sampleSize'],
                        'frs_timestamp' => $encDataTimestamp );
 
                // All-namespace ave/med review lag & ave pending lag stats...
                $dataSet[] = array(
                        'frs_stat_key'  => 'reviewLag-average',
-                       'frs_stat_val'  => $aveRT,
+                       'frs_stat_val'  => $reviewData['average'],
                        'frs_timestamp' => $encDataTimestamp );
                $dataSet[] = array(
                        'frs_stat_key'  => 'reviewLag-median',
-                       'frs_stat_val'  => $medianRT,
+                       'frs_stat_val'  => $reviewData['median'],
                        'frs_timestamp' => $encDataTimestamp );
                $dataSet[] = array(
                        'frs_stat_key'  => 'pendingLag-average',
@@ -196,7 +192,13 @@
                );
        }
 
-       private function getReviewTimesAnons( $dbCache ) {
+       /**
+        * Get edit review time statistics (as recent as possible)
+        * @param $dbcache Database cache object
+        * @param $users string "anons" or "users"
+        * @return Array associative
+        */
+       private function getEditReviewTimes( $dbCache, $users = 'anons' ) {
                $result = array(
                        'average'       => 0,
                        'median'        => 0,
@@ -259,6 +261,14 @@
                                $last = $row->fpp_pending_since; // next 
iteration
                        }
                }
+               # User condition (anons/users)
+               if ( $users === 'anons' ) {
+                       $userCondition = 'rev_user = 0';
+               } elseif ( $users === 'users' ) {
+                       $userCondition = 'rev_user = 1';
+               } else {
+                       throw new MWException( 'Invalid $users param given.' );
+               }
                # Avoid having to censor data
                # Note: if no edits pending, $worstLagTS is the cur time just 
before we checked
                # for the worst lag. Thus, new edits *right* after the check 
are properly excluded.
@@ -270,7 +280,7 @@
                $encMinTS = $dbr->addQuotes( $dbr->timestamp( $minTSUnix ) );
                # Approximate the number rows to scan
                $rows = $dbr->estimateRowCount( 'revision', '1',
-                       "rev_user=0 AND rev_timestamp BETWEEN $encMinTS AND 
$encMaxTS" );
+                       array( $userCondition, "rev_timestamp BETWEEN $encMinTS 
AND $encMaxTS" ) );
                # If the range doesn't have many rows (like on small wikis), 
use 30 days
                if ( $rows < 500 ) {
                        $days = 30;
@@ -278,7 +288,7 @@
                        $encMinTS = $dbr->addQuotes( $dbr->timestamp( 
$minTSUnix ) );
                        # Approximate rows to scan
                        $rows = $dbr->estimateRowCount( 'revision', '1',
-                               "rev_user=0 AND rev_timestamp BETWEEN $encMinTS 
AND $encMaxTS" );
+                               array( $userCondition, "rev_timestamp BETWEEN 
$encMinTS AND $encMaxTS" ) );
                        # If the range doesn't have many rows (like on really 
tiny wikis), use 90 days
                        if ( $rows < 500 ) {
                                $days = 90;
@@ -298,7 +308,7 @@
                        $edits = (int)$dbr->selectField( 
array('page','revision'),
                                'COUNT(*)',
                                array(
-                                       'rev_user = 0', // IP edits (should 
start off unreviewed)
+                                       $userCondition, // IP edits (should 
start off unreviewed)
                                        $timeCondition, // in time range
                                        'page_id = rev_page',
                                        'page_namespace' => 
FlaggedRevs::getReviewNamespaces()
@@ -313,7 +323,7 @@
                $res = $dbr->select(
                        array( 'revision', 'p' => 'flaggedrevs', 'n' => 
'flaggedrevs' ),
                        array( 'MIN(rev_timestamp) AS rt', 'MIN(n.fr_timestamp) 
AS nft', 'MAX(p.fr_rev_id)' ),
-                       array( 'rev_user' => 0, $timeCondition, "(rev_id % 
$mod) = 0" ),
+                       array( $userCondition, $timeCondition, "(rev_id % $mod) 
= 0" ),
                        __METHOD__,
                        array(
                                'GROUP BY'  => array( 'rev_timestamp', 'rev_id' 
), // user_timestamp INDEX used


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to