From 54e0ef00ddc94ad129f5ec531f61af2ddbe778a3 Mon Sep 17 00:00:00 2001 From: umherirrender Date: Thu, 8 Oct 2015 21:26:56 +0200 Subject: [PATCH] Set correct parentid on import When importing over an existing page the parentid is set to the latest rev id of the page, which makes the size diff in history unusable. The import constructs the Revision object without a parentid and than Revision::getPreviousRevisionId is using the page_latest field to propagate the missing parentid. Avoid this bad propagate by select the previous revision id depending on timestamp before construct of the Revision object. Bug: T114806 Change-Id: Iee44d5a74de459f733ea62373cdbe9911e77083f --- includes/Import.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/includes/Import.php b/includes/Import.php index 60d4a1f842..33ab4eaced 100644 --- a/includes/Import.php +++ b/includes/Import.php @@ -1606,6 +1606,20 @@ class WikiRevision { } } + // Select previous version to make size diffs correct + $prevId = $dbw->selectField( 'revision', 'rev_id', + array( + 'rev_page' => $pageId, + 'rev_timestamp <= ' . $dbw->timestamp( $this->timestamp ), + ), + __METHOD__, + array( 'ORDER BY' => array( + 'rev_timestamp DESC', + 'rev_id DESC', // timestamp is not unique per page + ) + ) + ); + # @todo FIXME: Use original rev_id optionally (better for backups) # Insert the row $revision = new Revision( array( @@ -1620,6 +1634,7 @@ class WikiRevision { 'user_text' => $userText, 'timestamp' => $this->timestamp, 'minor_edit' => $this->minor, + 'parent_id' => $prevId, ) ); $revision->insertOn( $dbw ); $changed = $page->updateIfNewerOn( $dbw, $revision ); -- 2.20.1