Procházet zdrojové kódy

popsu_migrate: D7NodeTheme themes et projets liés refactored

bach před 3 roky
rodič
revize
2b0904f0b4

+ 1 - 1
config/sync/migrate_plus.migration.d7_allpublicfiles.yml

@@ -1,4 +1,4 @@
-uuid: d8e55680-7f11-4e58-9e8a-892ec4ec9191
+uuid: ae496e79-c2b0-483b-9dc2-b04f29237322
 langcode: fr
 status: true
 dependencies: {  }

+ 1 - 1
config/sync/migrate_plus.migration.d7_node_programme.yml

@@ -1,4 +1,4 @@
-uuid: b03a76ce-4cc8-4567-85f4-ec6740c3e47b
+uuid: 6fa024f8-38b0-48af-886a-e3f1575e8873
 langcode: fr
 status: true
 dependencies: {  }

+ 1 - 1
config/sync/migrate_plus.migration.d7_node_projet.yml

@@ -1,4 +1,4 @@
-uuid: 3bbf9aad-5230-4660-8d1a-45d14b44a801
+uuid: 935e3f08-247d-4c85-8a42-6c35daa0ddf7
 langcode: fr
 status: true
 dependencies: {  }

+ 11 - 6
config/sync/migrate_plus.migration.d7_node_theme.yml

@@ -1,9 +1,9 @@
-uuid: 479b05a2-6377-46f9-976d-a4d79b4cc6ac
+uuid: ff918ee4-59b1-4139-a96d-f68bd7036274
 langcode: fr
 status: true
 dependencies: {  }
 _core:
-  default_config_hash: WJ4CqAlkn09bHQXqYqK8-kat9Esdlw-iXGRk0IeX97c
+  default_config_hash: zBJRTgJ9e5p4ZBc0jDlNp3eynstu43FtkG96jez6pQU
 id: d7_node_theme
 class: null
 field_plugin_method: null
@@ -57,11 +57,16 @@ process:
     process:
       target_id:
         plugin: migration_lookup
-        migration:
-          - d7_node_projet
-          - d7_node_theme
+        migration: d7_node_theme
+        source: nid
+  field_projets_lies:
+    plugin: sub_process
+    source: field_projets_lies
+    process:
+      target_id:
+        plugin: migration_lookup
+        migration: d7_node_projet
         source: nid
-        stub_id: d7_node_projet
 destination:
   plugin: 'entity:node'
 migration_dependencies:

+ 1 - 1
config/sync/migrate_plus.migration.d7_taxonomy_term_type_theme.yml

@@ -1,4 +1,4 @@
-uuid: b0b00974-3194-4e57-89b3-0cb83fd2d24f
+uuid: d8151c69-445f-489e-ac82-372fe5d5ca9e
 langcode: fr
 status: true
 dependencies: {  }

+ 1 - 1
config/sync/migrate_plus.migration.d7_users.yml

@@ -1,4 +1,4 @@
-uuid: 0ac95398-8da2-4e5a-968d-6db44f0b9b86
+uuid: 1cea8a55-906b-4d00-81d8-a35ec6657e17
 langcode: fr
 status: true
 dependencies: {  }

+ 1 - 1
config/sync/migrate_plus.migration_group.popsu.yml

@@ -1,4 +1,4 @@
-uuid: 8d6222b6-cd0a-4679-b047-2ac9b3a079be
+uuid: 06f1809a-7f86-4527-a5d7-1ad2ce7c71c7
 langcode: fr
 status: true
 dependencies:

+ 11 - 6
web/modules/custom/popsu_migrate/config/install/migrate_plus.migration.d7_node_theme.yml

@@ -62,16 +62,21 @@ process:
     process:
       target_id:
         plugin: migration_lookup
-        migration:
-          - d7_node_projet
-          - d7_node_theme
+        migration: d7_node_theme
+        source: nid
+
+  field_projets_lies:
+    plugin: sub_process
+    source: field_projets_lies
+    process:
+      target_id:
+        plugin: migration_lookup
+        migration: d7_node_projet
         source: nid
-        # stub_id is not working :(
-        stub_id: d7_node_projet
 
 migration_dependencies:
   required:
     - d7_allpublicfiles
     - d7_users
     - d7_taxonomy_term_type_theme
-    - d7_node_projet
+    # - d7_node_projet

+ 23 - 2
web/modules/custom/popsu_migrate/src/Plugin/migrate/source/D7NodeTheme.php

@@ -169,10 +169,27 @@ class D7NodeTheme extends FieldableEntity {
     # Themes liés
     // merge the two ppossible field source
     $field_themes_lies = array();
+    $field_projets_lies = array();
     if ($field_popsu_themloc_lies = $row->getSourceProperty('field_popsu_themloc_lies')) {
       // Drush::output()->writeln(dump($field_popsu_themloc_lies));
       foreach ($field_popsu_themloc_lies as $key => $value) {
-        $field_themes_lies[] = $value;
+        // check if theme
+        $q = $this->select('node', 'n')
+          ->fields('n', ['nid','type'])
+          ->condition('n.nid', $value['nid'])
+          ->condition('n.type', ['popsu_theme_local', 'popsu_projet'], 'IN');
+        $res = $q->execute()->fetchAll();
+        if (!empty($res)) {
+          Drush::output()->writeln(dump($res));
+          switch ($res[0]['type']) {
+            case 'popsu_theme_local':
+              $field_themes_lies[] = $value;
+              break;
+            case 'popsu_projet':
+              $field_projets_lies[] = $value;
+              break;
+          }
+        }
       }
     }
     if ($field_popsu_themloc_comparatif = $row->getSourceProperty('field_popsu_themloc_comparatif')) {
@@ -182,9 +199,13 @@ class D7NodeTheme extends FieldableEntity {
       }
     }
     if (!empty($field_themes_lies)) {
-      Drush::output()->writeln(dump($field_themes_lies));
+      // Drush::output()->writeln(dump($field_themes_lies));
       $row->setSourceProperty('field_themes_lies', $field_themes_lies);
     }
+    if (!empty($field_projets_lies)) {
+      // Drush::output()->writeln(dump($field_themes_lies));
+      $row->setSourceProperty('field_projets_lies', $field_projets_lies);
+    }
 
     return parent::prepareRow($row);
   }