The script can be re-run (in some cases at least!) to fix up incomplete migrations...
[lhc/web/wiklou.git] / maintenance / rollbackEdits.php
index 5d6a80a..3e57e01 100644 (file)
@@ -21,7 +21,7 @@
  * @ingroup Maintenance
  */
 
-require_once( dirname(__FILE__) . '/Maintenance.php' );
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class RollbackEdits extends Maintenance {
        public function __construct() {
@@ -36,7 +36,7 @@ class RollbackEdits extends Maintenance {
        public function execute() {
                $user = $this->getOption( 'user' );
                $username = User::isIP( $user ) ? $user : User::getCanonicalName( $user );
-               if( !$username ) {
+               if ( !$username ) {
                        $this->error( 'Invalid username', true );
                }
 
@@ -44,10 +44,10 @@ class RollbackEdits extends Maintenance {
                $summary = $this->getOption( 'summary', $this->mSelf . ' mass rollback' );
                $titles = array();
                $results = array();
-               if( $this->hasOption( 'titles' ) ) {
-                       foreach( explode( '|', $this->getOption( 'titles' ) ) as $title ) {
+               if ( $this->hasOption( 'titles' ) ) {
+                       foreach ( explode( '|', $this->getOption( 'titles' ) ) as $title ) {
                                $t = Title::newFromText( $title );
-                               if( !$t ) {
+                               if ( !$t ) {
                                        $this->error( 'Invalid title, ' . $title );
                                } else {
                                        $titles[] = $t;
@@ -57,15 +57,17 @@ class RollbackEdits extends Maintenance {
                        $titles = $this->getRollbackTitles( $user );
                }
 
-               if( !$titles ) {
+               if ( !$titles ) {
                        $this->output( 'No suitable titles to be rolled back' );
                        return;
                }
 
-               foreach( $titles as $t ) {
-                       $a = new Article( $t );
-                       $this->output( 'Processing ' . $t->getPrefixedText() . '...' );
-                       if( !$a->commitRollback( $user, $summary, $bot, $results ) ) {
+               $doer = User::newFromName( 'Maintenance script' );
+
+               foreach ( $titles as $t ) {
+                       $page = WikiPage::factory( $t );
+                       $this->output( 'Processing ' . $t->getPrefixedText() . '... ' );
+                       if ( !$page->commitRollback( $user, $summary, $bot, $results, $doer ) ) {
                                $this->output( "done\n" );
                        } else {
                                $this->output( "failed\n" );
@@ -76,6 +78,7 @@ class RollbackEdits extends Maintenance {
        /**
         * Get all pages that should be rolled back for a given user
         * @param $user String a name to check against rev_user_text
+        * @return array
         */
        private function getRollbackTitles( $user ) {
                $dbr = wfGetDB( DB_SLAVE );
@@ -86,7 +89,7 @@ class RollbackEdits extends Maintenance {
                        array( 'page_latest = rev_id', 'rev_user_text' => $user ),
                        __METHOD__
                );
-               while( $row = $dbr->fetchObject( $results ) ) {
+               foreach ( $results as $row ) {
                        $titles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
                }
                return $titles;
@@ -94,4 +97,4 @@ class RollbackEdits extends Maintenance {
 }
 
 $maintClass = 'RollbackEdits';
-require_once( DO_MAINTENANCE );
+require_once( RUN_MAINTENANCE_IF_MAIN );