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

Reply via email to