X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FrenderDump.php;h=78c5b6f31e0e8909e766db3d404add4ebf834ad2;hb=cdbfe8db8673f25c3caf70a1dc8c9b23dad54f45;hp=fe2d22b6b7146bd7c75a4e053337e019e579d890;hpb=59b60fc31194b3b09bba2c95b8ddf85c3f9e81bb;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/renderDump.php b/maintenance/renderDump.php index fe2d22b6b7..78c5b6f31e 100644 --- a/maintenance/renderDump.php +++ b/maintenance/renderDump.php @@ -27,8 +27,8 @@ * @file * @ingroup Maintenance */ - -require_once( "Maintenance.php" ); + +require_once( dirname( __FILE__ ) . '/Maintenance.php' ); class DumpRenderer extends Maintenance { @@ -38,29 +38,46 @@ class DumpRenderer extends Maintenance { public function __construct() { parent::__construct(); $this->mDescription = "Take page text out of an XML dump file and render basic HTML out to files"; - $this->addParam( 'output-dir', 'The directory to output the HTML files to', true, true ); + $this->addOption( 'output-dir', 'The directory to output the HTML files to', true, true ); + $this->addOption( 'prefix', 'Prefix for the rendered files (defaults to wiki)', false, true ); + $this->addOption( 'parser', 'Use an alternative parser class', false, true ); } public function execute() { $this->outputDirectory = $this->getOption( 'output-dir' ); + $this->prefix = $this->getOption( 'prefix', 'wiki' ); $this->startTime = wfTime(); + if ( $this->hasOption( 'parser' ) ) { + global $wgParserConf; + $wgParserConf['class'] = $this->getOption( 'parser' ); + $this->prefix .= "-{$wgParserConf['class']}"; + } + $source = new ImportStreamSource( $this->getStdin() ); $importer = new WikiImporter( $source ); $importer->setRevisionCallback( array( &$this, 'handleRevision' ) ); - return $importer->doImport(); + $importer->doImport(); + + $delta = wfTime() - $this->startTime; + $this->error( "Rendered {$this->count} pages in " . round($delta, 2) . " seconds " ); + if ($delta > 0) + $this->error( round($this->count / $delta, 2) . " pages/sec" ); + $this->error( "\n" ); } - + /** * Callback function for each revision, turn into HTML and save * @param $rev Revision */ - private function handleRevision( $rev ) { + public function handleRevision( $rev ) { + global $wgParserConf; + $title = $rev->getTitle(); - if (!$title) { + if ( !$title ) { $this->error( "Got bogus revision with null title!" ); return; } @@ -69,15 +86,15 @@ class DumpRenderer extends Maintenance { $this->count++; $sanitized = rawurlencode( $display ); - $filename = sprintf( "%s/wiki-%07d-%s.html", + $filename = sprintf( "%s/%s-%07d-%s.html", $this->outputDirectory, + $this->prefix, $this->count, $sanitized ); - $this->output( sprintf( $this->stderr, "%s\n", $filename, $display ) ); + $this->output( sprintf( "%s\n", $filename, $display ) ); - // fixme (what?) $user = new User(); - $parser = new Parser(); + $parser = new $wgParserConf['class'](); $options = ParserOptions::newFromUser( $user ); $output = $parser->parse( $rev->getText(), $title, $options ); @@ -89,7 +106,7 @@ class DumpRenderer extends Maintenance { "\n" . "\n" . "" . htmlspecialchars( $display ) . "\n" . - "\n" . + "\n" . "\n" . $output->getText() . "\n" . @@ -98,4 +115,4 @@ class DumpRenderer extends Maintenance { } $maintClass = "DumpRenderer"; -require_once( DO_MAINTENANCE ); +require_once( RUN_MAINTENANCE_IF_MAIN );