The syntax check is done in a first read through the stream and after a valid document is detected the stream is rewind to read the real import from the begin. This is not possible with php stdin as used by importDump.php without a file as argument. As this is a maintenance scripts, it shoud be okay to trust the source of xml and assume it is always correct syntax. To check syntax it is necessary to use provide the filename to the script and not pipe it into stdin. Bug: T331992 Change-Id: I056f325bb2ccb9a0fe8245194baf2e73be13da68
81 lines
1.8 KiB
PHP
81 lines
1.8 KiB
PHP
<?php
|
|
/**
|
|
* MediaWiki page data importer.
|
|
*
|
|
* Copyright © 2003,2005 Brion Vibber <brion@pobox.com>
|
|
* https://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 SpecialPage
|
|
*/
|
|
|
|
/**
|
|
* Used for importing XML dumps where the content of the dump is in a string.
|
|
* This class is inefficient, and should only be used for small dumps.
|
|
* For larger dumps, ImportStreamSource should be used instead.
|
|
*
|
|
* @ingroup SpecialPage
|
|
*/
|
|
class ImportStringSource implements ImportSource {
|
|
/** @var string */
|
|
private $mString;
|
|
|
|
/** @var bool */
|
|
private $mRead = false;
|
|
|
|
/**
|
|
* @param string $string
|
|
*/
|
|
public function __construct( $string ) {
|
|
$this->mString = $string;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function atEnd() {
|
|
return $this->mRead;
|
|
}
|
|
|
|
/**
|
|
* @return bool|string
|
|
*/
|
|
public function readChunk() {
|
|
if ( $this->atEnd() ) {
|
|
return false;
|
|
}
|
|
$this->mRead = true;
|
|
return $this->mString;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isSeekable() {
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @param int $offset
|
|
* @return int
|
|
*/
|
|
public function seek( int $offset ) {
|
|
$this->mRead = false;
|
|
return 0;
|
|
}
|
|
}
|