]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - maintenance/attachLatest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / maintenance / attachLatest.php
index e6287f43a7122865e17e48851967ba0d6686df06..36060d8371c473202d4026098dbd0db2776f1f06 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
- * quick hackjob to fix damages imports on wikisource
- * page records have page_latest wrong
+ * Corrects wrong values in the `page_latest` field in the database.
  *
  * Copyright © 2005 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
+ * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * @ingroup Maintenance
  */
 
-require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+require_once __DIR__ . '/Maintenance.php';
 
+/**
+ * Maintenance script to correct wrong values in the `page_latest` field
+ * in the database.
+ *
+ * @ingroup Maintenance
+ */
 class AttachLatest extends Maintenance {
-
        public function __construct() {
                parent::__construct();
                $this->addOption( "fix", "Actually fix the entries, will dry run otherwise" );
-               $this->mDescription = "Fix page_latest entries in the page table";
+               $this->addOption( "regenerate-all",
+                       "Regenerate the page_latest field for all records in table page" );
+               $this->addDescription( 'Fix page_latest entries in the page table' );
        }
 
        public function execute() {
                $this->output( "Looking for pages with page_latest set to 0...\n" );
-               $dbw = wfGetDB( DB_MASTER );
+               $dbw = $this->getDB( DB_MASTER );
+               $conds = [ 'page_latest' => 0 ];
+               if ( $this->hasOption( 'regenerate-all' ) ) {
+                       $conds = '';
+               }
                $result = $dbw->select( 'page',
-                       array( 'page_id', 'page_namespace', 'page_title' ),
-                       array( 'page_latest' => 0 ),
+                       [ 'page_id', 'page_namespace', 'page_title' ],
+                       $conds,
                        __METHOD__ );
 
                $n = 0;
@@ -50,7 +60,7 @@ class AttachLatest extends Maintenance {
                        $name = $title->getPrefixedText();
                        $latestTime = $dbw->selectField( 'revision',
                                'MAX(rev_timestamp)',
-                               array( 'rev_page' => $pageId ),
+                               [ 'rev_page' => $pageId ],
                                __METHOD__ );
                        if ( !$latestTime ) {
                                $this->output( wfWikiID() . " $pageId [[$name]] can't find latest rev time?!\n" );
@@ -59,14 +69,15 @@ class AttachLatest extends Maintenance {
 
                        $revision = Revision::loadFromTimestamp( $dbw, $title, $latestTime );
                        if ( is_null( $revision ) ) {
-                               $this->output( wfWikiID() . " $pageId [[$name]] latest time $latestTime, can't find revision id\n" );
+                               $this->output( wfWikiID()
+                                       . " $pageId [[$name]] latest time $latestTime, can't find revision id\n" );
                                continue;
                        }
                        $id = $revision->getId();
                        $this->output( wfWikiID() . " $pageId [[$name]] latest time $latestTime, rev id $id\n" );
                        if ( $this->hasOption( 'fix' ) ) {
-                               $article = new Article( $title );
-                               $article->updateRevisionOn( $dbw, $revision );
+                               $page = WikiPage::factory( $title );
+                               $page->updateRevisionOn( $dbw, $revision );
                        }
                        $n++;
                }
@@ -78,4 +89,4 @@ class AttachLatest extends Maintenance {
 }
 
 $maintClass = "AttachLatest";
-require_once( RUN_MAINTENANCE_IF_MAIN );
+require_once RUN_MAINTENANCE_IF_MAIN;