http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99672
Revision: 99672
Author: aaron
Date: 2011-10-13 08:22:09 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
In reviewAllPages.php:
* Converted to use Maintenance class
* Made user param work by name rather than ID; sanity check that user exists
and is a reviewer
* Reduce separate revision row queries
* Keep DeferredUpdates queue size reasonable
Added Paths:
-----------
trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php
Removed Paths:
-------------
trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.inc
trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php
Deleted: trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.inc
===================================================================
--- trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.inc 2011-10-13
06:29:51 UTC (rev 99671)
+++ trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.inc 2011-10-13
08:22:09 UTC (rev 99672)
@@ -1,55 +0,0 @@
-<?php
-
-function autoreview_current( $user, $db ) {
- global $wgFlaggedRevsNamespaces;
- echo "Auto-reviewing all current page versions...\n";
- if( !$user->getID() ) {
- echo( "Invalid user specified!" );
- exit(0);
- }
- echo "Reviewer username: ".$user->getName()."\n";
- $BATCH_SIZE = 50;
- $start = $db->selectField( 'page', 'MIN(page_id)', false, __FUNCTION__
);
- $end = $db->selectField( 'page', 'MAX(page_id)', false, __FUNCTION__ );
- if( is_null( $start ) || is_null( $end ) ){
- echo "...page table seems to be empty.\n";
- return;
- }
- # Do remaining chunk
- $end += $BATCH_SIZE - 1;
- $blockStart = $start;
- $blockEnd = $start + $BATCH_SIZE - 1;
- $count = 0;
- $changed = 0;
- $flags = FlaggedRevs::quickTags( FR_CHECKED ); // Assume basic level
- while( $blockEnd <= $end ) {
- echo "...doing page_id from $blockStart to $blockEnd\n";
- $cond = "page_id BETWEEN $blockStart AND $blockEnd";
- $res = $db->select( 'page',
array('page_id','page_latest','page_namespace','page_title'),
- array( $cond, 'page_namespace' =>
$wgFlaggedRevsNamespaces ),
- __FUNCTION__ );
- # Go through and autoreview the current version of every page...
- foreach( $res as $row ) {
- $title = Title::makeTitle( $row->page_namespace,
$row->page_title );
- $rev = Revision::newFromId( $row->page_latest );
- # Is it already reviewed?
- $frev = FlaggedRevision::newFromTitle( $title,
$row->page_latest, FR_MASTER );
- # Should exist, but to be safe...
- if( !$frev && $rev && FlaggedRevs::inReviewNamespace(
$title ) ) {
- $article = new Article( $title );
- $db->begin();
- FlaggedRevs::autoReviewEdit( $article, $user,
$rev, $flags, true );
- FlaggedRevs::HTMLCacheUpdates(
$article->getTitle() );
- $db->commit();
- $changed++;
- }
- $count++;
- }
- $db->freeResult( $res );
- $blockStart += $BATCH_SIZE - 1;
- $blockEnd += $BATCH_SIZE - 1;
- wfWaitForSlaves( 5 );
- }
- echo "Auto-reviewing of all pages complete ... {$count} rows
[{$changed} changed]\n";
-}
-
Deleted: trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php
===================================================================
--- trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php 2011-10-13
06:29:51 UTC (rev 99671)
+++ trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php 2011-10-13
08:22:09 UTC (rev 99672)
@@ -1,29 +0,0 @@
-<?php
-
-if ( getenv( 'MW_INSTALL_PATH' ) ) {
- $IP = getenv( 'MW_INSTALL_PATH' );
-} else {
- $IP = dirname(__FILE__).'/../../..';
-}
-require "$IP/maintenance/commandLine.inc";
-require dirname(__FILE__) . '/reviewAllPages.inc';
-
-if( isset($options['help']) || !isset($args[0]) || !$args[0] ) {
- echo <<<TEXT
-Usage:
- php reviewAllPages.php --help
- php reviewAllPages.php <user ID>
-
- --help : This help message
- --<userid> : The ID of the existing user to use as the
"reviewer" (you can find your ID at Special:Preferences)
-
-TEXT;
- exit(0);
-}
-
-error_reporting( E_ALL );
-
-$db = wfGetDB( DB_MASTER );
-$user = User::newFromId( intval($args[0]) );
-
-autoreview_current( $user, $db );
Copied: trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php (from rev
99671, trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.inc)
===================================================================
--- trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php
(rev 0)
+++ trunk/extensions/FlaggedRevs/maintenance/reviewAllPages.php 2011-10-13
08:22:09 UTC (rev 99672)
@@ -0,0 +1,99 @@
+<?php
+/**
+ * @ingroup Maintenance
+ */
+if ( getenv( 'MW_INSTALL_PATH' ) ) {
+ $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+ $IP = dirname(__FILE__).'/../../..';
+}
+
+require_once( "$IP/maintenance/Maintenance.php" );
+
+class ReviewAllPages extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Review all pages in reviewable
namespaces. " .
+ "A user ID must be given to specifiy the \"reviewer\"
who accepted the pages.";
+ $this->addOption( 'username',
+ 'The user name of the existing user to use as the
"reviewer"', true, true );
+ $this->setBatchSize( 100 );
+ }
+
+ public function execute() {
+ $user = User::newFromName( $this->getOption( 'username' ) );
+ $this->autoreview_current( $user );
+ }
+
+ protected function autoreview_current( User $user ) {
+ $this->output( "Auto-reviewing all current page versions...\n"
);
+ if ( !$user->getID() ) {
+ $this->output( "Invalid user specified." );
+ return;
+ } elseif ( !$user->isAllowed( 'review' ) ) {
+ $this->output( "User specified does not have \"review\"
rights." );
+ return;
+ }
+
+ $db = wfGetDB( DB_MASTER );
+
+ $this->output( "Reviewer username: " . $user->getName() . "\n"
);
+
+ $start = $db->selectField( 'page', 'MIN(page_id)', false,
__METHOD__ );
+ $end = $db->selectField( 'page', 'MAX(page_id)', false,
__METHOD__ );
+ if ( is_null( $start ) || is_null( $end ) ) {
+ $this->output( "...page table seems to be empty.\n" );
+ return;
+ }
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+ $count = 0;
+ $changed = 0;
+ $flags = FlaggedRevs::quickTags( FR_CHECKED ); // Assume basic
level
+
+ while ( $blockEnd <= $end ) {
+ $this->output( "...doing page_id from $blockStart to
$blockEnd\n" );
+ $res = $db->select( array( 'page', 'revision' ),
+ '*',
+ array( "page_id BETWEEN $blockStart AND
$blockEnd",
+ 'page_namespace' =>
FlaggedRevs::getReviewNamespaces(),
+ 'rev_id = page_latest' ),
+ __METHOD__
+ );
+ # Go through and autoreview the current version of
every page...
+ foreach ( $res as $row ) {
+ $title = Title::newFromRow( $row );
+ $rev = Revision::newFromRow( $row );
+ # Is it already reviewed?
+ $frev = FlaggedRevision::newFromTitle( $title,
$row->page_latest, FR_MASTER );
+ # Rev should exist, but to be safe...
+ if ( !$frev && $rev ) {
+ $article = new Article( $title );
+ $db->begin();
+ FlaggedRevs::autoReviewEdit( $article,
$user, $rev, $flags, true );
+ FlaggedRevs::HTMLCacheUpdates(
$article->getTitle() );
+ $db->commit();
+ $changed++;
+ }
+ $count++;
+ }
+ $db->freeResult( $res );
+ $blockStart += $this->mBatchSize - 1;
+ $blockEnd += $this->mBatchSize - 1;
+
+ // XXX: Don't let deferred jobs array get absurdly
large (bug 24375)
+ DeferredUpdates::doUpdates( 'commit' );
+
+ wfWaitForSlaves( 5 );
+ }
+
+ $this->output( "Auto-reviewing of all pages complete ..." .
+ "{$count} rows [{$changed} changed]\n" );
+ }
+}
+
+$maintClass = "ReviewAllPages";
+require_once( RUN_MAINTENANCE_IF_MAIN );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs