|
@@ -0,0 +1,895 @@
|
|
|
+<?php
|
|
|
+use Drupal\user\RoleInterface;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @file
|
|
|
+ * Set up source data and destination configuration for the migration example
|
|
|
+ * module. We do this in a separate module so migrate_example_advanced itself is
|
|
|
+ * a pure migration module.
|
|
|
+ */
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_schema().
|
|
|
+ */
|
|
|
+function migrate_example_advanced_setup_schema() {
|
|
|
+ $schema['migrate_example_advanced_account'] = migrate_example_advanced_schema_account();
|
|
|
+ $schema['migrate_example_advanced_account_updates'] = migrate_example_advanced_schema_account_updates();
|
|
|
+ $schema['migrate_example_advanced_categories'] = migrate_example_advanced_schema_categories();
|
|
|
+ $schema['migrate_example_advanced_vintages'] = migrate_example_advanced_schema_vintages();
|
|
|
+ $schema['migrate_example_advanced_variety_updates'] = migrate_example_advanced_schema_variety_updates();
|
|
|
+ $schema['migrate_example_wine'] = migrate_example_advanced_schema_wine();
|
|
|
+ $schema['migrate_example_advanced_updates'] = migrate_example_advanced_schema_updates();
|
|
|
+ $schema['migrate_example_advanced_producer'] = migrate_example_advanced_schema_producer();
|
|
|
+ $schema['migrate_example_advanced_category_wine'] = migrate_example_advanced_schema_category_wine();
|
|
|
+ $schema['migrate_example_advanced_category_producer'] = migrate_example_advanced_schema_category_producer();
|
|
|
+ $schema['migrate_example_advanced_comment'] = migrate_example_advanced_schema_comment();
|
|
|
+ $schema['migrate_example_advanced_comment_updates'] = migrate_example_advanced_schema_comment_updates();
|
|
|
+ $schema['migrate_example_advanced_files'] = migrate_example_advanced_schema_files();
|
|
|
+ $schema['migrate_example_advanced_blobs'] = migrate_example_advanced_schema_blobs();
|
|
|
+ $schema['migrate_example_advanced_table_source'] = migrate_example_advanced_schema_table_source();
|
|
|
+ $schema['migrate_example_advanced_table_dest'] = migrate_example_advanced_schema_table_dest();
|
|
|
+
|
|
|
+ return $schema;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implements hook_install().
|
|
|
+ */
|
|
|
+function migrate_example_advanced_setup_install() {
|
|
|
+ // Populate our tables.
|
|
|
+ migrate_example_advanced_data_account();
|
|
|
+ migrate_example_advanced_data_account_updates();
|
|
|
+ migrate_example_advanced_data_categories();
|
|
|
+ migrate_example_advanced_data_vintages();
|
|
|
+ migrate_example_advanced_data_variety_updates();
|
|
|
+ migrate_example_advanced_data_wine();
|
|
|
+ migrate_example_advanced_data_updates();
|
|
|
+ migrate_example_advanced_data_producer();
|
|
|
+ migrate_example_advanced_data_category_wine();
|
|
|
+ migrate_example_advanced_data_category_producer();
|
|
|
+ migrate_example_advanced_data_comment();
|
|
|
+ migrate_example_advanced_data_comment_updates();
|
|
|
+ migrate_example_advanced_data_files();
|
|
|
+ migrate_example_advanced_data_blobs();
|
|
|
+ migrate_example_advanced_data_table_source();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_wine() {
|
|
|
+ return [
|
|
|
+ 'description' => 'Wines of the world',
|
|
|
+ 'fields' => [
|
|
|
+ 'wineid' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine ID',
|
|
|
+ ],
|
|
|
+ 'name' => [
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ],
|
|
|
+ 'body' => [
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Full description of the wine.',
|
|
|
+ ],
|
|
|
+ 'excerpt' => [
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Abstract for this wine.',
|
|
|
+ ],
|
|
|
+ 'accountid' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'ID of the author.',
|
|
|
+ ],
|
|
|
+ 'posted' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Original creation date',
|
|
|
+ ],
|
|
|
+ 'last_changed' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Last change date',
|
|
|
+ ],
|
|
|
+ 'variety' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine variety',
|
|
|
+ ],
|
|
|
+ 'region' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine region',
|
|
|
+ ],
|
|
|
+ 'rating' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Rating (100-point scale)',
|
|
|
+ ],
|
|
|
+ ],
|
|
|
+ 'primary key' => ['wineid'],
|
|
|
+ ];
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_updates() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Updated wine ratings',
|
|
|
+ 'fields' => [
|
|
|
+ 'wineid' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine ID',
|
|
|
+ ],
|
|
|
+ 'rating' => [
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Rating (100-point scale)',
|
|
|
+ ],
|
|
|
+ ],
|
|
|
+ 'primary key' => ['wineid'],
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_producer() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine producers of the world',
|
|
|
+ 'fields' => array(
|
|
|
+ 'producerid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Producer ID',
|
|
|
+ ),
|
|
|
+ 'name' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ),
|
|
|
+ 'body' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Full description of the producer.',
|
|
|
+ ),
|
|
|
+ 'excerpt' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Abstract for this producer.',
|
|
|
+ ),
|
|
|
+ 'accountid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Account ID of the author.',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('producerid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_categories() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Categories',
|
|
|
+ 'fields' => array(
|
|
|
+ 'categoryid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'description' => 'Category ID',
|
|
|
+ ),
|
|
|
+ 'type' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Type of category: variety, region, best_with',
|
|
|
+ ),
|
|
|
+ 'name' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ),
|
|
|
+ 'details' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ ),
|
|
|
+ 'category_parent' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Parent category, if any',
|
|
|
+ ),
|
|
|
+ 'ordering' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => FALSE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Order in which to display categories',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('categoryid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_vintages() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine vintages',
|
|
|
+ 'fields' => array(
|
|
|
+ 'wineid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine ID',
|
|
|
+ ),
|
|
|
+ 'vintage' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Vintage (year)',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('wineid', 'vintage'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_variety_updates() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Variety updates',
|
|
|
+ 'fields' => array(
|
|
|
+ 'categoryid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'description' => 'Category ID',
|
|
|
+ ),
|
|
|
+ 'details' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('categoryid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_category_wine() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine category assignments',
|
|
|
+ 'fields' => array(
|
|
|
+ 'wineid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine ID',
|
|
|
+ ),
|
|
|
+ 'categoryid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Category ID',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('categoryid', 'wineid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_category_producer() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Producer category assignments',
|
|
|
+ 'fields' => array(
|
|
|
+ 'producerid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Producer ID',
|
|
|
+ ),
|
|
|
+ 'categoryid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Category ID',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('categoryid', 'producerid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_comment() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine comments',
|
|
|
+ 'fields' => array(
|
|
|
+ 'commentid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Comment ID',
|
|
|
+ ),
|
|
|
+ 'wineid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Wine ID that is being commented upon',
|
|
|
+ ),
|
|
|
+ 'comment_parent' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Parent comment ID in case of comment replies.',
|
|
|
+ ),
|
|
|
+ 'subject' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Comment subject',
|
|
|
+ ),
|
|
|
+ 'body' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Comment body',
|
|
|
+ ),
|
|
|
+ 'name' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Comment name (if anon)',
|
|
|
+ ),
|
|
|
+ 'mail' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Comment email (if anon)',
|
|
|
+ ),
|
|
|
+ 'accountid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Account ID (if any).',
|
|
|
+ ),
|
|
|
+ 'commenthost' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'IP/domain of host posted from',
|
|
|
+ ),
|
|
|
+ 'userpage' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'User homepage',
|
|
|
+ ),
|
|
|
+ 'posted' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Date comment posted',
|
|
|
+ ),
|
|
|
+ 'lastchanged' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Date comment last changed',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('commentid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_comment_updates() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine comment updates',
|
|
|
+ 'fields' => array(
|
|
|
+ 'commentid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Comment ID',
|
|
|
+ ),
|
|
|
+ 'subject' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Comment subject',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('commentid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_account() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine accounts.',
|
|
|
+ 'fields' => array(
|
|
|
+ 'accountid' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Account ID',
|
|
|
+ ),
|
|
|
+ 'status' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Blocked_Allowed',
|
|
|
+ ),
|
|
|
+ 'posted' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Registration date',
|
|
|
+ ),
|
|
|
+ 'last_access' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Last access date',
|
|
|
+ ),
|
|
|
+ 'last_login' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Last login date',
|
|
|
+ ),
|
|
|
+ 'name' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Account name (for login)',
|
|
|
+ ),
|
|
|
+ 'sex' => array(
|
|
|
+ 'type' => 'char',
|
|
|
+ 'length' => 1,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Gender',
|
|
|
+ ),
|
|
|
+ 'password' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Account password (raw)',
|
|
|
+ ),
|
|
|
+ 'mail' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Account email',
|
|
|
+ ),
|
|
|
+ 'original_mail' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Original account email',
|
|
|
+ ),
|
|
|
+ 'sig' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Signature for comments',
|
|
|
+ ),
|
|
|
+ 'imageid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Image ID',
|
|
|
+ ),
|
|
|
+ 'positions' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Positions held',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('accountid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_account_updates() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine account updates',
|
|
|
+ 'fields' => array(
|
|
|
+ 'accountid' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Account ID',
|
|
|
+ ),
|
|
|
+ 'sex' => array(
|
|
|
+ 'type' => 'char',
|
|
|
+ 'length' => 1,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Gender',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('accountid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_blobs() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine blobs to be migrated to file entities',
|
|
|
+ 'fields' => array(
|
|
|
+ 'imageid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Image ID',
|
|
|
+ ),
|
|
|
+ 'imageblob' => array(
|
|
|
+ 'type' => 'blob',
|
|
|
+ 'size' => 'normal',
|
|
|
+ 'description' => 'binary image data',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('imageid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_files() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Wine and account files',
|
|
|
+ 'fields' => array(
|
|
|
+ 'imageid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Image ID',
|
|
|
+ ),
|
|
|
+ 'url' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Image URL',
|
|
|
+ ),
|
|
|
+ 'image_alt' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Image alt',
|
|
|
+ ),
|
|
|
+ 'image_title' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Image title',
|
|
|
+ ),
|
|
|
+ 'wineid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'description' => 'Wine node this is associated with',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('imageid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_table_source() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Source data to go into a custom Drupal table',
|
|
|
+ 'fields' => array(
|
|
|
+ 'fooid' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Primary key',
|
|
|
+ ),
|
|
|
+ 'field1' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'First field',
|
|
|
+ ),
|
|
|
+ 'field2' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Second field',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('fooid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_schema_table_dest() {
|
|
|
+ return array(
|
|
|
+ 'description' => 'Custom Drupal table to receive source data directly',
|
|
|
+ 'fields' => array(
|
|
|
+ 'recordid' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Primary key',
|
|
|
+ ),
|
|
|
+ 'drupal_text' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'First field',
|
|
|
+ ),
|
|
|
+ 'drupal_int' => array(
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'description' => 'Second field',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('recordid'),
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_wine() {
|
|
|
+ $fields = array('wineid', 'name', 'body', 'excerpt', 'accountid',
|
|
|
+ 'posted', 'last_changed', 'variety', 'region', 'rating');
|
|
|
+ $query = db_insert('migrate_example_wine')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'Montes Classic Cabernet Sauvignon', 'Intense ruby-red color', 'Great!', 9,
|
|
|
+ strtotime('2010-01-02 03:04:05'), strtotime('2010-03-04 05:06:07'), 25, 17, 95),
|
|
|
+ array(2, 'Archeo Ruggero di Tasso Nero d\'Avola', 'Lots of berry character', 'Pair with red sauced dishes', 3,
|
|
|
+ strtotime('2010-09-03 18:23:58'), strtotime('2010-09-03 18:23:58'), 26, 2, 85),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_updates() {
|
|
|
+ $fields = array('wineid', 'rating');
|
|
|
+ $query = db_insert('migrate_example_advanced_updates')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 93),
|
|
|
+ array(2, NULL),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_producer() {
|
|
|
+ $fields = array('producerid', 'name', 'body', 'excerpt', 'accountid');
|
|
|
+ $query = db_insert('migrate_example_advanced_producer')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'Montes', 'Fine Chilean winery', 'Great!', 9),
|
|
|
+ array(2, 'Archeo', 'Sicilia!', NULL, 3),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_account() {
|
|
|
+ $fields = array('accountid', 'status', 'posted', 'last_access', 'last_login',
|
|
|
+ 'name', 'sex', 'password', 'mail', 'original_mail', 'sig', 'imageid', 'positions');
|
|
|
+ $query = db_insert('migrate_example_advanced_account')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 1, '2010-03-30 10:31:05', '2010-04-30 18:25:24', '2010-04-30 14:01:02',
|
|
|
+ 'darren', 'M', 'dpass', 'ddarren@example.com', 'darren@example.com',
|
|
|
+ 'All about the Australians', NULL, '5'),
|
|
|
+ array(3, 0, '2007-03-15 10:31:05', '2007-06-10 04:11:38', '2007-06-10 04:11:38',
|
|
|
+ 'emily', 'F', 'insecure', 'emily@example.com', 'emily@example.com',
|
|
|
+ 'Sommelier to the stars', NULL, '18'),
|
|
|
+ array(9, 1, '2004-02-29 10:31:05', '2004-02-29 10:31:05', '2004-02-29 10:31:05',
|
|
|
+ 'fonzie', NULL, 'bike', 'thefonz@example.com', 'arthur@example.com',
|
|
|
+ 'Aaay!', 1, '5,18'),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_account_updates() {
|
|
|
+ $fields = array('accountid', 'sex');
|
|
|
+ $query = db_insert('migrate_example_advanced_account_updates')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, NULL),
|
|
|
+ array(3, 'M'),
|
|
|
+ array(9, 'F'),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_comment() {
|
|
|
+ $fields = array('commentid', 'wineid', 'comment_parent', 'subject', 'body',
|
|
|
+ 'name', 'mail', 'accountid', 'commenthost', 'userpage', 'posted', 'lastchanged');
|
|
|
+ $query = db_insert('migrate_example_advanced_comment')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 1, NULL, 'im first', 'Tasty', 'grace', 'grace@example.com', 0,
|
|
|
+ '123.456.78.9', 'http:://grace.example.com/',
|
|
|
+ strtotime('2010-01-02 03:04:05'), strtotime('2010-04-05 06:07:08')),
|
|
|
+ array(2, 1, NULL, 'im second', 'Delicious', 'horace', 'horace@example.com', 0,
|
|
|
+ 'example.com', NULL,
|
|
|
+ strtotime('2010-02-02 03:04:05'), strtotime('2010-05-05 06:07:08')),
|
|
|
+ array(3, 1, NULL, 'im parent', 'Don\'t care for it', 'irene', 'irene@example.com', 0,
|
|
|
+ '254.0.2.5', 'http:://www.example.com/irene',
|
|
|
+ strtotime('2010-03-02 03:04:05'), strtotime('2010-03-02 03:04:05')),
|
|
|
+ array(4, 1, 3, 'im child', 'But it\'s so good!', 'emily', NULL, 3,
|
|
|
+ '58.29.126.1', 'http:://www.wine.com/',
|
|
|
+ strtotime('2010-01-02 03:04:05'), strtotime('2010-01-02 03:04:05')),
|
|
|
+ array(5, 1, 4, 'im grandchild', 'Right on, Emily!', 'thefonz@example.com', NULL, 9,
|
|
|
+ '123.456.78.9', NULL,
|
|
|
+ strtotime('2010-06-02 03:04:05'), strtotime('2010-06-02 03:04:05')),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_comment_updates() {
|
|
|
+ $fields = array('commentid', 'subject');
|
|
|
+ $query = db_insert('migrate_example_advanced_comment_updates')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'I am first'),
|
|
|
+ array(2, 'I am second'),
|
|
|
+ array(3, 'I am parent'),
|
|
|
+ array(4, ''),
|
|
|
+ array(5, 'I am Spartacus'),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_categories() {
|
|
|
+ $fields = array('categoryid', 'type', 'name', 'category_parent', 'details', 'ordering');
|
|
|
+ $query = db_insert('migrate_example_advanced_categories')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'variety', 'White wine', NULL, 'White wines are generally simpler and sweeter than red', 3),
|
|
|
+ array(3, 'variety', 'Red wine', NULL, 'Red wines are generally more complex and "dry" than white', 1),
|
|
|
+ array(8, 'variety', 'Riesling', 1, 'Associated with Germany', 2),
|
|
|
+ array(9, 'variety', 'Chardonnay', 1, 'One of the most popular whites', 1),
|
|
|
+ array(13, 'variety', 'Merlot', 3, 'Very drinkable', 4),
|
|
|
+ array(14, 'variety', 'Syrah', 3, 'A.k.a. shiraz', -3),
|
|
|
+ array(25, 'variety', 'Cabernet Sauvignon', 3, 'A basic', -5),
|
|
|
+ array(26, 'variety', "Nero d'Avola", 3, 'Sicilian specialty', 2),
|
|
|
+ array(2, 'region', 'Italy', NULL, 'Largest producer of wine', 5),
|
|
|
+ array(11, 'region', 'Tuscany', 2, NULL, 2),
|
|
|
+ array(18, 'region', 'Chianti', 11, NULL, -1),
|
|
|
+ array(19, 'region', 'Elba', 11, NULL, 5),
|
|
|
+ array(4, 'region', 'France', NULL, 'C\'est bon', 6),
|
|
|
+ array(5, 'region', 'Bordeaux', 4, NULL, 1),
|
|
|
+ array(6, 'region', 'Barsac', 5, NULL, 3),
|
|
|
+ array(7, 'region', 'Pomerol', 5, NULL, 2),
|
|
|
+ array(16, 'region', 'Chile', NULL, NULL, 3),
|
|
|
+ array(17, 'region', 'Colchagua Valley', 16, NULL, 1),
|
|
|
+ array(20, 'region', 'California', NULL, NULL, 5),
|
|
|
+ array(21, 'region', 'Redwood Valley', 20, NULL, 1),
|
|
|
+ array(10, 'best_with', 'Beef', NULL, NULL, 5),
|
|
|
+ array(12, 'best_with', 'Pork', NULL, NULL, -3),
|
|
|
+ array(15, 'best_with', 'Chicken', NULL, NULL, -5),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_vintages() {
|
|
|
+ $fields = array('wineid', 'vintage');
|
|
|
+ $query = db_insert('migrate_example_advanced_vintages')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 2006),
|
|
|
+ array(1, 2007),
|
|
|
+ array(2, 2001),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_variety_updates() {
|
|
|
+ $fields = array('categoryid', 'details');
|
|
|
+ $query = db_insert('migrate_example_advanced_variety_updates')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'White wines are simpler and sweeter than red'),
|
|
|
+ array(3, 'Red wines are generally more complex and dry than white'),
|
|
|
+ array(8, 'Usually associated with Germany'),
|
|
|
+ array(9, NULL),
|
|
|
+ array(13, 'Common, very drinakable'),
|
|
|
+ array(14, 'AKA Shiraz'),
|
|
|
+ array(25, 'Basic'),
|
|
|
+ array(26, 'A specialty of Sicily'),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_category_wine() {
|
|
|
+ $fields = array('wineid', 'categoryid');
|
|
|
+ $query = db_insert('migrate_example_advanced_category_wine')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 12),
|
|
|
+ array(1, 15),
|
|
|
+ array(2, 10),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_category_producer() {
|
|
|
+ $fields = array('producerid', 'categoryid');
|
|
|
+ $query = db_insert('migrate_example_advanced_category_producer')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 17),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_files() {
|
|
|
+ $fields = array('imageid', 'url', 'image_alt', 'image_title', 'wineid');
|
|
|
+ $query = db_insert('migrate_example_advanced_files')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, 'http://placekitten.com/200/200', NULL, NULL, NULL),
|
|
|
+ array(2, 'http://cyrve.com/files/penguin.jpeg', 'Penguin alt', 'Penguin title', 1),
|
|
|
+ array(3, 'http://cyrve.com/files/rioja.jpeg', 'Rioja alt', 'Rioja title', 2),
|
|
|
+ array(4, 'http://cyrve.com/files/boutisse_0.jpeg', 'Boutisse alt', 'Boutisse title', 2),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_blobs() {
|
|
|
+ $blob = file_get_contents('core/misc/druplicon.png');
|
|
|
+ $fields = array('imageid', 'imageblob');
|
|
|
+ $query = db_insert('migrate_example_advanced_blobs')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(1, $blob),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|
|
|
+
|
|
|
+function migrate_example_advanced_data_table_source() {
|
|
|
+ $fields = array('fooid', 'field1', 'field2');
|
|
|
+ $query = db_insert('migrate_example_advanced_table_source')
|
|
|
+ ->fields($fields);
|
|
|
+ $data = array(
|
|
|
+ array(3, 'Some sample data', 58),
|
|
|
+ array(15, 'Whatever', 2),
|
|
|
+ array(646, 'More sample data', 34989),
|
|
|
+ );
|
|
|
+ foreach ($data as $row) {
|
|
|
+ $query->values(array_combine($fields, $row));
|
|
|
+ }
|
|
|
+ $query->execute();
|
|
|
+}
|