}
$pageId = $this->params['pageId'];
+
+ // Serialize links updates by page ID so they see each others' changes
+ $scopedLock = LinksUpdate::acquirePageLock( wfGetDB( DB_MASTER ), $pageId, 'job' );
+
if ( WikiPage::newFromID( $pageId, WikiPage::READ_LATEST ) ) {
// The page was restored somehow or something went wrong
$this->setLastError( "deleteLinks: Page #$pageId exists" );
return false;
}
+ $timestamp = isset( $this->params['timestamp'] ) ? $this->params['timestamp'] : null;
+
$page = WikiPage::factory( $this->title ); // title when deleted
- $update = new LinksDeletionUpdate( $page, $pageId );
+ $update = new LinksDeletionUpdate( $page, $pageId, $timestamp );
DataUpdate::runUpdates( [ $update ] );
return true;