private $mNoticeCallback, $mDebug;
private $mImportUploads, $mImageBasePath;
private $mNoUpdates = false;
+ private $pageOffset = 0;
/** @var Config */
private $config;
/** @var ImportTitleFactory */
* @param Config $config
* @throws Exception
*/
- function __construct( ImportSource $source, Config $config = null ) {
+ function __construct( ImportSource $source, Config $config ) {
if ( !class_exists( 'XMLReader' ) ) {
throw new Exception( 'Import requires PHP to have been compiled with libxml support' );
}
$this->reader = new XMLReader();
- if ( !$config ) {
- wfDeprecated( __METHOD__ . ' without a Config instance', '1.25' );
- $config = MediaWikiServices::getInstance()->getMainConfig();
- }
$this->config = $config;
if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) {
$this->mNoUpdates = $noupdates;
}
+ /**
+ * Sets 'pageOffset' value. So it will skip the first n-1 pages
+ * and start from the nth page. It's 1-based indexing.
+ * @param int $nthPage
+ * @since 1.29
+ */
+ function setPageOffset( $nthPage ) {
+ $this->pageOffset = $nthPage;
+ }
+
/**
* Set a callback that displays notice messages
*
* @return bool
*/
public function finishImportPage( $title, $foreignTitle, $revCount,
- $sRevCount, $pageInfo ) {
-
+ $sRevCount, $pageInfo
+ ) {
// Update article count statistics (T42009)
// The normal counting logic in WikiPage->doEditUpdates() is designed for
// one-revision-at-a-time editing, not bulk imports. In this situation it
/**
* Alternate per-revision callback, for debugging.
- * @param WikiRevision $revision
+ * @param WikiRevision &$revision
*/
public function debugRevisionHandler( &$revision ) {
$this->debug( "Got revision:" );
$keepReading = $this->reader->read();
$skip = false;
$rethrow = null;
+ $pageCount = 0;
try {
while ( $keepReading ) {
$tag = $this->reader->localName;
+ if ( $this->pageOffset ) {
+ if ( $tag === 'page' ) {
+ $pageCount++;
+ }
+ if ( $pageCount < $this->pageOffset ) {
+ $keepReading = $this->reader->next();
+ continue;
+ }
+ }
$type = $this->reader->nodeType;
if ( !Hooks::run( 'ImportHandleToplevelXMLTag', [ $this ] ) ) {
* @return bool|mixed
*/
private function processLogItem( $logInfo ) {
-
$revision = new WikiRevision( $this->config );
if ( isset( $logInfo['id'] ) ) {