diff --git a/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6corpus.yml b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6corpus.yml new file mode 100644 index 000000000..c2908354b --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6corpus.yml @@ -0,0 +1,90 @@ +id: edlp_d6_corpus +label: Edlp Drupal 6 corpus +migration_tags: + - Drupal 6 +deriver: Drupal\node\Plugin\migrate\D6NodeDeriver +migration_group: edlp +source: + plugin: edlp_d6_corpus + node_type: corpus +process: + # In D6, nodes always have a tnid, but it's zero for untranslated nodes. + # We normalize it to equal the nid in that case. + # @see \Drupal\node\Plugin\migrate\source\d6\Node::prepareRow(). + # If you are using this file to build a custom migration consider removing + # the nid and vid fields to allow incremental migrations. + # nid: tnid + # vid: vid + type: + plugin: default_value + default_value: enregistrement + langcode: + plugin: default_value + source: language + default_value: "und" + title: title + uid: + plugin: migration + migration: edlp_d6_users + source: uid + status: status + created: created + changed: changed + promote: promote + sticky: sticky + # 'body/format': + # plugin: migration_lookup + # migration: d6_filter_format + # source: format + 'body/value': notes + # 'body/summary': teaser + revision_uid: revision_uid + revision_log: log + revision_timestamp: timestamp + # + # custom fields + # workflow + # text -> entity ref terms + # field_artiste: field_locuteur_s + # text -> entity ref terms + # field_compositeur: field_collectionneur_s + + # taxo term -> entity ref terms + # field_entree_s: + # plugin: entity_generate + # source: Type + # entity_type: taxonomy_term + # bundle_key: vid + # bundle: entrees + # value_key: name + + # field_genre: field_genre_s + # field_genre_s: + # plugin: entity_generate + # source: field_genre + # entity_type: taxonomy_term + # bundle_key: vid + # bundle: genres + # value_key: name + + # taxo term -> entity ref terms + # field_langue: field_langue_s + # file + # field_mp3: field_fichier_son + # node ref -> text + # field_article: body + + + +# unmapped d6 fields. +# tnid +# translate +# moderate +# comment + +destination: + plugin: entity:node +migration_dependencies: + required: + - edlp_d6_users + - edlp_d6_entrees diff --git a/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6entrees.yml b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6entrees.yml new file mode 100644 index 000000000..d31b812ba --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6entrees.yml @@ -0,0 +1,17 @@ +id: edlp_d6_entrees +label: Edlp Drupal 6 entrees +migration_tags: + - Drupal 6 +migration_group: edlp +source: + plugin: d6_taxonomy_term + bundle: 2 +process: + name: name + description: description + vid: + plugin: default_value + default_value: entrees + +destination: + plugin: entity:taxonomy_term diff --git a/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6genres.yml b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6genres.yml new file mode 100644 index 000000000..5c6087845 --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6genres.yml @@ -0,0 +1,17 @@ +id: edlp_d6_genres +label: Edlp Drupal 6 genres +migration_tags: + - Drupal 6 +migration_group: edlp +source: + plugin: d6_taxonomy_term + bundle: 3 +process: + name: name + description: description + vid: + plugin: default_value + default_value: genres + +destination: + plugin: entity:taxonomy_term diff --git a/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6langues.yml b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6langues.yml new file mode 100644 index 000000000..887b35818 --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6langues.yml @@ -0,0 +1,17 @@ +id: edlp_d6_langues +label: Edlp Drupal 6 langues +migration_tags: + - Drupal 6 +migration_group: edlp +source: + plugin: d6_taxonomy_term + bundle: 4 +process: + name: name + description: description + vid: + plugin: default_value + default_value: langues + +destination: + plugin: entity:taxonomy_term diff --git a/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6users.yml b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6users.yml new file mode 100644 index 000000000..9f3ac4fca --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/config/install/migrate_plus.migration.edlpd6users.yml @@ -0,0 +1,48 @@ +id: edlp_d6_users +label: Edlp Drupal 6 User accounts +migration_tags: + - Drupal 6 +migration_group: edlp +source: + plugin: edlp_d6_users +process: + # If you are using this file to build a custom migration consider removing + # the uid field to allow incremental migrations. + # uid: uid + name: name + pass: pass + mail: mail + created: created + access: access + login: login + status: status + timezone: + plugin: user_update_7002 + source: timezone + langcode: + plugin: user_langcode + source: language + fallback_to_site_default: false + preferred_langcode: + plugin: user_langcode + source: language + fallback_to_site_default: true + preferred_admin_langcode: + plugin: user_langcode + source: language + fallback_to_site_default: true + init: init + roles: + plugin: default_value + default_value: "collectionneur" + +destination: + plugin: entity:user + md5_passwords: true + +migration_dependencies: + # required: + # - d6_user_role + optional: + - language + - default_language diff --git a/sites/all/modules/figli/edlp_migrate/edlp_migrate.info.yml b/sites/all/modules/figli/edlp_migrate/edlp_migrate.info.yml new file mode 100644 index 000000000..82590e56d --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/edlp_migrate.info.yml @@ -0,0 +1,8 @@ +name: Edlp migration +type: module +description: Defines custom migration for edlp (from d6 to d8). +core: 8.x +package: Edlp +dependencies: + - migrate_drupal + - migrate_plus diff --git a/sites/all/modules/figli/edlp_migrate/migrate_plus.migration_group.edlp.yml b/sites/all/modules/figli/edlp_migrate/migrate_plus.migration_group.edlp.yml new file mode 100644 index 000000000..6fd634015 --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/migrate_plus.migration_group.edlp.yml @@ -0,0 +1,7 @@ +id: edlp +label: Edlp +description: Drupal 6 edlp content migrated to Drupal 8. +source_type: Drupal 6. +shared_configuration: + source: + key: legacy diff --git a/sites/all/modules/figli/edlp_migrate/readme.md b/sites/all/modules/figli/edlp_migrate/readme.md new file mode 100644 index 000000000..00c3f4925 --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/readme.md @@ -0,0 +1,11 @@ +https://www.drupaleasy.com/blogs/ultimike/2016/04/drupal-6-drupal-81x-custom-content-migration + +https://thinkshout.com/blog/2017/05/skipping-a-version-migrating-from-drupal-6-to-drupal-8-with-drupal-migrate/ + +https://www.drupal.org/docs/8/upgrade/known-issues-when-upgrading-from-drupal-6-or-7-to-drupal-8 + +https://drupal.stackexchange.com/questions/164612/how-do-i-remove-a-configuration-object-from-the-active-configuration + +https://www.metaltoad.com/blog/drupal-8-migrations-part-3-migrating-taxonomies-drupal-7 + +https://www.sitepoint.com/your-first-drupal-8-migration/ diff --git a/sites/all/modules/figli/edlp_migrate/src/Plugin/migrate/source/EdlpD6Corpus.php b/sites/all/modules/figli/edlp_migrate/src/Plugin/migrate/source/EdlpD6Corpus.php new file mode 100644 index 000000000..486f67b73 --- /dev/null +++ b/sites/all/modules/figli/edlp_migrate/src/Plugin/migrate/source/EdlpD6Corpus.php @@ -0,0 +1,18 @@ +select('users', 'u') + ->fields('u', array_keys($this->baseFields())) + ->condition('u.uid', 0, '>'); + } + + /** + * {@inheritdoc} + */ + public function fields() { + $fields = $this->baseFields(); + + // Add roles field. + $fields['roles'] = $this->t('Roles'); + + // Profile fields. + if ($this->moduleExists('profile')) { + $fields += $this->select('profile_fields', 'pf') + ->fields('pf', ['name', 'title']) + ->execute() + ->fetchAllKeyed(); + } + + return $fields; + } + + /** + * {@inheritdoc} + */ + public function prepareRow(Row $row) { + // User roles. + $roles = $this->select('users_roles', 'ur') + ->fields('ur', ['rid']) + ->condition('ur.uid', $row->getSourceProperty('uid')) + ->execute() + ->fetchCol(); + $row->setSourceProperty('roles', $roles); + + // We are adding here the Event contributed module column. + // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7 + if ($row->hasSourceProperty('timezone_id') && $row->getSourceProperty('timezone_id')) { + if ($this->getDatabase()->schema()->tableExists('event_timezones')) { + $event_timezone = $this->select('event_timezones', 'e') + ->fields('e', ['name']) + ->condition('e.timezone', $row->getSourceProperty('timezone_id')) + ->execute() + ->fetchField(); + if ($event_timezone) { + $row->setSourceProperty('event_timezone', $event_timezone); + } + } + } + + // Unserialize Data. + $row->setSourceProperty('data', unserialize($row->getSourceProperty('data'))); + + return parent::prepareRow($row); + } + + /** + * {@inheritdoc} + */ + public function getIds() { + return [ + 'uid' => [ + 'type' => 'integer', + 'alias' => 'u', + ], + ]; + } + + /** + * Returns the user base fields to be migrated. + * + * @return array + * Associative array having field name as key and description as value. + */ + protected function baseFields() { + $fields = [ + 'uid' => $this->t('User ID'), + 'name' => $this->t('Username'), + 'pass' => $this->t('Password'), + 'mail' => $this->t('Email address'), + 'theme' => $this->t('Theme'), + 'signature' => $this->t('Signature'), + 'signature_format' => $this->t('Signature format'), + 'created' => $this->t('Registered timestamp'), + 'access' => $this->t('Last access timestamp'), + 'login' => $this->t('Last login timestamp'), + 'status' => $this->t('Status'), + 'timezone' => $this->t('Timezone'), + 'language' => $this->t('Language'), + 'picture' => $this->t('Picture'), + 'init' => $this->t('Init'), + 'data' => $this->t('User data'), + ]; + + // Possible field added by Date contributed module. + // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7 + if ($this->getDatabase()->schema()->fieldExists('users', 'timezone_name')) { + $fields['timezone_name'] = $this->t('Timezone (Date)'); + } + + // Possible field added by Event contributed module. + // @see https://api.drupal.org/api/drupal/modules%21user%21user.install/function/user_update_7002/7 + if ($this->getDatabase()->schema()->fieldExists('users', 'timezone_id')) { + $fields['timezone_id'] = $this->t('Timezone (Event)'); + } + + return $fields; + } + +}