+ /**
+ * Set a target root page under which all pages are imported
+ * @param $rootpage
+ * @return status object
+ */
+ public function setTargetRootPage( $rootpage ) {
+ $status = Status::newGood();
+ if( is_null( $rootpage ) ) {
+ // No rootpage
+ $this->mTargetRootPage = null;
+ } elseif( $rootpage !== '' ) {
+ $rootpage = rtrim( $rootpage, '/' ); //avoid double slashes
+ $title = Title::newFromText( $rootpage, !is_null( $this->mTargetNamespace ) ? $this->mTargetNamespace : NS_MAIN );
+ if( !$title || $title->isExternal() ) {
+ $status->fatal( 'import-rootpage-invalid' );
+ } else {
+ if( !MWNamespace::hasSubpages( $title->getNamespace() ) ) {
+ global $wgContLang;
+
+ $displayNSText = $title->getNamespace() == NS_MAIN
+ ? wfMessage( 'blanknamespace' )->text()
+ : $wgContLang->getNsText( $title->getNamespace() );
+ $status->fatal( 'import-rootpage-nosubpage', $displayNSText );
+ } else {
+ // set namespace to 'all', so the namespace check in processTitle() can passed
+ $this->setTargetNamespace( null );
+ $this->mTargetRootPage = $title->getPrefixedDBKey();
+ }
+ }
+ }
+ return $status;
+ }
+