Merge "Improve docs for Title::getInternalURL/getCanonicalURL"
[lhc/web/wiklou.git] / maintenance / storage / dumpRev.php
index 437bfcd..7d9883e 100644 (file)
@@ -21,6 +21,9 @@
  * @ingroup Maintenance ExternalStorage
  */
 
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\SlotRecord;
+
 require_once __DIR__ . '/../Maintenance.php';
 
 /**
@@ -36,53 +39,27 @@ class DumpRev extends Maintenance {
        }
 
        public function execute() {
-               $dbr = $this->getDB( DB_REPLICA );
-               $row = $dbr->selectRow(
-                       [ 'text', 'revision' ],
-                       [ 'old_flags', 'old_text' ],
-                       [ 'old_id=rev_text_id', 'rev_id' => $this->getArg() ]
-               );
-               if ( !$row ) {
-                       $this->error( "Row not found", true );
-               }
+               $id = (int)$this->getArg( 0 );
 
-               $flags = explode( ',', $row->old_flags );
-               $text = $row->old_text;
-               if ( in_array( 'external', $flags ) ) {
-                       $this->output( "External $text\n" );
-                       if ( preg_match( '!^DB://(\w+)/(\w+)/(\w+)$!', $text, $m ) ) {
-                               $es = ExternalStore::getStoreObject( 'DB' );
-                               $blob = $es->fetchBlob( $m[1], $m[2], $m[3] );
-                               if ( strtolower( get_class( $blob ) ) == 'concatenatedgziphistoryblob' ) {
-                                       $this->output( "Found external CGZ\n" );
-                                       $blob->uncompress();
-                                       $this->output( "Items: (" . implode( ', ', array_keys( $blob->mItems ) ) . ")\n" );
-                                       $text = $blob->getItem( $m[3] );
-                               } else {
-                                       $this->output( "CGZ expected at $text, got " . gettype( $blob ) . "\n" );
-                                       $text = $blob;
-                               }
-                       } else {
-                               $this->output( "External plain $text\n" );
-                               $text = ExternalStore::fetchFromURL( $text );
-                       }
-               }
-               if ( in_array( 'gzip', $flags ) ) {
-                       $text = gzinflate( $text );
-               }
-               if ( in_array( 'object', $flags ) ) {
-                       $obj = unserialize( $text );
-                       $text = $obj->getText();
+               $lookup = MediaWikiServices::getInstance()->getRevisionLookup();
+               $rev = $lookup->getRevisionById( $id );
+               if ( !$rev ) {
+                       $this->fatalError( "Row not found" );
                }
 
-               if ( is_object( $text ) ) {
-                       $this->error( "Unexpectedly got object of type: " . get_class( $text ) );
-               } else {
-                       $this->output( "Text length: " . strlen( $text ) . "\n" );
-                       $this->output( substr( $text, 0, 100 ) . "\n" );
+               $content = $rev->getContent( SlotRecord::MAIN );
+               if ( !$content ) {
+                       $this->fatalError( "Text not found" );
                }
+
+               $blobStore = MediaWikiServices::getInstance()->getBlobStore();
+               $slot = $rev->getSlot( SlotRecord::MAIN );
+               $text = $blobStore->getBlob( $slot->getAddress() );
+
+               $this->output( "Text length: " . strlen( $text ) . "\n" );
+               $this->output( substr( $text, 0, 100 ) . "\n" );
        }
 }
 
-$maintClass = "DumpRev";
+$maintClass = DumpRev::class;
 require_once RUN_MAINTENANCE_IF_MAIN;