Merge "Move around "ا" to after "آ" and not before"
[lhc/web/wiklou.git] / maintenance / orphans.php
index e4f3e91..644fb95 100644 (file)
@@ -30,6 +30,8 @@
 
 require_once __DIR__ . '/Maintenance.php';
 
+use Wikimedia\Rdbms\IMaintainableDatabase;
+
 /**
  * Maintenance script that looks for 'orphan' revisions hooked to pages which
  * don't exist and 'childless' pages with no revisions.
@@ -56,8 +58,8 @@ class Orphans extends Maintenance {
 
        /**
         * Lock the appropriate tables for the script
-        * @param Database $db
-        * @param string $extraTable The name of any extra tables to lock (eg: text)
+        * @param IMaintainableDatabase $db
+        * @param string[] $extraTable The name of any extra tables to lock (eg: text)
         */
        private function lockTables( $db, $extraTable = [] ) {
                $tbls = [ 'page', 'revision', 'redirect' ];
@@ -73,20 +75,24 @@ class Orphans extends Maintenance {
         */
        private function checkOrphans( $fix ) {
                $dbw = $this->getDB( DB_MASTER );
-               $page = $dbw->tableName( 'page' );
-               $revision = $dbw->tableName( 'revision' );
+               $commentStore = new CommentStore( 'rev_comment' );
 
                if ( $fix ) {
                        $this->lockTables( $dbw );
                }
 
+               $commentQuery = $commentStore->getJoin();
+
                $this->output( "Checking for orphan revision table entries... "
                        . "(this may take a while on a large wiki)\n" );
-               $result = $dbw->query( "
-                       SELECT *
-                       FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id
-                       WHERE page_id IS NULL
-               " );
+               $result = $dbw->select(
+                       [ 'revision', 'page' ] + $commentQuery['tables'],
+                       [ 'rev_id', 'rev_page', 'rev_timestamp', 'rev_user_text' ] + $commentQuery['fields'],
+                       [ 'page_id' => null ],
+                       __METHOD__,
+                       [],
+                       [ 'page' => [ 'LEFT JOIN', [ 'rev_page=page_id' ] ] ] + $commentQuery['joins']
+               );
                $orphans = $result->numRows();
                if ( $orphans > 0 ) {
                        global $wgContLang;
@@ -98,9 +104,10 @@ class Orphans extends Maintenance {
                        ) );
 
                        foreach ( $result as $row ) {
-                               $comment = ( $row->rev_comment == '' )
-                                       ? ''
-                                       : '(' . $wgContLang->truncate( $row->rev_comment, 40 ) . ')';
+                               $comment = $commentStore->getComment( $row )->text;
+                               if ( $comment !== '' ) {
+                                       $comment = '(' . $wgContLang->truncate( $comment, 40 ) . ')';
+                               }
                                $this->output( sprintf( "%10d %10d %14s %20s %s\n",
                                        $row->rev_id,
                                        $row->rev_page,