Handle missing titles and usernames when importing log items
Bug: T121338 Change-Id: Idf95263e4f22225509da4ee07fcb14383028894b
This commit is contained in:
parent
f5db0b307b
commit
b14d581dab
2 changed files with 43 additions and 10 deletions
|
|
@ -660,14 +660,26 @@ class WikiImporter {
|
|||
* @return bool|mixed
|
||||
*/
|
||||
private function processLogItem( $logInfo ) {
|
||||
|
||||
$revision = new WikiRevision( $this->config );
|
||||
|
||||
$revision->setID( $logInfo['id'] );
|
||||
if ( isset( $logInfo['id'] ) ) {
|
||||
$revision->setID( $logInfo['id'] );
|
||||
}
|
||||
$revision->setType( $logInfo['type'] );
|
||||
$revision->setAction( $logInfo['action'] );
|
||||
$revision->setTimestamp( $logInfo['timestamp'] );
|
||||
$revision->setParams( $logInfo['params'] );
|
||||
$revision->setTitle( Title::newFromText( $logInfo['logtitle'] ) );
|
||||
if ( isset( $logInfo['timestamp'] ) ) {
|
||||
$revision->setTimestamp( $logInfo['timestamp'] );
|
||||
}
|
||||
if ( isset( $logInfo['params'] ) ) {
|
||||
$revision->setParams( $logInfo['params'] );
|
||||
}
|
||||
if ( isset( $logInfo['logtitle'] ) ) {
|
||||
// @todo Using Title for non-local titles is a recipe for disaster.
|
||||
// We should use ForeignTitle here instead.
|
||||
$revision->setTitle( Title::newFromText( $logInfo['logtitle'] ) );
|
||||
}
|
||||
|
||||
$revision->setNoUpdates( $this->mNoUpdates );
|
||||
|
||||
if ( isset( $logInfo['comment'] ) ) {
|
||||
|
|
@ -677,7 +689,10 @@ class WikiImporter {
|
|||
if ( isset( $logInfo['contributor']['ip'] ) ) {
|
||||
$revision->setUserIP( $logInfo['contributor']['ip'] );
|
||||
}
|
||||
if ( isset( $logInfo['contributor']['username'] ) ) {
|
||||
|
||||
if ( !isset( $logInfo['contributor']['username'] ) ) {
|
||||
$revision->setUsername( 'Unknown user' );
|
||||
} else {
|
||||
$revision->setUserName( $logInfo['contributor']['username'] );
|
||||
}
|
||||
|
||||
|
|
@ -1655,6 +1670,16 @@ class WikiRevision {
|
|||
|
||||
function importLogItem() {
|
||||
$dbw = wfGetDB( DB_MASTER );
|
||||
|
||||
$user = User::newFromName( $this->getUser() );
|
||||
if ( $user ) {
|
||||
$userId = intval( $user->getId() );
|
||||
$userText = $user->getName();
|
||||
} else {
|
||||
$userId = 0;
|
||||
$userText = $this->getUser();
|
||||
}
|
||||
|
||||
# @todo FIXME: This will not record autoblocks
|
||||
if ( !$this->getTitle() ) {
|
||||
wfDebug( __METHOD__ . ": skipping invalid {$this->type}/{$this->action} log time, timestamp " .
|
||||
|
|
@ -1687,8 +1712,8 @@ class WikiRevision {
|
|||
'log_type' => $this->type,
|
||||
'log_action' => $this->action,
|
||||
'log_timestamp' => $dbw->timestamp( $this->timestamp ),
|
||||
'log_user' => User::idFromName( $this->user_text ),
|
||||
# 'log_user_text' => $this->user_text,
|
||||
'log_user' => $userId,
|
||||
'log_user_text' => $userText,
|
||||
'log_namespace' => $this->getTitle()->getNamespace(),
|
||||
'log_title' => $this->getTitle()->getDBkey(),
|
||||
'log_comment' => $this->getComment(),
|
||||
|
|
|
|||
|
|
@ -135,16 +135,24 @@ TEXT;
|
|||
* @return bool
|
||||
*/
|
||||
private function skippedNamespace( $obj ) {
|
||||
$title = null;
|
||||
if ( $obj instanceof Title ) {
|
||||
$ns = $obj->getNamespace();
|
||||
$title = $obj;
|
||||
} elseif ( $obj instanceof Revision ) {
|
||||
$ns = $obj->getTitle()->getNamespace();
|
||||
$title = $obj->getTitle();
|
||||
} elseif ( $obj instanceof WikiRevision ) {
|
||||
$ns = $obj->title->getNamespace();
|
||||
$title = $obj->title;
|
||||
} else {
|
||||
throw new MWException( "Cannot get namespace of object in " . __METHOD__ );
|
||||
}
|
||||
|
||||
if ( is_null( $title ) ) {
|
||||
// Probably a log entry
|
||||
return false;
|
||||
}
|
||||
|
||||
$ns = $title->getNamespace();
|
||||
|
||||
return is_array( $this->nsFilter ) && !in_array( $ns, $this->nsFilter );
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue