migrate_custom_fields_data.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. // Täida kolm custom välja D7 andmetega (source = dr_mustikas "migrate" conn).
  3. use Drupal\Core\Database\Database;
  4. $src = Database::getConnection('default', 'migrate');
  5. $dst = Database::getConnection();
  6. // Puhasta sihttabelid (need olid tühjad või pooleldi täidetud).
  7. foreach (['node__field_nimi', 'node__field_sunnipaev', 'node__field_emal_kasutaja_oigused'] as $t) {
  8. $dst->truncate($t)->execute();
  9. }
  10. // ── 1. field_nimi: "given family" string ──
  11. $rows = $src->query(
  12. "SELECT entity_id, field_nimi_given, field_nimi_family
  13. FROM {field_data_field_nimi} WHERE deleted = 0"
  14. );
  15. $n = 0;
  16. foreach ($rows as $r) {
  17. $given = trim($r->field_nimi_given ?? '');
  18. $family = trim($r->field_nimi_family ?? '');
  19. $value = trim($given . ' ' . $family);
  20. if ($value === '') continue;
  21. $dst->insert('node__field_nimi')
  22. ->fields([
  23. 'entity_id' => $r->entity_id,
  24. 'bundle' => 'emal_liige',
  25. 'deleted' => 0,
  26. 'langcode' => 'et',
  27. 'delta' => 0,
  28. 'revision_id' => $r->entity_id,
  29. 'field_nimi_value' => $value,
  30. ])
  31. ->execute();
  32. $n++;
  33. }
  34. echo "field_nimi: $n\n";
  35. // ── 2. field_sunnipaev: day/month/year -> Y-m-d ──
  36. $rows = $src->query(
  37. "SELECT entity_id, field_sunnipaev_day, field_sunnipaev_month, field_sunnipaev_year
  38. FROM {field_data_field_sunnipaev} WHERE deleted = 0"
  39. );
  40. $n = 0;
  41. foreach ($rows as $r) {
  42. $day = (int)$r->field_sunnipaev_day;
  43. $month = (int)$r->field_sunnipaev_month;
  44. $year = (int)$r->field_sunnipaev_year;
  45. if ($year < 1000 || $month < 1 || $month > 12 || $day < 1 || $day > 31) continue;
  46. $date = sprintf('%04d-%02d-%02d', $year, $month, $day);
  47. $dst->insert('node__field_sunnipaev')
  48. ->fields([
  49. 'entity_id' => $r->entity_id,
  50. 'bundle' => 'emal_liige',
  51. 'deleted' => 0,
  52. 'langcode' => 'et',
  53. 'delta' => 0,
  54. 'revision_id' => $r->entity_id,
  55. 'field_sunnipaev_value' => $date,
  56. ])
  57. ->execute();
  58. $n++;
  59. }
  60. echo "field_sunnipaev: $n\n";
  61. // ── 3. field_emal_kasutaja_oigused: rid -> masinnimi ──
  62. $rid_map = [
  63. 1 => 'anonymous', 2 => 'authenticated', 3 => 'administrator',
  64. 4 => 'emal_liikmemaksud', 5 => 'emal_juhatuse_liige',
  65. 6 => 'emal_susteemi_administraator', 7 => 'emal_liige',
  66. 8 => 'emal_projektid', 9 => 'emal_raamatupidamine',
  67. 10 => 'filedepot', 11 => 'emal_kutsekomisjon',
  68. ];
  69. $rows = $src->query(
  70. "SELECT entity_id, field_emal_kasutaja_oigused_rid
  71. FROM {field_data_field_emal_kasutaja_oigused} WHERE deleted = 0"
  72. );
  73. $n = 0;
  74. $seen = [];
  75. foreach ($rows as $r) {
  76. $rid = (int)$r->field_emal_kasutaja_oigused_rid;
  77. if (!isset($rid_map[$rid])) continue;
  78. $machine = $rid_map[$rid];
  79. $key = $r->entity_id . ':' . $machine;
  80. if (isset($seen[$key])) continue;
  81. $seen[$key] = TRUE;
  82. $dst->insert('node__field_emal_kasutaja_oigused')
  83. ->fields([
  84. 'entity_id' => $r->entity_id,
  85. 'bundle' => 'emal_liige',
  86. 'deleted' => 0,
  87. 'langcode' => 'et',
  88. 'delta' => 0,
  89. 'revision_id' => $r->entity_id,
  90. 'field_emal_kasutaja_oigused_value' => $machine,
  91. ])
  92. ->execute();
  93. $n++;
  94. }
  95. echo "field_emal_kasutaja_oigused: $n\n";
  96. echo "done\n";