Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
DumpRev
0.00% covered (danger)
0.00%
0 / 15
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 execute
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * Get the text of a revision, resolving external storage if needed.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * http://www.gnu.org/copyleft/gpl.html
19 *
20 * @file
21 * @ingroup Maintenance ExternalStorage
22 */
23
24use MediaWiki\Revision\SlotRecord;
25
26require_once __DIR__ . '/../Maintenance.php';
27
28/**
29 * Maintenance script that gets the text of a revision,
30 * resolving external storage if needed.
31 *
32 * @ingroup Maintenance ExternalStorage
33 */
34class DumpRev extends Maintenance {
35    public function __construct() {
36        parent::__construct();
37        $this->addArg( 'rev-id', 'Revision ID', true );
38    }
39
40    public function execute() {
41        $id = (int)$this->getArg( 0 );
42
43        $lookup = $this->getServiceContainer()->getRevisionLookup();
44        $rev = $lookup->getRevisionById( $id );
45        if ( !$rev ) {
46            $this->fatalError( "Row not found" );
47        }
48
49        $content = $rev->getContent( SlotRecord::MAIN );
50        if ( !$content ) {
51            $this->fatalError( "Text not found" );
52        }
53
54        $blobStore = $this->getServiceContainer()->getBlobStore();
55        $slot = $rev->getSlot( SlotRecord::MAIN );
56        $text = $blobStore->getBlob( $slot->getAddress() );
57
58        $this->output( "Text length: " . strlen( $text ) . "\n" );
59        $this->output( substr( $text, 0, 100 ) . "\n" );
60    }
61}
62
63$maintClass = DumpRev::class;
64require_once RUN_MAINTENANCE_IF_MAIN;