// Convert into a Status object
if ( $errors ) {
foreach ( $errors as $error ) {
- call_user_func_array( [ $status, 'fatal' ], $error );
+ $status->fatal( ...$error );
}
}
return $permCheck;
}
+ $this->dbw->startAtomic( __METHOD__ );
+
$this->dbw->update(
'revision',
[ 'rev_page' => $this->dest->getArticleID() ],
// Check if this did anything
$this->revisionsMerged = $this->dbw->affectedRows();
if ( $this->revisionsMerged < 1 ) {
+ $this->dbw->endAtomic( __METHOD__ );
$status->fatal( 'mergehistory-fail-no-change' );
+
return $status;
}
// Make the source page a redirect if no revisions are left
- $haveRevisions = $this->dbw->selectField(
+ $haveRevisions = $this->dbw->lockForUpdate(
'revision',
- 'rev_timestamp',
[ 'rev_page' => $this->source->getArticleID() ],
- __METHOD__,
- [ 'FOR UPDATE' ]
+ __METHOD__
);
if ( !$haveRevisions ) {
if ( $reason ) {
Hooks::run( 'ArticleMergeComplete', [ $this->source, $this->dest ] );
+ $this->dbw->endAtomic( __METHOD__ );
+
return $status;
}
}