RepoGroup::singleton()->clearCache( $this->newTitle ); # clear false negative cache
}
- $dbw->begin( __METHOD__ ); # If $file was a LocalFile, its transaction would have closed our own.
+ $dbw->startAtomic( __METHOD__ );
$pageid = $this->oldTitle->getArticleID( Title::GAID_FOR_UPDATE );
$protected = $this->oldTitle->isProtected();
__METHOD__,
array( 'IGNORE' )
);
- # Update the protection log
- $log = new LogPage( 'protect' );
+
+ // Build comment for log
$comment = wfMessage(
'prot_1movedto2',
$this->oldTitle->getPrefixedText(),
if ( $reason ) {
$comment .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $reason;
}
- // @todo FIXME: $params?
- $logId = $log->addEntry(
- 'move_prot',
- $this->newTitle,
- $comment,
- array( $this->oldTitle->getPrefixedText() ),
- $user
- );
// reread inserted pr_ids for log relation
$insertedPrIds = $dbw->select(
foreach ( $insertedPrIds as $prid ) {
$logRelationsValues[] = $prid->pr_id;
}
- $log->addRelations( 'pr_id', $logRelationsValues, $logId );
+
+ // Update the protection log
+ $logEntry = new ManualLogEntry( 'protect', 'move_prot' );
+ $logEntry->setTarget( $this->newTitle );
+ $logEntry->setComment( $comment );
+ $logEntry->setPerformer( $user );
+ $logEntry->setParameters( array(
+ '4::oldtitle' => $this->oldTitle->getPrefixedText(),
+ ) );
+ $logEntry->setRelations( array( 'pr_id' => $logRelationsValues ) );
+ $logId = $logEntry->insert();
+ $logEntry->publish( $logId );
}
// Update *_from_namespace fields as needed
WatchedItem::duplicateEntries( $this->oldTitle, $this->newTitle );
}
- $dbw->commit( __METHOD__ );
-
Hooks::run(
- 'TitleMoveComplete',
- array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason )
+ 'TitleMoveCompleting',
+ array( $this->oldTitle, $this->newTitle, $user, $pageid, $redirid, $reason )
);
+
+ $dbw->endAtomic( __METHOD__ );
+
+ $params = array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason );
+ $dbw->onTransactionIdle( function () use ( $params, $dbw ) {
+ // Keep each single hook handler atomic
+ $dbw->setFlag( DBO_TRX ); // flag is automatically reset by DB layer
+ Hooks::run( 'TitleMoveComplete', $params );
+ } );
+
return Status::newGood();
}