Krenair

OS migration script changes v3

Dec 21st, 2012
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 6.16 KB | None | 0 0
  1. diff --git a/migrateToRevDel.php b/migrateToRevDel.php
  2. index 4722106..2ca1bc3 100644
  3. --- a/migrateToRevDel.php
  4. +++ b/migrateToRevDel.php
  5. @@ -55,6 +55,14 @@ class MigrateOversightRevisions extends Maintenance {
  6.                                 array( 'page_id' => $hiddenRow->hidden_page )
  7.                         );
  8.  
  9. +                       if (
  10. +                               Revision::newFromPageId( $hiddenRow->hidden_page )->getTimestamp()
  11. +                               <
  12. +                               wfTimestamp( TS_MW, $hiddenRow->hidden_timestamp )
  13. +                       ) {
  14. +                               $this->output( "Warning: Revision ID {$hiddenRow->hidden_rev_id} will end up as the latest revision on
  15. +                       }
  16. +
  17.                         $fieldPrefix = $pageExistsQuery ? 'rev_' : 'ar_';
  18.                         $tableName = $pageExistsQuery ? 'revision' : 'archive';
  19.  
  20. @@ -79,26 +87,66 @@ class MigrateOversightRevisions extends Maintenance {
  21.                         $insertData[$fieldPrefix . 'len'] = strlen( $revText );
  22.                         $insertData[$fieldPrefix . 'sha1'] = Revision::base36Sha1( $revText );
  23.  
  24. -                       $parentIdLookupConditions = array(
  25. -                               $pageIdFieldName => $hiddenRow->hidden_page,
  26. -                               $fieldPrefix . 'timestamp' => $hiddenRow->hidden_timestamp,
  27. -                               $revIdFieldName . ' < ' . $hiddenRow->hidden_rev_id
  28. -                       );
  29. -
  30.                         if ( $tableName == 'archive' ) {
  31. -                               $parentIdLookupConditions['ar_namespace'] = $hiddenRow->hidden_namespace;
  32. -                               $parentIdLookupConditions['ar_title'] = $hiddenRow->hidden_title;
  33. +                               $insertData['ar_parent_id'] = null;
  34.                                 $insertData['ar_namespace'] = $hiddenRow->hidden_namespace;
  35.                                 $insertData['ar_title'] = $hiddenRow->hidden_title;
  36. +                       } else {
  37. +                               $parentIdFromRevision = $dbw->selectRow(
  38. +                                       'revision',
  39. +                                       array( 'rev_id', 'rev_timestamp' ),
  40. +                                       array(
  41. +                                               'rev_page' => $hiddenRow->hidden_page,
  42. +                                               'rev_timestamp < ' . $hiddenRow->hidden_timestamp,
  43. +                                               'rev_id < ' . $hiddenRow->hidden_rev_id
  44. +                                       ),
  45. +                                       array( 'ORDER BY' => 'rev_timestamp DESC' )
  46. +                               );
  47. +                               $parentIdFromHidden = $dbw->selectRow(
  48. +                                       'hidden',
  49. +                                       array( 'hidden_rev_id', 'hidden_timestamp' ),
  50. +                                       array(
  51. +                                               'hidden_page' => $hiddenRow->hidden_page,
  52. +                                               'hidden_timestamp < ' . $hiddenRow->hidden_timestamp,
  53. +                                               'hidden_rev_id < ' . $hiddenRow->hidden_rev_id
  54. +                                       ),
  55. +                                       $options = array( 'ORDER BY' => 'hidden_timestamp DESC' )
  56. +                               );
  57. +                               $parentIdFromArchive = $dbw->selectRow(
  58. +                                       'archive',
  59. +                                       array( 'ar_rev_id', 'ar_timestamp' ),
  60. +                                       array(
  61. +                                               'ar_page_id' => $hiddenRow->hidden_page,
  62. +                                               'ar_timestamp < ' . $hiddenRow->hidden_timestamp,
  63. +                                               'ar_rev_id < ' . $hiddenRow->hidden_rev_id,
  64. +                                               'ar_namespace' => $hiddenRow->hidden_namespace,
  65. +                                               'ar_title' => $hiddenRow->hidden_title
  66. +                                       ),
  67. +                                       array( 'ORDER BY' => 'ar_timestamp DESC' )
  68. +                               );
  69. +
  70. +                               $timestampsToRevIds = array();
  71. +                               if ( $parentIdFromRevision != false ) {
  72. +                                       $timestampsToRevIds[$parentIdFromRevision->rev_timestamp] = $parentIdFromRevision->rev_id;
  73. +                               }
  74. +
  75. +                               if ( $parentIdFromHidden != false ) {
  76. +                                       $timestampsToRevIds[$parentIdFromHidden->hidden_timestamp] = $parentIdFromHidden->hidden_rev_i
  77. +                               }
  78. +
  79. +                               if ( $parentIdFromArchive != false ) {
  80. +                                       $timestampsToRevIds[$parentIdFromArchive->ar_timestamp] = $parentIdFromArchive->ar_rev_id;
  81. +                               }
  82. +
  83. +                               if ( count( $timestampsToRevIds ) == 0 ) {
  84. +                                       $insertData['rev_parent_id'] = 0;
  85. +                                       $this->output( "Warning: There may be an issue with revision ID {$hiddenRow->hidden_rev_id}. I
  86. +                               } else {
  87. +                                       $highestTimestamp = max( array_keys( $timestampsToRevIds ) );
  88. +                                       $insertData['rev_parent_id'] = $parentId = $timestampsToRevIds[$highestTimestamp];
  89. +                               }
  90.                         }
  91.  
  92. -                       $insertData[$fieldPrefix . 'parent_id'] = $dbw->selectField(
  93. -                               $tableName,
  94. -                               $revIdFieldName,
  95. -                               $parentIdLookupConditions,
  96. -                               $options = array( 'LIMIT' => 1, 'ORDER BY' => $revIdFieldName )
  97. -                       );
  98. -
  99.                         $dbw->insert( $tableName, $insertData, __METHOD__ );
  100.  
  101.                         $dbw->insert( 'logging', array(
Advertisement
Add Comment
Please, Sign In to add comment