fix_oigused.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. // Paranda field_emal_kasutaja_oigused: delta kasvav iga entity kohta.
  3. use Drupal\Core\Database\Database;
  4. $src = Database::getConnection('default', 'migrate');
  5. $dst = Database::getConnection();
  6. // Puhasta tabel korralikult (SQL TRUNCATE).
  7. $dst->query("TRUNCATE TABLE {node__field_emal_kasutaja_oigused}");
  8. $rid_map = [
  9. 1 => 'anonymous', 2 => 'authenticated', 3 => 'administrator',
  10. 4 => 'emal_liikmemaksud', 5 => 'emal_juhatuse_liige',
  11. 6 => 'emal_susteemi_administraator', 7 => 'emal_liige',
  12. 8 => 'emal_projektid', 9 => 'emal_raamatupidamine',
  13. 10 => 'filedepot', 11 => 'emal_kutsekomisjon',
  14. ];
  15. $rows = $src->query(
  16. "SELECT entity_id, field_emal_kasutaja_oigused_rid
  17. FROM {field_data_field_emal_kasutaja_oigused} WHERE deleted = 0
  18. ORDER BY entity_id, delta"
  19. );
  20. $n = 0;
  21. $delta_by_entity = [];
  22. foreach ($rows as $r) {
  23. $rid = (int)$r->field_emal_kasutaja_oigused_rid;
  24. if (!isset($rid_map[$rid])) continue;
  25. $machine = $rid_map[$rid];
  26. $eid = (int)$r->entity_id;
  27. if (!isset($delta_by_entity[$eid])) $delta_by_entity[$eid] = 0;
  28. $delta = $delta_by_entity[$eid]++;
  29. // Skip anonymous/authenticated/administrator (pole sisulised "õigused",
  30. // aga D7 referenceeris neid — jätame alles kõik, et mitte kaotada infot).
  31. $dst->insert('node__field_emal_kasutaja_oigused')
  32. ->fields([
  33. 'entity_id' => $eid,
  34. 'bundle' => 'emal_liige',
  35. 'deleted' => 0,
  36. 'langcode' => 'et',
  37. 'delta' => $delta,
  38. 'revision_id' => $eid,
  39. 'field_emal_kasutaja_oigused_value' => $machine,
  40. ])
  41. ->execute();
  42. $n++;
  43. }
  44. echo "field_emal_kasutaja_oigused: $n rida\n";
  45. echo "done\n";