diff --git a/migrateToRevDel.php b/migrateToRevDel.php
index 4722106..4b9673b 100644
--- a/migrateToRevDel.php
+++ b/migrateToRevDel.php
@@ -79,26 +79,60 @@ class MigrateOversightRevisions extends Maintenance {
$insertData[$fieldPrefix . 'len'] = strlen( $revText );
$insertData[$fieldPrefix . 'sha1'] = Revision::base36Sha1( $revText );
- $parentIdLookupConditions = array(
- $pageIdFieldName => $hiddenRow->hidden_page,
- $fieldPrefix . 'timestamp' => $hiddenRow->hidden_timestamp,
- $revIdFieldName . ' < ' . $hiddenRow->hidden_rev_id
- );
-
if ( $tableName == 'archive' ) {
- $parentIdLookupConditions['ar_namespace'] = $hiddenRow->hidden_namespace;
- $parentIdLookupConditions['ar_title'] = $hiddenRow->hidden_title;
+ $insertData['ar_parent_id'] = null;
$insertData['ar_namespace'] = $hiddenRow->hidden_namespace;
$insertData['ar_title'] = $hiddenRow->hidden_title;
+ } else {
+ $parentIdFromRevision = $dbw->selectRow(
+ 'revision',
+ array( 'rev_id', 'rev_timestamp' ),
+ array(
+ 'rev_page' => $hiddenRow->hidden_page,
+ 'rev_timestamp < ' . $hiddenRow->hidden_timestamp,
+ 'rev_id < ' . $hiddenRow->hidden_rev_id
+ ),
+ array(
+ 'LIMIT' => 1,
+ 'ORDER BY' => 'rev_timestamp'
+ )
+ );
+ $parentIdFromHidden = $dbw->selectRow(
+ 'hidden',
+ array( 'hidden_rev_id', 'hidden_timestamp' ),
+ array(
+ 'hidden_page' => $hiddenRow->hidden_page,
+ 'hidden_timestamp < ' . $hiddenRow->hidden_timestamp,
+ 'hidden_rev_id < ' . $hiddenRow->hidden_rev_id
+ ),
+ $options = array(
+ 'LIMIT' => 1,
+ 'ORDER BY' => 'hidden_timestamp'
+ )
+ );
+ $parentIdFromArchive = $dbw->selectRow(
+ 'archive',
+ array( 'ar_rev_id', 'ar_timestamp' ),
+ array(
+ 'ar_page_id' => $hiddenRow->hidden_page,
+ 'ar_timestamp < ' . $hiddenRow->hidden_timestamp,
+ 'ar_rev_id < ' . $hiddenRow->hidden_rev_id
+ ),
+ array(
+ 'LIMIT' => 1,
+ 'ORDER BY' => 'ar_timestamp'
+ )
+ );
+
+ $timestampsToRevIds = array(
+ $parentIdFromRevision["rev_timestamp"] => $parentIdFromRevision["rev_id"],
+ $parentIdFromHidden["hidden_timestamp"] => $parentIdFromHidden["hidden_rev_id"],
+ $parentIdFromArchive["ar_timestamp"] => $parentIdFromArchive["ar_rev_id"]
+ );
+
+ $insertData['rev_parent_id'] = $timestampsToRevIds[max( array_keys( $timestampsToRevIds ) )];
}
- $insertData[$fieldPrefix . 'parent_id'] = $dbw->selectField(
- $tableName,
- $revIdFieldName,
- $parentIdLookupConditions,
- $options = array( 'LIMIT' => 1, 'ORDER BY' => $revIdFieldName )
- );
-
$dbw->insert( $tableName, $insertData, __METHOD__ );
$dbw->insert( 'logging', array(