* implements Special:Import
* @ingroup SpecialPage
*/
-class ImportXMLReader {
+class WikiImporter {
private $reader = null;
private $mLogItemCallback, $mUploadCallback, $mRevisionCallback, $mPageCallback;
private $mSiteInfoCallback, $mTargetNamespace, $mPageOutCallback;
private $mDebug;
+ /**
+ * Creates an ImportXMLReader drawing from the source provided
+ */
function __construct( $source ) {
$this->reader = new XMLReader();
$this->setLogItemCallback( array( $this, 'importLogItem' ) );
}
- function throwXmlError( $err ) {
+ private function throwXmlError( $err ) {
$this->debug( "FAILURE: $err" );
wfDebug( "WikiImporter XML error: $err\n" );
}
- function debug( $data ) {
+ private function debug( $data ) {
if( $this->mDebug ) {
wfDebug( "IMPORT: $data\n" );
}
}
- function warn( $data ) {
+ private function warn( $data ) {
wfDebug( "IMPORT: $data\n" );
}
- function notice( $data ) {
+ private function notice( $data ) {
global $wgCommandLineMode;
if( $wgCommandLineMode ) {
print "$data\n";
* @param $callback callback
* @return callback
*/
- function setPageCallback( $callback ) {
+ public function setPageCallback( $callback ) {
$previous = $this->mPageCallback;
$this->mPageCallback = $callback;
return $previous;
* @param $callback callback
* @return callback
*/
- function setPageOutCallback( $callback ) {
+ public function setPageOutCallback( $callback ) {
$previous = $this->mPageOutCallback;
$this->mPageOutCallback = $callback;
return $previous;
* @param $callback callback
* @return callback
*/
- function setRevisionCallback( $callback ) {
+ public function setRevisionCallback( $callback ) {
$previous = $this->mRevisionCallback;
$this->mRevisionCallback = $callback;
return $previous;
* @param $callback callback
* @return callback
*/
- function setUploadCallback( $callback ) {
+ public function setUploadCallback( $callback ) {
$previous = $this->mUploadCallback;
$this->mUploadCallback = $callback;
return $previous;
* @param $callback callback
* @return callback
*/
- function setLogItemCallback( $callback ) {
+ public function setLogItemCallback( $callback ) {
$previous = $this->mLogItemCallback;
$this->mLogItemCallback = $callback;
return $previous;
* @param $callback callback
* @return callback
*/
- function setSiteInfoCallback( $callback ) {
+ public function setSiteInfoCallback( $callback ) {
$previous = $this->mSiteInfoCallback;
$this->mSiteInfoCallback = $callback;
return $previous;
/**
* Set a target namespace to override the defaults
*/
- function setTargetNamespace( $namespace ) {
+ public function setTargetNamespace( $namespace ) {
if( is_null( $namespace ) ) {
// Don't override namespaces
$this->mTargetNamespace = null;
/**
* Default per-revision callback, performs the import.
* @param $revision WikiRevision
- * @private
*/
- function importRevision( $revision ) {
+ public function importRevision( $revision ) {
$dbw = wfGetDB( DB_MASTER );
return $dbw->deadlockLoop( array( $revision, 'importOldRevision' ) );
}
/**
* Default per-revision callback, performs the import.
* @param $rev WikiRevision
- * @private
*/
- function importLogItem( $rev ) {
+ public function importLogItem( $rev ) {
$dbw = wfGetDB( DB_MASTER );
return $dbw->deadlockLoop( array( $rev, 'importLogItem' ) );
}
/**
* Dummy for now...
*/
- function importUpload( $revision ) {
+ public function importUpload( $revision ) {
//$dbw = wfGetDB( DB_MASTER );
//return $dbw->deadlockLoop( array( $revision, 'importUpload' ) );
return false;
/**
* Alternate per-revision callback, for debugging.
* @param $revision WikiRevision
- * @private
*/
- function debugRevisionHandler( &$revision ) {
+ public function debugRevisionHandler( &$revision ) {
$this->debug( "Got revision:" );
if( is_object( $revision->title ) ) {
$this->debug( "-- Title: " . $revision->title->getPrefixedText() );
/**
* Notify the callback function when a new <page> is reached.
* @param $title Title
- * @private
*/
function pageCallback( $title ) {
if( is_callable( $this->mPageCallback ) ) {
* @param $origTitle Title
* @param $revisionCount int
* @param $successCount Int: number of revisions for which callback returned true
- * @private
*/
- function pageOutCallback( $title, $origTitle, $revisionCount, $successCount ) {
+ private function pageOutCallback( $title, $origTitle, $revisionCount, $successCount ) {
if( is_callable( $this->mPageOutCallback ) ) {
call_user_func_array( $this->mPageOutCallback,
array( $title, $origTitle, $revisionCount, $successCount ) );
}
}
- function revisionCallback( $revision ) {
+ /**
+ * Notify the callback function of a revision
+ * @param $revision A WikiRevision object
+ */
+ private function revisionCallback( $revision ) {
if ( is_callable( $this->mRevisionCallback ) ) {
return call_user_func_array( $this->mRevisionCallback,
array( $revision, $this ) );
}
}
- function logItemCallback( $revision ) {
+ /**
+ * Notify the callback function of a new log item
+ * @param $revision A WikiRevision object
+ */
+ private function logItemCallback( $revision ) {
if ( is_callable( $this->mLogItemCallback ) ) {
return call_user_func_array( $this->mLogItemCallback,
array( $revision, $this ) );
* @return string
* @access private
*/
- function nodeContents() {
+ private function nodeContents() {
if( $this->reader->isEmptyElement ) {
return "";
}
# --------------
- function dumpElement() {
+ /** Left in for debugging */
+ private function dumpElement() {
static $lookup = null;
if (!$lookup) {
$xmlReaderConstants = array(
)."\n\n" );
}
- function doImport() {
+ /**
+ * Primary entry point
+ */
+ public function doImport() {
$this->reader->read();
if ( $this->reader->name != 'mediawiki' ) {
return true;
}
- function handleSiteInfo() {
+ private function handleSiteInfo() {
// Site info is useful, but not actually used for dump imports.
// Includes a quick short-circuit to save performance.
if ( ! $this->mSiteInfoCallback ) {
throw new MWException( "SiteInfo tag is not yet handled, do not set mSiteInfoCallback" );
}
- function handleLogItem() {
+ private function handleLogItem() {
$this->debug( "Enter log item handler." );
$logInfo = array();
$this->processLogItem( $logInfo );
}
- function processLogItem( $logInfo ) {
+ private function processLogItem( $logInfo ) {
$revision = new WikiRevision;
$revision->setID( $logInfo['id'] );
return $this->logItemCallback( $revision );
}
- function handlePage() {
+ private function handlePage() {
// Handle page data.
$this->debug( "Enter page handler." );
$pageInfo = array( 'revisionCount' => 0, 'successfulRevisionCount' => 0 );
$pageInfo['successfulRevisionCount'] );
}
- function handleRevision( &$pageInfo ) {
+ private function handleRevision( &$pageInfo ) {
$this->debug( "Enter revision handler" );
$revisionInfo = array();
}
}
- function processRevision( $pageInfo, $revisionInfo ) {
+ private function processRevision( $pageInfo, $revisionInfo ) {
$revision = new WikiRevision;
$revision->setID( $revisionInfo['id'] );
return $this->revisionCallback( $revision );
}
- function handleUpload( &$pageInfo ) {
+ private function handleUpload( &$pageInfo ) {
$this->debug( "Enter upload handler" );
$uploadInfo = array();
return $this->processUpload( $pageInfo, $uploadInfo );
}
- function processUpload( $pageInfo, $uploadInfo ) {
+ private function processUpload( $pageInfo, $uploadInfo ) {
$revision = new WikiRevision;
$revision->setTitle( $pageInfo['_title'] );
return $this->uploadCallback( $revision );
}
- function handleContributor() {
+ private function handleContributor() {
$fields = array( 'id', 'ip', 'username' );
$info = array();
return $info;
}
- function processTitle( $text ) {
+ private function processTitle( $text ) {
$workTitle = $text;
$origTitle = Title::newFromText( $workTitle );
$title = null;
}
}
+/** This is a horrible hack used to keep source compatibility */
class UploadSourceAdapter {
static $sourceRegistrations = array();