ソースを参照

mustikas11: migreeri 3 custom välja (nimi, sünnipäev, kasutamisõigus)

- field_nimi: täida D7 given+family stringina (153 liiget)
- field_sunnipaev: datetime->date, täida day/month/year (144)
- field_emal_kasutaja_oigused: string->list_string (rollide masinnimed,
  8 valikut D11 rollidest), täida rid->masinnimi (346 kirjet)
- view display: lisa kasutamisõigus, sünnipäev date formatteriga,
  label Sünnikuupäev
ardo 1 日 前
コミット
cd6caef4f9

+ 41 - 0
third/drupal/mustikas11/create_oigused.php

@@ -0,0 +1,41 @@
+<?php
+// Loo field_emal_kasutaja_oigused list_string storage (rollide masinnimed).
+use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\field\Entity\FieldConfig;
+
+$roles = [
+  'emal_liige' => 'EMAL liige',
+  'emal_juhatuse_liige' => 'EMAL juhatuse liige',
+  'emal_liikmemaksud' => 'EMAL liikmemaksud',
+  'emal_projektid' => 'EMAL projektid',
+  'emal_raamatupidamine' => 'EMAL raamatupidamine',
+  'emal_susteemi_administraator' => 'EMAL süsteemi administraator',
+  'emal_kutsekomisjon' => 'EMAL kutsekomisjon',
+  'filedepot' => 'filedepot',
+];
+
+$allowed = [];
+foreach ($roles as $key => $label) {
+  $allowed[$key] = $label;
+}
+
+$storage = FieldStorageConfig::create([
+  'field_name' => 'field_emal_kasutaja_oigused',
+  'entity_type' => 'node',
+  'type' => 'list_string',
+  'cardinality' => -1,
+  'settings' => ['allowed_values' => $allowed],
+]);
+$storage->save();
+echo "storage loodud\n";
+
+$field = FieldConfig::create([
+  'field_name' => 'field_emal_kasutaja_oigused',
+  'entity_type' => 'node',
+  'bundle' => 'emal_liige',
+  'label' => 'Kasutamisõigus',
+  'required' => FALSE,
+]);
+$field->save();
+echo "field config loodud (emal_liige)\n";
+echo "done\n";

+ 52 - 0
third/drupal/mustikas11/fix_oigused.php

@@ -0,0 +1,52 @@
+<?php
+// Paranda field_emal_kasutaja_oigused: delta kasvav iga entity kohta.
+use Drupal\Core\Database\Database;
+
+$src = Database::getConnection('default', 'migrate');
+$dst = Database::getConnection();
+
+// Puhasta tabel korralikult (SQL TRUNCATE).
+$dst->query("TRUNCATE TABLE {node__field_emal_kasutaja_oigused}");
+
+$rid_map = [
+  1 => 'anonymous', 2 => 'authenticated', 3 => 'administrator',
+  4 => 'emal_liikmemaksud', 5 => 'emal_juhatuse_liige',
+  6 => 'emal_susteemi_administraator', 7 => 'emal_liige',
+  8 => 'emal_projektid', 9 => 'emal_raamatupidamine',
+  10 => 'filedepot', 11 => 'emal_kutsekomisjon',
+];
+
+$rows = $src->query(
+  "SELECT entity_id, field_emal_kasutaja_oigused_rid
+   FROM {field_data_field_emal_kasutaja_oigused} WHERE deleted = 0
+   ORDER BY entity_id, delta"
+);
+
+$n = 0;
+$delta_by_entity = [];
+foreach ($rows as $r) {
+  $rid = (int)$r->field_emal_kasutaja_oigused_rid;
+  if (!isset($rid_map[$rid])) continue;
+  $machine = $rid_map[$rid];
+
+  $eid = (int)$r->entity_id;
+  if (!isset($delta_by_entity[$eid])) $delta_by_entity[$eid] = 0;
+  $delta = $delta_by_entity[$eid]++;
+
+  // Skip anonymous/authenticated/administrator (pole sisulised "õigused",
+  // aga D7 referenceeris neid — jätame alles kõik, et mitte kaotada infot).
+  $dst->insert('node__field_emal_kasutaja_oigused')
+    ->fields([
+      'entity_id' => $eid,
+      'bundle' => 'emal_liige',
+      'deleted' => 0,
+      'langcode' => 'et',
+      'delta' => $delta,
+      'revision_id' => $eid,
+      'field_emal_kasutaja_oigused_value' => $machine,
+    ])
+    ->execute();
+  $n++;
+}
+echo "field_emal_kasutaja_oigused: $n rida\n";
+echo "done\n";

+ 37 - 0
third/drupal/mustikas11/fix_view_oigused.php

