Merge "Rewrite pref cleanup script"
[lhc/web/wiklou.git] / maintenance / attachLatest.php
index 2cf277f..897972c 100644 (file)
@@ -3,7 +3,7 @@
  * 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
@@ -33,19 +33,24 @@ require_once __DIR__ . '/Maintenance.php';
  * @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;
@@ -55,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" );
@@ -64,7 +69,8 @@ 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();
@@ -82,5 +88,5 @@ class AttachLatest extends Maintenance {
        }
 }
 
-$maintClass = "AttachLatest";
+$maintClass = AttachLatest::class;
 require_once RUN_MAINTENANCE_IF_MAIN;