private $countableCache = [];
/** @var bool */
private $disableStatisticsUpdate = false;
- private $usernamePrefix = 'imported';
- private $assignKnownUsers = false;
- private $triedCreations = [];
+ /** @var ExternalUserNames */
+ private $externalUserNames;
/**
* Creates an ImportXMLReader drawing from the source provided
$this->config = $config;
if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) {
- stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
+ stream_wrapper_register( 'uploadsource', UploadSourceAdapter::class );
}
$id = UploadSourceAdapter::registerSource( $source );
$this->setPageOutCallback( [ $this, 'finishImportPage' ] );
$this->importTitleFactory = new NaiveImportTitleFactory();
+ $this->externalUserNames = new ExternalUserNames( 'imported', false );
}
/**
if ( is_callable( $this->mNoticeCallback ) ) {
call_user_func( $this->mNoticeCallback, $msg, $params );
} else { # No ImportReporter -> CLI
- echo wfMessage( $msg, $params )->text() . "\n";
+ // T177997: the command line importers should call setNoticeCallback()
+ // for their own custom callback to echo the notice
+ wfDebug( wfMessage( $msg, $params )->text() . "\n" );
}
}
* @param bool $assignKnownUsers Whether to apply the prefix to usernames that exist locally
*/
public function setUsernamePrefix( $usernamePrefix, $assignKnownUsers ) {
- $this->usernamePrefix = rtrim( (string)$usernamePrefix, ':>' );
- $this->assignKnownUsers = (bool)$assignKnownUsers;
+ $this->externalUserNames = new ExternalUserNames( $usernamePrefix, $assignKnownUsers );
}
/**
$buffer = "";
while ( $this->reader->read() ) {
switch ( $this->reader->nodeType ) {
- case XMLReader::TEXT:
- case XMLReader::CDATA:
- case XMLReader::SIGNIFICANT_WHITESPACE:
- $buffer .= $this->reader->value;
- break;
- case XMLReader::END_ELEMENT:
- return $buffer;
+ case XMLReader::TEXT:
+ case XMLReader::CDATA:
+ case XMLReader::SIGNIFICANT_WHITESPACE:
+ $buffer .= $this->reader->value;
+ break;
+ case XMLReader::END_ELEMENT:
+ return $buffer;
}
}
}
if ( !isset( $logInfo['contributor']['username'] ) ) {
- $revision->setUsername( $this->usernamePrefix . '>Unknown user' );
+ $revision->setUsername( $this->externalUserNames->addPrefix( 'Unknown user' ) );
} else {
- $revision->setUsername( $this->prefixUsername( $logInfo['contributor']['username'] ) );
+ $revision->setUsername(
+ $this->externalUserNames->applyPrefix( $logInfo['contributor']['username'] )
+ );
}
return $this->logItemCallback( $revision );
if ( isset( $revisionInfo['contributor']['ip'] ) ) {
$revision->setUserIP( $revisionInfo['contributor']['ip'] );
} elseif ( isset( $revisionInfo['contributor']['username'] ) ) {
- $revision->setUsername( $this->prefixUsername( $revisionInfo['contributor']['username'] ) );
+ $revision->setUsername(
+ $this->externalUserNames->applyPrefix( $revisionInfo['contributor']['username'] )
+ );
} else {
- $revision->setUsername( $this->usernamePrefix . '>Unknown user' );
+ $revision->setUsername( $this->externalUserNames->addPrefix( 'Unknown user' ) );
}
if ( isset( $revisionInfo['sha1'] ) ) {
$revision->setSha1Base36( $revisionInfo['sha1'] );
$revision->setUserIP( $uploadInfo['contributor']['ip'] );
}
if ( isset( $uploadInfo['contributor']['username'] ) ) {
- $revision->setUsername( $this->prefixUsername( $uploadInfo['contributor']['username'] ) );
+ $revision->setUsername(
+ $this->externalUserNames->applyPrefix( $uploadInfo['contributor']['username'] )
+ );
}
$revision->setNoUpdates( $this->mNoUpdates );
return call_user_func( $this->mUploadCallback, $revision );
}
- /**
- * Add an interwiki prefix to the username, if appropriate
- * @since 1.31
- * @param string $name Name being imported
- * @return string Name, possibly with the prefix prepended.
- */
- protected function prefixUsername( $name ) {
- if ( !User::isUsableName( $name ) ) {
- return $name;
- }
-
- if ( $this->assignKnownUsers ) {
- if ( User::idFromName( $name ) ) {
- return $name;
- }
-
- // See if any extension wants to create it.
- if ( !isset( $this->triedCreations[$name] ) ) {
- $this->triedCreations[$name] = true;
- if ( !Hooks::run( 'ImportHandleUnknownUser', [ $name ] ) &&
- User::idFromName( $name, User::READ_LATEST )
- ) {
- return $name;
- }
- }
- }
-
- return substr( $this->usernamePrefix . '>' . $name, 0, 255 );
- }
-
/**
* @return array
*/