@@ -0,0 +1,37 @@
+<?php
+// Uuenda emal_liige view display: lisa kasutamisõigus, paranda sünnipäev.
+use Drupal\Core\Entity\Entity\EntityViewDisplay;
+
+$display = EntityViewDisplay::load('node.emal_liige.default');
+
+// field_emal_kasutaja_oigused: list_string, inline label.
+$display->setComponent('field_emal_kasutaja_oigused', [
+  'type' => 'list_default',
+  'label' => 'inline',
+  'weight' => 7,
+  'settings' => [],
+  'third_party_settings' => [],
+]);
+echo "lisatud: field_emal_kasutaja_oigused (list_default)\n";
+
+// field_sunnipaev: datetime formatter -> date only, label "Sünnikuupäev".
+$display->setComponent('field_sunnipaev', [
+  'type' => 'datetime_default',
+  'label' => 'inline',
+  'weight' => 4,
+  'settings' => ['format_type' => 'medium'],
+  'third_party_settings' => [],
+]);
+echo "uuendatud: field_sunnipaev\n";
+
+// Muuda field_sunnipaev label "Sünnikuupäev" (field config).
+$fc = \Drupal::entityTypeManager()->getStorage('field_config')
+  ->load('node.emal_liige.field_sunnipaev');
+if ($fc) {
+  $fc->set('label', 'Sünnikuupäev');
+  $fc->save();
+  echo "label: field_sunnipaev -> Sünnikuupäev\n";
+}
+
+$display->save();
+echo "done\n";

+ 103 - 0
third/drupal/mustikas11/migrate_custom_fields_data.php

@@ -0,0 +1,103 @@
+<?php
+// Täida kolm custom välja D7 andmetega (source = dr_mustikas "migrate" conn).
+use Drupal\Core\Database\Database;
+
+$src = Database::getConnection('default', 'migrate');
+$dst = Database::getConnection();
+
+// Puhasta sihttabelid (need olid tühjad või pooleldi täidetud).
+foreach (['node__field_nimi', 'node__field_sunnipaev', 'node__field_emal_kasutaja_oigused'] as $t) {
+  $dst->truncate($t)->execute();
+}
+
+// ── 1. field_nimi: "given family" string ──
+$rows = $src->query(
+  "SELECT entity_id, field_nimi_given, field_nimi_family
+   FROM {field_data_field_nimi} WHERE deleted = 0"
+);
+$n = 0;
+foreach ($rows as $r) {
+  $given = trim($r->field_nimi_given ?? '');
+  $family = trim($r->field_nimi_family ?? '');
+  $value = trim($given . ' ' . $family);
+  if ($value === '') continue;
+  $dst->insert('node__field_nimi')
+    ->fields([
+      'entity_id' => $r->entity_id,
+      'bundle' => 'emal_liige',
+      'deleted' => 0,
+      'langcode' => 'et',
+      'delta' => 0,
+      'revision_id' => $r->entity_id,
+      'field_nimi_value' => $value,
+    ])
+    ->execute();
+  $n++;
+}
+echo "field_nimi: $n\n";
+
+// ── 2. field_sunnipaev: day/month/year -> Y-m-d ──
+$rows = $src->query(
+  "SELECT entity_id, field_sunnipaev_day, field_sunnipaev_month, field_sunnipaev_year
+   FROM {field_data_field_sunnipaev} WHERE deleted = 0"
+);
+$n = 0;
+foreach ($rows as $r) {
+  $day = (int)$r->field_sunnipaev_day;
+  $month = (int)$r->field_sunnipaev_month;
+  $year = (int)$r->field_sunnipaev_year;
+  if ($year < 1000 || $month < 1 || $month > 12 || $day < 1 || $day > 31) continue;
+  $date = sprintf('%04d-%02d-%02d', $year, $month, $day);
+  $dst->insert('node__field_sunnipaev')
+    ->fields([
+      'entity_id' => $r->entity_id,
+      'bundle' => 'emal_liige',
+      'deleted' => 0,
+      'langcode' => 'et',
+      'delta' => 0,
+      'revision_id' => $r->entity_id,
+      'field_sunnipaev_value' => $date,
+    ])
+    ->execute();
+  $n++;
+}
+echo "field_sunnipaev: $n\n";
+
+// ── 3. field_emal_kasutaja_oigused: rid -> masinnimi ──
+$rid_map = [
+  1 => 'anonymous', 2 => 'authenticated', 3 => 'administrator',
+  4 => 'emal_liikmemaksud', 5 => 'emal_juhatuse_liige',
+  6 => 'emal_susteemi_administraator', 7 => 'emal_liige',
+  8 => 'emal_projektid', 9 => 'emal_raamatupidamine',
+  10 => 'filedepot', 11 => 'emal_kutsekomisjon',
+];
+$rows = $src->query(
+  "SELECT entity_id, field_emal_kasutaja_oigused_rid
+   FROM {field_data_field_emal_kasutaja_oigused} WHERE deleted = 0"
+);
+$n = 0;
+$seen = [];
+foreach ($rows as $r) {
+  $rid = (int)$r->field_emal_kasutaja_oigused_rid;
+  if (!isset($rid_map[$rid])) continue;
+  $machine = $rid_map[$rid];
+  $key = $r->entity_id . ':' . $machine;
+  if (isset($seen[$key])) continue;
+  $seen[$key] = TRUE;
+
+  $dst->insert('node__field_emal_kasutaja_oigused')
+    ->fields([
+      'entity_id' => $r->entity_id,
+      'bundle' => 'emal_liige',
+      'deleted' => 0,
+      'langcode' => 'et',
+      'delta' => 0,
+      'revision_id' => $r->entity_id,
+      'field_emal_kasutaja_oigused_value' => $machine,
+    ])
+    ->execute();
+  $n++;
+}
+echo "field_emal_kasutaja_oigused: $n\n";
+
+echo "done\n";