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