/**
* Helper class for the --prefetch option of dumpTextPass.php
*
+ * Copyright © 2005 Brion Vibber <brion@pobox.com>
+ * http://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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
*/
* - text contents are immutable and should not change once
* recorded, so the previous dump is a reliable source
*
- * Requires the XMLReader PECL extension.
* @ingroup Maintenance
*/
class BaseDump {
var $atPageEnd = false;
var $lastPage = 0;
var $lastRev = 0;
+ var $infiles = null;
function BaseDump( $infile ) {
+ $this->infiles = explode( ';', $infile );
$this->reader = new XMLReader();
- $this->reader->open( $infile );
+ $infile = array_shift( $this->infiles );
+ if ( defined( 'LIBXML_PARSEHUGE' ) ) {
+ $this->reader->open( $infile, null, LIBXML_PARSEHUGE );
+ }
+ else {
+ $this->reader->open( $infile );
+ }
}
/**
$this->atPageEnd = false;
}
} else {
- $this->atEnd = true;
+ $this->close();
+ if ( count( $this->infiles ) ) {
+ $infile = array_shift( $this->infiles );
+ $this->reader->open( $infile );
+ $this->atEnd = false;
+ }
}
}
/**
* @access private
+ * @return string
*/
function nextText() {
$this->skipTo( 'text' );
/**
* @access private
+ * @param $name string
+ * @param $parent string
+ * @return bool|null
*/
function skipTo( $name, $parent = 'page' ) {
if ( $this->atEnd ) {
}
$buffer = "";
while ( $this->reader->read() ) {
- switch( $this->reader->nodeType ) {
+ switch ( $this->reader->nodeType ) {
case XMLReader::TEXT:
// case XMLReader::WHITESPACE:
case XMLReader::SIGNIFICANT_WHITESPACE:
/**
* @access private
+ * @return null
*/
function close() {
$this->reader->close();