From f62d12ba55ba5f6bdc128fc20411f8f6c2bcc343 Mon Sep 17 00:00:00 2001 From: bachy Date: Thu, 12 Apr 2012 10:06:24 +0200 Subject: [PATCH 01/13] first import Signed-off-by: bachy --- migrate_materio.info | 29 +++++++++++++++++++++++++++++ migrate_materio.module | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 migrate_materio.info create mode 100644 migrate_materio.module diff --git a/migrate_materio.info b/migrate_materio.info new file mode 100644 index 00000000..736a4cf9 --- /dev/null +++ b/migrate_materio.info @@ -0,0 +1,29 @@ +name = Migrate Materio +description = "Migrate module to migrate the old materio base to drupal" + +; Core version (required) +core = 7.x + +; Package name (see http://drupal.org/node/542202 for a list of names) +; package = + +; PHP version requirement (optional) +; php = 5.2 + +; Loadable code files +; files[] = migrate_materio.module +; files[] = migrate_materio.admin.inc +; files[] = migrate_materio.class.inc + +; Module dependencies + dependencies[] = migrate +; dependencies[] = theirmodule (1.2) +; dependencies[] = anothermodule (>=2.4) +; dependencies[] = views (3.x) + +; Configuration page +; configure = admin/config/migrate_materio + + +; For further information about configuration options, see +; - http://drupal.org/node/542202 diff --git a/migrate_materio.module b/migrate_materio.module new file mode 100644 index 00000000..0986c7f0 --- /dev/null +++ b/migrate_materio.module @@ -0,0 +1,32 @@ + 2, + ); + return $api; +} \ No newline at end of file From df91706e5751e99d0f9b413e1e8ea43fb429414c Mon Sep 17 00:00:00 2001 From: bachy Date: Wed, 9 May 2012 07:49:20 +0200 Subject: [PATCH 02/13] last commit of 0.x dev Signed-off-by: bachy --- migrate_materio.basic.inc | 11 ++ migrate_materio.contact.inc | 357 +++++++++++++++++++++++++++++++++++ migrate_materio.info | 21 ++- migrate_materio.materiau.inc | 62 ++++++ migrate_materio.module | 56 ++++-- 5 files changed, 489 insertions(+), 18 deletions(-) create mode 100644 migrate_materio.basic.inc create mode 100644 migrate_materio.contact.inc create mode 100644 migrate_materio.materiau.inc diff --git a/migrate_materio.basic.inc b/migrate_materio.basic.inc new file mode 100644 index 00000000..1e68c26d --- /dev/null +++ b/migrate_materio.basic.inc @@ -0,0 +1,11 @@ +description = t('Migrate Materio Basic Class'); + parent::__construct(MigrateGroup::getInstance('MaterioMigrate')); + } +} diff --git a/migrate_materio.contact.inc b/migrate_materio.contact.inc new file mode 100644 index 00000000..1b1a4042 --- /dev/null +++ b/migrate_materio.contact.inc @@ -0,0 +1,357 @@ +description = t('Migrate Materio Industrials Users'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source') + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_account', 'ind_ac', 'iid.id_industrial = ind_ac.id_industrial'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('ind_ac', array('login', 'password')) + ->fields('iinf', array('email_general')) + ->orderBy('id_industrial', 'DESC'); + + $query->groupBy('iid.id_industrial'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationUser(); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationUser::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('name', 'login'); + $this->addFieldMapping('pass', 'password'); + $this->addFieldMapping('mail', 'email_general'); + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access', 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(1); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('init', 'email_general'); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles')->defaultValue(array(5)); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + // $this->addFieldMapping('contact', 'contact_list') + // ->separator(',') + // ->arguments(array('source_type' => 'tid')); + + } + + // public function prepareRow($current_row) { + // return TRUE; + // // return FALSE if you wish to skip a particular row + // } + +} + + +/** + * MaterioIndustrialProfile2Migration + */ +class MaterioIndustrialProfile2Migration extends MaterioBasicMigration { + public function __construct() { + parent::__construct(); + global $user; + $this->description = t('Migrate Materio Industrials Profiles2'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'department'=> t('en-fr department implemented on prepare'), + 'contact_quality'=> t('en-fr contat quality implemented on prepare'), + 'admin_quality'=> t('en-fr admin quality implemented on prepare'), + 'language'=> t('en-fr langauge description, used in prepare'), + 'tels_contact'=>'', + 'ccodes_contact'=>'', + 'tels_admin' => '', + 'ccodes_admin' => '' + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + + $ilfr_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilfr_select') + ->fields('ilfr_select')->condition('ilfr_select.id_locale',1)->orderBy('ilfr_select.id_industrial', 'DESC')->distinct(); + + $query->join($ilfr_select, 'ilfr', 'iid.id_industrial = ilfr.id_industrial'); + + + $ilen_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilen_select') + ->fields('ilen_select')->condition('ilen_select.id_locale',2)->orderBy('ilen_select.id_industrial', 'ASC')->distinct(); + + $query->join($ilen_select, 'ilen', 'iid.id_industrial = ilen.id_industrial'); + + $query + ->fields('iid', array('id_industrial', 'memo')) + ->fields('iinf', array('company', 'address', 'city', 'zip', 'web', 'email_general', 'contact', 'contact_title', 'email_contact', 'tel1_contact', 'ccode1_contact', 'tel2_contact', 'ccode2_contact', 'admin', 'admin_title', 'email_admin', 'tel1_admin', 'ccode1_admin', 'tel2_admin', 'ccode2_admin', 'email_sample')); + + $query->addField('ilfr', 'department', 'department_fr'); + $query->addField('ilfr', 'country', 'country_fr'); + $query->addField('ilfr', 'contact_quality', 'contact_quality_fr'); + $query->addField('ilfr', 'admin_quality', 'admin_quality_fr'); + + $query->addField('ilen', 'department', 'department_en'); + $query->addField('ilen', 'country', 'country_en'); + $query->addField('ilen', 'contact_quality', 'contact_quality_en'); + $query->addField('ilen', 'admin_quality', 'admin_quality_en'); + + $query->groupBy('id_industrial') + ->orderBy('id_industrial', 'DESC'); + + + $this->source = new MigrateSourceSQL($query, $source_fields); + // $this->dependencies = array('MaterioIndustrialUser'); + $this->destination = new MigrateDestinationProfile2('contact_operationnel'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationProfile2::getKeySchema() + ); + + // Connecting the profile2 to the user: + $this->addFieldMapping('uid', 'id_industrial') + ->sourceMigration('MaterioIndustrialUser') // If your user migration class was named 'MyUserMigration', the string is 'MyUser' + ->description(t('The assignment of profile2-items to the respective user')); + + $this->addFieldMapping('revision_uid', 'id_industrial') + ->sourceMigration('MaterioIndustrialUser'); + + // Make the mappings + $this->addFieldMapping('language')->defaultValue(''); + + $this->addFieldMapping('field_company', 'company') + ->arguments(array('create_term' => TRUE)); + + // see on prepareRow() + $this->addFieldMapping('field_department', 'department'); + $this->addFieldMapping('field_department:language', 'language'); + $this->addFieldMapping(NULL, 'department_en'); + $this->addFieldMapping(NULL, 'department_fr'); + + $arguments = array( + // 'name_line' => array('source_field' => 'name'), + 'thoroughfare' => array('source_field' => 'address'), + 'locality' => array('source_field' => 'city'), + 'postal_code' => array('source_field' => 'zip'), + ); + $this->addFieldMapping('field_public_address', 'country_en') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'address'); + $this->addFieldMapping(NULL, 'city'); + $this->addFieldMapping(NULL, 'zip'); + $this->addFieldMapping(NULL, 'country_fr'); + + + // $this->addFieldMapping('field_website', 'web'); + // ->arguments(array('url'=>array("source_field"=>'web'))); + $arguments = MigrateLinkFieldHandler::arguments(array('source_field' => 'web_title')); + $this->addFieldMapping('field_website', 'web') + ->arguments($arguments); + + + $this->addFieldMapping('field_presentation')->defaultValue(''); + $this->addFieldMapping('field_public_name', 'contact'); + $this->addFieldMapping('field_public_name_title', 'contact_title'); + + $this->addFieldMapping('field_public_email', 'email_contact'); // http://drupal.org/node/1232028 + + $arguments = array( + 'number' => array('source_field' => 'tel1_contact'), + // 'extension' => array('source_field' => 'ccode1_contact'), + ); + $this->addFieldMapping('field_public_phone', 'ccode1_contact') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'tel1_contact'); + // $this->addFieldMapping(NULL, 'ccode1_contact'); + $this->addFieldMapping(NULL, 'tel2_contact'); + $this->addFieldMapping(NULL, 'ccode2_contact'); + /* + TODO + multiple field phone number ?? tel2_contact ccode2_contact + */ + + // see on prepareRow() + $this->addFieldMapping('field_public_quality', 'contact_quality'); + $this->addFieldMapping('field_public_quality:language', 'language'); + $this->addFieldMapping(NULL, 'contact_quality_en'); + $this->addFieldMapping(NULL, 'contact_quality_fr'); + + $this->addFieldMapping('field_private_name', 'admin'); + $this->addFieldMapping('field_private_name_title', 'admin_title'); + $this->addFieldMapping('field_private_email', 'email_admin'); + + // see on prepareRow() + $this->addFieldMapping('field_private_quality', 'admin_quality'); + $this->addFieldMapping('field_private_quality:language', 'language'); + $this->addFieldMapping(NULL, 'admin_quality_en'); + $this->addFieldMapping(NULL, 'admin_quality_fr'); + + + $arguments = array( + 'number' => array('source_field' => 'tel1_admin'), + // 'extension' => array('source_field' => 'ccode1_admin'), + ); + $this->addFieldMapping('field_private_phone', 'ccode1_admin') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'tel1_admin'); + // $this->addFieldMapping(NULL, 'ccode1_admin'); + $this->addFieldMapping(NULL, 'tel2_admin'); + $this->addFieldMapping(NULL, 'ccode2_admin'); + /* + TODO + multiple field phone number ?? tel2_admin ccode2_admin + */ + + + $this->addFieldMapping('field_private_other_emails', 'email_sample') + ->separator(','); + $this->addFieldMapping(NULL, 'email_general'); + + + $this->addFieldMapping('field_note')->defaultValue(2); + $this->addFieldMapping('field_memo', 'memo'); + + } + + + public function prepareRow($current_row) { + $current_row->address = preg_replace('/\\n/', ', ', $current_row->address); + $current_row->city = preg_replace('/\\n/', ' ', $current_row->city); + + $current_row->department = array($current_row->department_en, $current_row->department_fr); + $current_row->contact_quality = array($current_row->contact_quality_en, $current_row->contact_quality_fr); + $current_row->admin_quality = array($current_row->admin_quality_en, $current_row->admin_quality_fr); + $current_row->language = array('en', 'fr'); + + $current_row->web_title = str_replace('http://', '', $current_row->web); + $current_row->web = 'http://' . $current_row->web_title; + + if($current_row->email_general != "") + $current_row->email_sample .= ','.$current_row->email_general; + + $ccs = cck_phone_countrycodes(); + $match = 0; + foreach ($ccs as $cc => $cc_values) { + if('+'.$current_row->ccode1_contact == $cc_values['code']){ + $current_row->ccode1_contact = $cc; + $match++; + } + if('+'.$current_row->ccode2_contact == $cc_values['code']){ + $current_row->ccode2_contact = $cc; + $match++; + } + + if('+'.$current_row->ccode1_admin == $cc_values['code']){ + $current_row->ccode1_admin = $cc; + $match++; + } + if('+'.$current_row->ccode2_admin == $cc_values['code']){ + $current_row->ccode2_admin = $cc; + $match++; + } + + if($match == 4) + break; + } + + if($current_row->tel2_contact != ''){ + $cc = cck_phone_countrycodes($current_row->ccode2_contact); + $current_row->memo .= "\n".'tel2 contact : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $current_row->tel2_contact; + } + + if($current_row->tel2_admin != ''){ + $cc = cck_phone_countrycodes($current_row->ccode2_admin); + $current_row->memo .= "\n".'tel2 admin : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $current_row->tel2_admin; + } + + + // $current_row->tels_contact = array(); + // $current_row->ccodes_contact = array(); + // if($current_row->tel1_contact != ''){ + // // $current_row->tels_contact[] = $current_row->tel1_contact; + // // $current_row->ccodes_contact[] = $current_row->ccode1_contact; + // $current_row->tels_contact[] = drupal_json_encode(array('counry_code'=>$current_row->ccode1_contact, 'number'=>$current_row->tel1_contact)); + // } + // if($current_row->tel2_contact != ''){ + // // $current_row->tels_contact[] = $current_row->tel2_contact; + // // $current_row->ccodes_contact[] = $current_row->ccode2_contact; + // $current_row->tels_contact[] = drupal_json_encode(array('counry_code'=>$current_row->ccode2_contact, 'number'=>$current_row->tel2_contact)); + // } + + // $current_row->tels_admin = array(); + // $current_row->ccodes_admin = array(); + // if($current_row->tel1_admin != ''){ + // // $current_row->tels_admin[] = $current_row->tel1_admin; + // // $current_row->ccodes_admin[] = $current_row->ccode1_admin; + // $current_row->tels_admin[] = drupal_json_encode(array('counry_code'=>$current_row->ccode1_admin, 'number'=>$current_row->tel1_admin)); + // } + // if($current_row->tel2_admin != ''){ + // // $current_row->tels_admin[] = $current_row->tel2_admin; + // // $current_row->ccodes_admin[] = $current_row->ccode2_admin; + // $current_row->tels_admin[] = drupal_json_encode(array('counry_code'=>$current_row->ccode2_admin, 'number'=>$current_row->tel2_admin)); + // } + + + + dsm($current_row, '- - - - $current_row - - - -'); + + return TRUE; + // return FALSE if you wish to skip a particular row + } + + + + public function prepare($node, stdClass $row) { + // dsm('-- prepare --'); + // dsm($node, '$node'); + // dsm($row, '$row'); + + // $node->field_public_email = array('und'=>array($row->email_contact)); + + } + + + +} \ No newline at end of file diff --git a/migrate_materio.info b/migrate_materio.info index 736a4cf9..3c6577dd 100644 --- a/migrate_materio.info +++ b/migrate_materio.info @@ -11,15 +11,24 @@ core = 7.x ; php = 5.2 ; Loadable code files -; files[] = migrate_materio.module -; files[] = migrate_materio.admin.inc -; files[] = migrate_materio.class.inc + files[] = migrate_materio.module + files[] = migrate_materio.basic.inc + files[] = migrate_materio.contact.inc + files[] = migrate_materio.materiau.inc ; Module dependencies dependencies[] = migrate -; dependencies[] = theirmodule (1.2) -; dependencies[] = anothermodule (>=2.4) -; dependencies[] = views (3.x) + dependencies[] = migrate_extras + dependencies[] = field +; dependencies[] = file +; dependencies[] = image + dependencies[] = number + dependencies[] = text + dependencies[] = options + dependencies[] = taxonomy +; dependencies[] = date + dependencies[] = link +; dependencies[] = media ; Configuration page ; configure = admin/config/migrate_materio diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc new file mode 100644 index 00000000..d09af260 --- /dev/null +++ b/migrate_materio.materiau.inc @@ -0,0 +1,62 @@ +description = t('Migrate Materio Materiau nodes'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_product' => t('Materiau id from source') + ); + + $query = db_select(MIG_MAT_SRC_DB .'.product_id', 'prod_id'); + // WARNING ! product_info is double langauge + duplicate -> 4 rows each product + $query->join(MIG_MAT_SRC_DB .'.product_info', 'prod_info', 'prod_id.id_product = prod_info.id_product'); + + $query + ->fields('pod_id', array('id_product', 'id_materio', 'status', 'temp_flag', 'sample_status', 'memo', 'source', 'date_creation', 'date_modif')) + ->fields('prod_info', array('name', 'nature', 'description', 'usage', 'technical', 'keywords')) + ->orderBy('id_product', 'DESC'); + + $query->groupBy('prod_id.id_product'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationNode('materiau'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_product' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique Materiau ID', + 'alias' => 'prod_id', + ) + ), + MigrateDestinationNode::getKeySchema() + ); + + $this->addFieldMapping('is_new')->defaultValue(TRUE); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('changed', 'date_modif'); + $this->addFieldMapping('status')->defaultValue(1); + $this->addFieldMapping('promote')->defaultValue(0); + $this->addFieldMapping('sticky')->defaultValue(0); + + + $this->addFieldMapping('title', 'name'); + $this->addFieldMapping('field_memo', 'memo'); + + /* + TODO translate node + */ + //$this->addFieldMapping('language'); + //$this->addFieldMapping('field_nature_titre', 'nature'); + + } +} \ No newline at end of file diff --git a/migrate_materio.module b/migrate_materio.module index 0986c7f0..8d441679 100644 --- a/migrate_materio.module +++ b/migrate_materio.module @@ -7,17 +7,7 @@ * file does exactly. Make sure to wrap your documentation in column 78 so * that the file can be displayed nicely in default-sized consoles. */ - -/** - * Implements hook_menu(). - */ -function migrate_materio_menu() { - $items = array(); - - // Type '$item ⇥' to create a new menu item. - - return $items; -} +define('MIG_MAT_SRC_DB', variable_get('migrate_materio_database', '')); /** @@ -29,4 +19,46 @@ function migrate_materio_migrate_api() { 'api' => 2, ); return $api; -} \ No newline at end of file +} + +/** + * Implements hook_menu(). + */ +function migrate_materio_menu() { + $items = array(); + + $items['admin/config/development/migrate_materio'] = array( + 'title' => 'Materio Migration Settings', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('migrate_materio_settings'), + 'access callback' => 'user_access', + 'access arguments' => array('administer site configuration'), + ); + + return $items; +} + + +/** + * Form to setting up the database name and migration file path for migration of data. + */ +function migrate_materio_settings($form, &$form_state) { + $form['migrate_materio_database'] = array( + '#type' => 'textfield', + '#title' => 'Database name', + '#default_value' => variable_get('migrate_materio_database', ''), + '#description' => t('Please enter the name of the database. Note that the database must be accessible by current website db user and must reside on the same db server.'), + '#required' => TRUE, + ); + + // $form['redcat_migration_file_path'] = array( + // '#type' => 'textfield', + // '#title' => 'Migrated Files Path', + // '#default_value' => variable_get('redcat_migration_file_path', '/Users/amodi/Sites/redcat.org/sites/redcat.org/files'), + // '#description' => t('Please enter the full path to get to the home directory of the migrating site - the files will be found through the base'), + // '#required' => TRUE, + // ); + + return system_settings_form($form); +} + From 94bf329b91b9229965ac3ca428c99684a9e3d480 Mon Sep 17 00:00:00 2001 From: bachy Date: Sun, 13 May 2012 13:27:58 +0200 Subject: [PATCH 03/13] Industrials OK Company CT account, contact, admin, sample USERS Signed-off-by: bachy --- migrate_materio.account.inc | 84 +++++++++ migrate_materio.admin.inc | 232 +++++++++++++++++++++++++ migrate_materio.company.inc | 204 ++++++++++++++++++++++ migrate_materio.contact.inc | 328 +++++++++++------------------------ migrate_materio.info | 4 + migrate_materio.materiau.inc | 13 +- migrate_materio.sample.inc | 84 +++++++++ 7 files changed, 724 insertions(+), 225 deletions(-) create mode 100644 migrate_materio.account.inc create mode 100644 migrate_materio.admin.inc create mode 100644 migrate_materio.company.inc create mode 100644 migrate_materio.sample.inc diff --git a/migrate_materio.account.inc b/migrate_materio.account.inc new file mode 100644 index 00000000..85c2ee0a --- /dev/null +++ b/migrate_materio.account.inc @@ -0,0 +1,84 @@ +description = t('Migrate Materio Industrials Account Users'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'memo' => t('memo'), + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_account', 'ind_ac', 'iid.id_industrial = ind_ac.id_industrial'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('ind_ac', array('login', 'password')) + ->fields('iinf', array('company', 'email_general')) + ->orderBy('iid.id_industrial', 'DESC'); + + $query->groupBy('iid.id_industrial'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationUser(); + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationUser::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('name', 'login'); + $this->addFieldMapping('pass', 'password');//->defaultValue(NULL); + $this->addFieldMapping('mail', 'email_general'); + # NOTE : maybe if we provide only init mail, we wiil be able to ask email confirmation for users + $this->addFieldMapping('init', 'email_general'); + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access', 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(0); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles')->defaultValue(array(5)); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('field_company', 'company'); + + } + + public function prepareRow($cr) { + if($cr->email_general == '') + return false; + + $cr->company = trim($cr->company); + + $cr->memo = $cr->login .' | '. $cr->password; + + return TRUE; + // return FALSE if you wish to skip a particular row + } + +} + diff --git a/migrate_materio.admin.inc b/migrate_materio.admin.inc new file mode 100644 index 00000000..33e38186 --- /dev/null +++ b/migrate_materio.admin.inc @@ -0,0 +1,232 @@ +description = t('Migrate Materio Industrials Admin Users'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'memo' => t('memo'), + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('iinf', array('company', 'email_admin')) + ->orderBy('iid.id_industrial', 'DESC'); + + $query->groupBy('iid.id_industrial'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationUser(); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationUser::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('name')->defaultValue('aname'); + $this->addFieldMapping('pass')->defaultValue(NULL); + $this->addFieldMapping('mail', 'email_admin'); + # NOTE : maybe if we provide only init mail, we wiil be able to ask email confirmation for users + $this->addFieldMapping('init', 'email_admin'); + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access', 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(0); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles')->defaultValue(array(5)); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('field_company', 'company'); + + } + + public function prepareRow($cr) { + + if($cr->email_admin == "") + return false; + + $cr->company = trim($cr->company); + + $cr->memo = "#admin"; + + return TRUE; + // return FALSE if you wish to skip a particular row + } + +} + + +/** + * MaterioIndustrialProfile2Migration + */ +class MaterioIndustrialAdminProfile2Migration extends MaterioBasicMigration { + public function __construct() { + parent::__construct(); + global $user; + $this->description = t('Migrate Materio Industrials Admin Profiles2'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'admin_quality'=> t('en-fr admin quality implemented on prepare'), + 'language'=> t('en-fr langauge description, used in prepare'), + 'tels_admin' => '', + 'ccodes_admin' => '' + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + + $ilfr_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilfr_select') + ->fields('ilfr_select')->condition('ilfr_select.id_locale',1)->orderBy('ilfr_select.id_industrial', 'DESC')->distinct(); + $query->join($ilfr_select, 'ilfr', 'iid.id_industrial = ilfr.id_industrial'); + + + $ilen_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilen_select') + ->fields('ilen_select')->condition('ilen_select.id_locale',2)->orderBy('ilen_select.id_industrial', 'ASC')->distinct(); + $query->join($ilen_select, 'ilen', 'iid.id_industrial = ilen.id_industrial'); + + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('iinf', array('admin', 'admin_title', 'email_admin', 'tel1_admin', 'ccode1_admin', 'tel2_admin', 'ccode2_admin')); + + $query->addField('ilfr', 'admin_quality', 'admin_quality_fr'); + $query->addField('ilen', 'admin_quality', 'admin_quality_en'); + + $query->groupBy('iid.id_industrial') + ->orderBy('iid.id_industrial', 'DESC'); + + + $this->source = new MigrateSourceSQL($query, $source_fields); + // $this->dependencies = array('MaterioIndustrialUser'); + $this->destination = new MigrateDestinationProfile2('contact_operationnel'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationProfile2::getKeySchema() + ); + + // Connecting the profile2 to the user: + $this->addFieldMapping('uid', 'id_industrial') + ->sourceMigration('MaterioIndustrialAdminUser') // If your user migration class was named 'MyUserMigration', the string is 'MyUser' + ->description(t('The assignment of profile2-items to the respective user')); + + $this->addFieldMapping('revision_uid', 'id_industrial') + ->sourceMigration('MaterioIndustrialAdminUser'); + + // Make the mappings + $this->addFieldMapping('language')->defaultValue(''); + + $this->addFieldMapping('field_private_name', 'admin'); + $this->addFieldMapping('field_private_name_title', 'admin_title'); + + // see on prepareRow() + $this->addFieldMapping('field_private_quality', 'admin_quality'); + $this->addFieldMapping('field_private_quality:language', 'language'); + $this->addFieldMapping(NULL, 'admin_quality_en'); + $this->addFieldMapping(NULL, 'admin_quality_fr'); + + + $this->addFieldMapping('field_private_email', 'email_admin'); // http://drupal.org/node/1232028 + + $arguments = array( + 'number' => array('source_field' => 'tel1_admin'), + // 'extension' => array('source_field' => 'ccode1_admin'), + ); + $this->addFieldMapping('field_private_phone', 'ccode1_admin') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'tel1_admin'); + // $this->addFieldMapping(NULL, 'ccode1_admin'); + $this->addFieldMapping(NULL, 'tel2_admin'); + $this->addFieldMapping(NULL, 'ccode2_admin'); + + $this->addFieldMapping('field_memo', 'memo'); + + } + + + public function prepareRow($cr) { + if($cr->email_admin == "") + return false; + + $cr->admin_quality = array($cr->admin_quality_en, $cr->admin_quality_fr); + $cr->language = array('en', 'fr'); + + $ccs = cck_phone_countrycodes(); + $match = 0; + foreach ($ccs as $cc => $cc_values) { + if('+'.$cr->ccode1_admin == $cc_values['code']){ + $cr->ccode1_admin = $cc; + $match++; + } + if('+'.$cr->ccode2_admin == $cc_values['code']){ + $cr->ccode2_admin = $cc; + $match++; + } + if($match == 2) + break; + } + + if($cr->tel2_admin != ''){ + $cc = cck_phone_countrycodes($cr->ccode2_admin); + $cr->memo .= "\n".'tel2 admin : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel2_admin; + } + + // dsm($cr, '- - - - $cr - - - -'); + + return TRUE; + // return FALSE if you wish to skip a particular row + } + + + + public function prepare($node, stdClass $row) { + // dsm('-- prepare --'); + // dsm($node, '$node'); + // dsm($row, '$row'); + + // $node->field_public_email = array('und'=>array($row->email_admin)); + + } + + + +} \ No newline at end of file diff --git a/migrate_materio.company.inc b/migrate_materio.company.inc new file mode 100644 index 00000000..e2345259 --- /dev/null +++ b/migrate_materio.company.inc @@ -0,0 +1,204 @@ +description = t('Migrate Materio Company Node'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'department'=> t('en-fr department implemented on prepare'), + 'language'=> t('en-fr langauge description, used in prepare'), + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + + $ilfr_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilfr_select') + ->fields('ilfr_select')->condition('ilfr_select.id_locale',1)->orderBy('ilfr_select.id_industrial', 'DESC')->distinct(); + $query->join($ilfr_select, 'ilfr', 'iid.id_industrial = ilfr.id_industrial'); + + $ilen_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilen_select') + ->fields('ilen_select')->condition('ilen_select.id_locale',2)->orderBy('ilen_select.id_industrial', 'ASC')->distinct(); + $query->join($ilen_select, 'ilen', 'iid.id_industrial = ilen.id_industrial'); + + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif', 'memo')) + ->fields('iinf', array('company', 'address', 'city', 'zip', 'web', 'ccode1', 'tel1', 'ccode2', 'tel2', 'ccode3', 'tel3')) + ->orderBy('id_industrial', 'DESC'); + + $query->addField('ilfr', 'department', 'department_fr'); + $query->addField('ilfr', 'country', 'country_fr'); + + $query->addField('ilen', 'department', 'department_en'); + $query->addField('ilen', 'country', 'country_en'); + + $query->groupBy('id_industrial') + ->orderBy('id_industrial', 'DESC'); + + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationNode('company'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationNode::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('changed', 'date_modif'); + $this->addFieldMapping('status')->defaultValue(1); + $this->addFieldMapping('promote')->defaultValue(0); + $this->addFieldMapping('sticky')->defaultValue(0); + + $this->addFieldMapping('field_tode_company', 'company') + ->arguments(array('create_term' => TRUE)); + + // see on prepareRow() + $this->addFieldMapping('field_department', 'department'); + $this->addFieldMapping('field_department:language', 'language'); + $this->addFieldMapping(NULL, 'department_en'); + $this->addFieldMapping(NULL, 'department_fr'); + + $arguments = array( + // 'name_line' => array('source_field' => 'name'), + 'thoroughfare' => array('source_field' => 'address'), + 'locality' => array('source_field' => 'city'), + 'postal_code' => array('source_field' => 'zip'), + ); + $this->addFieldMapping('field_public_address', 'country_en') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'address'); + $this->addFieldMapping(NULL, 'city'); + $this->addFieldMapping(NULL, 'zip'); + $this->addFieldMapping(NULL, 'country_fr'); + + $arguments = MigrateLinkFieldHandler::arguments(array('source_field' => 'web_title')); + $this->addFieldMapping('field_website', 'web') + ->arguments($arguments); + + $this->addFieldMapping('body')->defaultValue(''); + $this->addFieldMapping('field_infos_from_company')->defaultValue(''); + + + $arguments = array( + 'number' => array('source_field' => 'tel1'), + // 'extension' => array('source_field' => 'ccode1_contact'), + ); + $this->addFieldMapping('field_public_phone', 'ccode1') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'tel1'); + // $this->addFieldMapping(NULL, 'ccode1_contact'); + $this->addFieldMapping(NULL, 'tel2'); + $this->addFieldMapping(NULL, 'ccode2'); + $this->addFieldMapping(NULL, 'tel3'); + $this->addFieldMapping(NULL, 'ccode3'); + /* + TODO + multiple field phone number ?? tel2 ccode2 tel3 ccode3 + for now added to memo + */ + + + $this->addFieldMapping('field_note')->defaultValue(2); + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('comment')->defaultValue(0); + $this->addFieldMapping('revision')->defaultValue(0); + + } + + + public function prepareRow($cr) { + $cr->address = preg_replace('/\\n/', ', ', $cr->address); + $cr->city = preg_replace('/\\n/', ' ', $cr->city); + + $cr->department = array($cr->department_en, $cr->department_fr); + // $cr->contact_quality = array($cr->contact_quality_en, $cr->contact_quality_fr); + // $cr->admin_quality = array($cr->admin_quality_en, $cr->admin_quality_fr); + $cr->language = array('en', 'fr'); + + $cr->web_title = str_replace('http://', '', $cr->web); + $cr->web = 'http://' . $cr->web_title; + + $cr->company = trim($cr->company); + + + // if($cr->email_general != "") + // $cr->email_sample .= ','.$cr->email_general; + + $ccs = cck_phone_countrycodes(); + $match = 0; + foreach ($ccs as $cc => $cc_values) { + if('+'.$cr->ccode1 == $cc_values['code']){ + $cr->ccode1 = $cc; + $match++; + } + if('+'.$cr->ccode2 == $cc_values['code']){ + $cr->ccode2 = $cc; + $match++; + } + if('+'.$cr->ccode3 == $cc_values['code']){ + $cr->ccode3 = $cc; + $match++; + } + + if($match == 4) + break; + } + + // do this because i don't know how to insert multiple phone fields + if($cr->tel2 != ''){ + $cc = cck_phone_countrycodes($cr->ccode2); + $cr->memo .= "\n".'tel2 : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel2; + } + if($cr->tel3 != ''){ + $cc = cck_phone_countrycodes($cr->ccode3); + $cr->memo .= "\n".'tel3 : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel3; + } + + + + // dsm($cr, '- - - - $cr - - - -'); + + return TRUE; + // return FALSE if you wish to skip a particular row + } + + + + public function prepare($node, stdClass $row) { + // dsm('-- prepare --'); + // dsm($node, '$node'); + // dsm($row, '$row'); + + + + $node->workflow = 4; + + // $node->field_public_email = array('und'=>array($row->email_contact)); + + } + + + +} \ No newline at end of file diff --git a/migrate_materio.contact.inc b/migrate_materio.contact.inc index 1b1a4042..3bb6d63b 100644 --- a/migrate_materio.contact.inc +++ b/migrate_materio.contact.inc @@ -3,25 +3,25 @@ * MaterioIndustrialUserMigration * */ -class MaterioIndustrialUserMigration extends MaterioBasicMigration { +class MaterioIndustrialContactUserMigration extends MaterioBasicMigration { public function __construct() { parent::__construct(); - $this->description = t('Migrate Materio Industrials Users'); + $this->description = t('Migrate Materio Industrials Contact Users'); // provide better description for source fields // and add new field source not from sql $source_fields = array( - 'id_industrial' => t('Industrial id from source') + 'id_industrial' => t('Industrial id from source'), + 'memo'=>t('memo'), ); $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); - $query->join(MIG_MAT_SRC_DB .'.industrial_account', 'ind_ac', 'iid.id_industrial = ind_ac.id_industrial'); $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + $query ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) - ->fields('ind_ac', array('login', 'password')) - ->fields('iinf', array('email_general')) - ->orderBy('id_industrial', 'DESC'); + ->fields('iinf', array('company', 'email_contact')) + ->orderBy('iid.id_industrial', 'DESC'); $query->groupBy('iid.id_industrial'); @@ -41,36 +41,45 @@ class MaterioIndustrialUserMigration extends MaterioBasicMigration { MigrateDestinationUser::getKeySchema() ); - // Make the mappings - $this->addFieldMapping('name', 'login'); - $this->addFieldMapping('pass', 'password'); - $this->addFieldMapping('mail', 'email_general'); - $this->addFieldMapping('language')->defaultValue(''); - $this->addFieldMapping('theme')->defaultValue(''); - $this->addFieldMapping('signature')->defaultValue(''); - $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); - $this->addFieldMapping('created', 'date_creation'); - $this->addFieldMapping('access', 'date_modif'); - $this->addFieldMapping('login')->defaultValue(0); - $this->addFieldMapping('status')->defaultValue(1); - $this->addFieldMapping('picture')->defaultValue(0); - $this->addFieldMapping('init', 'email_general'); - $this->addFieldMapping('timezone')->defaultValue(NULL); - // $this->addFieldMapping('path')->issueGroup(t('DNM')); - $this->addFieldMapping('pathauto')->defaultValue(1); - $this->addFieldMapping('roles')->defaultValue(array(5)); - $this->addFieldMapping('is_new')->defaultValue(TRUE); + // Make the mappings + $this->addFieldMapping('name')->defaultValue('aname'); + $this->addFieldMapping('pass')->defaultValue(NULL); + $this->addFieldMapping('mail', 'email_contact'); + # NOTE : maybe if we provide only init mail, we wiil be able to ask email confirmation for users + $this->addFieldMapping('init', 'email_contact'); + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access', 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(0); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles')->defaultValue(array(5)); + $this->addFieldMapping('is_new')->defaultValue(TRUE); - // $this->addFieldMapping('contact', 'contact_list') - // ->separator(',') - // ->arguments(array('source_type' => 'tid')); + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('field_company', 'company'); } - // public function prepareRow($current_row) { - // return TRUE; - // // return FALSE if you wish to skip a particular row - // } + public function prepareRow($cr) { + + if($cr->email_contact == "") + return false; + + $cr->company = trim($cr->company); + + $cr->memo = "#contact"; + + return TRUE; + // return FALSE if you wish to skip a particular row + } } @@ -78,56 +87,46 @@ class MaterioIndustrialUserMigration extends MaterioBasicMigration { /** * MaterioIndustrialProfile2Migration */ -class MaterioIndustrialProfile2Migration extends MaterioBasicMigration { +class MaterioIndustrialContactProfile2Migration extends MaterioBasicMigration { public function __construct() { parent::__construct(); global $user; - $this->description = t('Migrate Materio Industrials Profiles2'); + $this->description = t('Migrate Materio Industrials Contact Profiles2'); // provide better description for source fields // and add new field source not from sql $source_fields = array( 'id_industrial' => t('Industrial id from source'), - 'department'=> t('en-fr department implemented on prepare'), 'contact_quality'=> t('en-fr contat quality implemented on prepare'), - 'admin_quality'=> t('en-fr admin quality implemented on prepare'), 'language'=> t('en-fr langauge description, used in prepare'), 'tels_contact'=>'', 'ccodes_contact'=>'', - 'tels_admin' => '', - 'ccodes_admin' => '' + 'memo' => ',' ); - + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); $ilfr_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilfr_select') ->fields('ilfr_select')->condition('ilfr_select.id_locale',1)->orderBy('ilfr_select.id_industrial', 'DESC')->distinct(); - $query->join($ilfr_select, 'ilfr', 'iid.id_industrial = ilfr.id_industrial'); - $ilen_select = db_select(MIG_MAT_SRC_DB .'.industrial_lang', 'ilen_select') ->fields('ilen_select')->condition('ilen_select.id_locale',2)->orderBy('ilen_select.id_industrial', 'ASC')->distinct(); - $query->join($ilen_select, 'ilen', 'iid.id_industrial = ilen.id_industrial'); + $query - ->fields('iid', array('id_industrial', 'memo')) - ->fields('iinf', array('company', 'address', 'city', 'zip', 'web', 'email_general', 'contact', 'contact_title', 'email_contact', 'tel1_contact', 'ccode1_contact', 'tel2_contact', 'ccode2_contact', 'admin', 'admin_title', 'email_admin', 'tel1_admin', 'ccode1_admin', 'tel2_admin', 'ccode2_admin', 'email_sample')); + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('iinf', array('contact', 'contact_title', 'email_contact', 'tel1_contact', 'ccode1_contact', 'tel2_contact', 'ccode2_contact')); - $query->addField('ilfr', 'department', 'department_fr'); - $query->addField('ilfr', 'country', 'country_fr'); $query->addField('ilfr', 'contact_quality', 'contact_quality_fr'); - $query->addField('ilfr', 'admin_quality', 'admin_quality_fr'); - $query->addField('ilen', 'department', 'department_en'); - $query->addField('ilen', 'country', 'country_en'); $query->addField('ilen', 'contact_quality', 'contact_quality_en'); - $query->addField('ilen', 'admin_quality', 'admin_quality_en'); - $query->groupBy('id_industrial') - ->orderBy('id_industrial', 'DESC'); + $query->groupBy('iid.id_industrial') + ->orderBy('iid.id_industrial', 'DESC'); $this->source = new MigrateSourceSQL($query, $source_fields); @@ -149,208 +148,89 @@ class MaterioIndustrialProfile2Migration extends MaterioBasicMigration { // Connecting the profile2 to the user: $this->addFieldMapping('uid', 'id_industrial') - ->sourceMigration('MaterioIndustrialUser') // If your user migration class was named 'MyUserMigration', the string is 'MyUser' - ->description(t('The assignment of profile2-items to the respective user')); + ->sourceMigration('MaterioIndustrialContactUser') // If your user migration class was named 'MyUserMigration', the string is 'MyUser' + ->description(t('The assignment of profile2-items to the respective Contact user')); $this->addFieldMapping('revision_uid', 'id_industrial') - ->sourceMigration('MaterioIndustrialUser'); + ->sourceMigration('MaterioIndustrialContactUser'); // Make the mappings $this->addFieldMapping('language')->defaultValue(''); - - $this->addFieldMapping('field_company', 'company') - ->arguments(array('create_term' => TRUE)); - - // see on prepareRow() - $this->addFieldMapping('field_department', 'department'); - $this->addFieldMapping('field_department:language', 'language'); - $this->addFieldMapping(NULL, 'department_en'); - $this->addFieldMapping(NULL, 'department_fr'); - - $arguments = array( - // 'name_line' => array('source_field' => 'name'), - 'thoroughfare' => array('source_field' => 'address'), - 'locality' => array('source_field' => 'city'), - 'postal_code' => array('source_field' => 'zip'), - ); - $this->addFieldMapping('field_public_address', 'country_en') - ->arguments($arguments); - - $this->addFieldMapping(NULL, 'address'); - $this->addFieldMapping(NULL, 'city'); - $this->addFieldMapping(NULL, 'zip'); - $this->addFieldMapping(NULL, 'country_fr'); - - // $this->addFieldMapping('field_website', 'web'); - // ->arguments(array('url'=>array("source_field"=>'web'))); - $arguments = MigrateLinkFieldHandler::arguments(array('source_field' => 'web_title')); - $this->addFieldMapping('field_website', 'web') - ->arguments($arguments); - - - $this->addFieldMapping('field_presentation')->defaultValue(''); - $this->addFieldMapping('field_public_name', 'contact'); - $this->addFieldMapping('field_public_name_title', 'contact_title'); + $this->addFieldMapping('field_private_name', 'contact'); + $this->addFieldMapping('field_private_name_title', 'contact_title'); - $this->addFieldMapping('field_public_email', 'email_contact'); // http://drupal.org/node/1232028 + // see on prepareRow() + $this->addFieldMapping('field_private_quality', 'contact_quality'); + $this->addFieldMapping('field_private_quality:language', 'language'); + $this->addFieldMapping(NULL, 'contact_quality_en'); + $this->addFieldMapping(NULL, 'contact_quality_fr'); + + + + $this->addFieldMapping('field_private_email', 'email_contact'); // http://drupal.org/node/1232028 $arguments = array( 'number' => array('source_field' => 'tel1_contact'), // 'extension' => array('source_field' => 'ccode1_contact'), ); - $this->addFieldMapping('field_public_phone', 'ccode1_contact') + $this->addFieldMapping('field_private_phone', 'ccode1_contact') ->arguments($arguments); $this->addFieldMapping(NULL, 'tel1_contact'); // $this->addFieldMapping(NULL, 'ccode1_contact'); $this->addFieldMapping(NULL, 'tel2_contact'); $this->addFieldMapping(NULL, 'ccode2_contact'); - /* - TODO - multiple field phone number ?? tel2_contact ccode2_contact - */ - // see on prepareRow() - $this->addFieldMapping('field_public_quality', 'contact_quality'); - $this->addFieldMapping('field_public_quality:language', 'language'); - $this->addFieldMapping(NULL, 'contact_quality_en'); - $this->addFieldMapping(NULL, 'contact_quality_fr'); - - $this->addFieldMapping('field_private_name', 'admin'); - $this->addFieldMapping('field_private_name_title', 'admin_title'); - $this->addFieldMapping('field_private_email', 'email_admin'); - - // see on prepareRow() - $this->addFieldMapping('field_private_quality', 'admin_quality'); - $this->addFieldMapping('field_private_quality:language', 'language'); - $this->addFieldMapping(NULL, 'admin_quality_en'); - $this->addFieldMapping(NULL, 'admin_quality_fr'); - - - $arguments = array( - 'number' => array('source_field' => 'tel1_admin'), - // 'extension' => array('source_field' => 'ccode1_admin'), - ); - $this->addFieldMapping('field_private_phone', 'ccode1_admin') - ->arguments($arguments); - - $this->addFieldMapping(NULL, 'tel1_admin'); - // $this->addFieldMapping(NULL, 'ccode1_admin'); - $this->addFieldMapping(NULL, 'tel2_admin'); - $this->addFieldMapping(NULL, 'ccode2_admin'); - /* - TODO - multiple field phone number ?? tel2_admin ccode2_admin - */ - - - $this->addFieldMapping('field_private_other_emails', 'email_sample') - ->separator(','); - $this->addFieldMapping(NULL, 'email_general'); - - - $this->addFieldMapping('field_note')->defaultValue(2); $this->addFieldMapping('field_memo', 'memo'); } - public function prepareRow($current_row) { - $current_row->address = preg_replace('/\\n/', ', ', $current_row->address); - $current_row->city = preg_replace('/\\n/', ' ', $current_row->city); - - $current_row->department = array($current_row->department_en, $current_row->department_fr); - $current_row->contact_quality = array($current_row->contact_quality_en, $current_row->contact_quality_fr); - $current_row->admin_quality = array($current_row->admin_quality_en, $current_row->admin_quality_fr); - $current_row->language = array('en', 'fr'); - - $current_row->web_title = str_replace('http://', '', $current_row->web); - $current_row->web = 'http://' . $current_row->web_title; - - if($current_row->email_general != "") - $current_row->email_sample .= ','.$current_row->email_general; - - $ccs = cck_phone_countrycodes(); - $match = 0; - foreach ($ccs as $cc => $cc_values) { - if('+'.$current_row->ccode1_contact == $cc_values['code']){ - $current_row->ccode1_contact = $cc; - $match++; - } - if('+'.$current_row->ccode2_contact == $cc_values['code']){ - $current_row->ccode2_contact = $cc; - $match++; - } - - if('+'.$current_row->ccode1_admin == $cc_values['code']){ - $current_row->ccode1_admin = $cc; - $match++; - } - if('+'.$current_row->ccode2_admin == $cc_values['code']){ - $current_row->ccode2_admin = $cc; - $match++; - } - - if($match == 4) - break; - } - - if($current_row->tel2_contact != ''){ - $cc = cck_phone_countrycodes($current_row->ccode2_contact); - $current_row->memo .= "\n".'tel2 contact : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $current_row->tel2_contact; - } - - if($current_row->tel2_admin != ''){ - $cc = cck_phone_countrycodes($current_row->ccode2_admin); - $current_row->memo .= "\n".'tel2 admin : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $current_row->tel2_admin; - } + public function prepareRow($cr) { + if($cr->email_contact == "") + return false; - // $current_row->tels_contact = array(); - // $current_row->ccodes_contact = array(); - // if($current_row->tel1_contact != ''){ - // // $current_row->tels_contact[] = $current_row->tel1_contact; - // // $current_row->ccodes_contact[] = $current_row->ccode1_contact; - // $current_row->tels_contact[] = drupal_json_encode(array('counry_code'=>$current_row->ccode1_contact, 'number'=>$current_row->tel1_contact)); - // } - // if($current_row->tel2_contact != ''){ - // // $current_row->tels_contact[] = $current_row->tel2_contact; - // // $current_row->ccodes_contact[] = $current_row->ccode2_contact; - // $current_row->tels_contact[] = drupal_json_encode(array('counry_code'=>$current_row->ccode2_contact, 'number'=>$current_row->tel2_contact)); - // } - - // $current_row->tels_admin = array(); - // $current_row->ccodes_admin = array(); - // if($current_row->tel1_admin != ''){ - // // $current_row->tels_admin[] = $current_row->tel1_admin; - // // $current_row->ccodes_admin[] = $current_row->ccode1_admin; - // $current_row->tels_admin[] = drupal_json_encode(array('counry_code'=>$current_row->ccode1_admin, 'number'=>$current_row->tel1_admin)); - // } - // if($current_row->tel2_admin != ''){ - // // $current_row->tels_admin[] = $current_row->tel2_admin; - // // $current_row->ccodes_admin[] = $current_row->ccode2_admin; - // $current_row->tels_admin[] = drupal_json_encode(array('counry_code'=>$current_row->ccode2_admin, 'number'=>$current_row->tel2_admin)); - // } - - + $cr->contact_quality = array($cr->contact_quality_en, $cr->contact_quality_fr); + $cr->language = array('en', 'fr'); - dsm($current_row, '- - - - $current_row - - - -'); - - return TRUE; - // return FALSE if you wish to skip a particular row + $ccs = cck_phone_countrycodes(); + $match = 0; + foreach ($ccs as $cc => $cc_values) { + if('+'.$cr->ccode1_contact == $cc_values['code']){ + $cr->ccode1_contact = $cc; + $match++; + } + if('+'.$cr->ccode2_contact == $cc_values['code']){ + $cr->ccode2_contact = $cc; + $match++; + } + if($match == 2) + break; + } + + if($cr->tel2_contact != ''){ + $cc = cck_phone_countrycodes($cr->ccode2_contact); + $cr->memo .= "\n".'tel2 contact : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel2_contact; + } + + // dsm($cr, '- - - - $cr - - - -'); + + return TRUE; + // return FALSE if you wish to skip a particular row } - public function prepare($node, stdClass $row) { - // dsm('-- prepare --'); - // dsm($node, '$node'); - // dsm($row, '$row'); - - // $node->field_public_email = array('und'=>array($row->email_contact)); - - } + // public function prepare($node, stdClass $row) { + // // dsm('-- prepare --'); + // // dsm($node, '$node'); + // // dsm($row, '$row'); + // + // // $node->field_private_email = array('und'=>array($row->email_contact)); + // + // } diff --git a/migrate_materio.info b/migrate_materio.info index 3c6577dd..3cc40fa9 100644 --- a/migrate_materio.info +++ b/migrate_materio.info @@ -13,7 +13,11 @@ core = 7.x ; Loadable code files files[] = migrate_materio.module files[] = migrate_materio.basic.inc + files[] = migrate_materio.company.inc + files[] = migrate_materio.account.inc files[] = migrate_materio.contact.inc + files[] = migrate_materio.admin.inc + files[] = migrate_materio.sample.inc files[] = migrate_materio.materiau.inc ; Module dependencies diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc index d09af260..272d11df 100644 --- a/migrate_materio.materiau.inc +++ b/migrate_materio.materiau.inc @@ -21,7 +21,7 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $query ->fields('pod_id', array('id_product', 'id_materio', 'status', 'temp_flag', 'sample_status', 'memo', 'source', 'date_creation', 'date_modif')) ->fields('prod_info', array('name', 'nature', 'description', 'usage', 'technical', 'keywords')) - ->orderBy('id_product', 'DESC'); + ->orderBy('prod_id.id_product', 'DESC'); $query->groupBy('prod_id.id_product'); @@ -59,4 +59,15 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { //$this->addFieldMapping('field_nature_titre', 'nature'); } + + public function prepareRow($cr){ + + $cr->company = trim($cr->company); + + } + + + + + } \ No newline at end of file diff --git a/migrate_materio.sample.inc b/migrate_materio.sample.inc new file mode 100644 index 00000000..9d67b298 --- /dev/null +++ b/migrate_materio.sample.inc @@ -0,0 +1,84 @@ +description = t('Migrate Materio Industrials Email Sample Users'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_industrial' => t('Industrial id from source'), + 'memo' => t('memo'), + ); + + $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); + $query->join(MIG_MAT_SRC_DB .'.industrial_info', 'iinf', 'iid.id_industrial = iinf.id_industrial'); + + $query + ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) + ->fields('iinf', array('company', 'email_sample')) + ->orderBy('iid.id_industrial', 'DESC') + ->groupBy('iid.id_industrial'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationUser(); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_industrial' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique industrial ID', + 'alias' => 'iid', + ) + ), + MigrateDestinationUser::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('name')->defaultValue('aname'); + $this->addFieldMapping('pass')->defaultValue(NULL); + $this->addFieldMapping('mail', 'email_sample'); + # NOTE : maybe if we provide only init mail, we wiil be able to ask email confirmation for users + $this->addFieldMapping('init', 'email_sample'); + $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access', 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(0); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles')->defaultValue(array(5)); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('field_company', 'company'); + + + } + + public function prepareRow($cr) { + if($cr->email_sample == '') + return false; + + $cr->company = trim($cr->company); + + $cr->memo = "#sample"; + + return TRUE; + // return FALSE if you wish to skip a particular row + } + +} + From 760047e9fc0ac8780cfe69e9e7b7ac6472fa6325 Mon Sep 17 00:00:00 2001 From: bachy Date: Sun, 13 May 2012 23:02:27 +0200 Subject: [PATCH 04/13] materiaux companies ok + sql improvement Signed-off-by: bachy --- migrate_materio.account.inc | 1 + migrate_materio.admin.inc | 5 +- migrate_materio.contact.inc | 5 +- migrate_materio.materiau.inc | 205 ++++++++++++++++++++++++++++------- migrate_materio.sample.inc | 1 + 5 files changed, 177 insertions(+), 40 deletions(-) diff --git a/migrate_materio.account.inc b/migrate_materio.account.inc index 85c2ee0a..11f25293 100644 --- a/migrate_materio.account.inc +++ b/migrate_materio.account.inc @@ -22,6 +22,7 @@ class MaterioIndustrialAccountUserMigration extends MaterioBasicMigration { ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) ->fields('ind_ac', array('login', 'password')) ->fields('iinf', array('company', 'email_general')) + ->condition('email_general', '', '<>') ->orderBy('iid.id_industrial', 'DESC'); $query->groupBy('iid.id_industrial'); diff --git a/migrate_materio.admin.inc b/migrate_materio.admin.inc index 33e38186..e1b790f8 100644 --- a/migrate_materio.admin.inc +++ b/migrate_materio.admin.inc @@ -21,6 +21,7 @@ class MaterioIndustrialAdminUserMigration extends MaterioBasicMigration { $query ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) ->fields('iinf', array('company', 'email_admin')) + ->condition('email_admin', '', '<>') ->orderBy('iid.id_industrial', 'DESC'); $query->groupBy('iid.id_industrial'); @@ -122,7 +123,9 @@ class MaterioIndustrialAdminProfile2Migration extends MaterioBasicMigration { $query->addField('ilfr', 'admin_quality', 'admin_quality_fr'); $query->addField('ilen', 'admin_quality', 'admin_quality_en'); - $query->groupBy('iid.id_industrial') + $query + ->condition('email_admin', '', '<>') + ->groupBy('iid.id_industrial') ->orderBy('iid.id_industrial', 'DESC'); diff --git a/migrate_materio.contact.inc b/migrate_materio.contact.inc index 3bb6d63b..34d906f3 100644 --- a/migrate_materio.contact.inc +++ b/migrate_materio.contact.inc @@ -21,6 +21,7 @@ class MaterioIndustrialContactUserMigration extends MaterioBasicMigration { $query ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) ->fields('iinf', array('company', 'email_contact')) + ->condition('email_contact', '', '<>') ->orderBy('iid.id_industrial', 'DESC'); $query->groupBy('iid.id_industrial'); @@ -125,7 +126,9 @@ class MaterioIndustrialContactProfile2Migration extends MaterioBasicMigration { $query->addField('ilen', 'contact_quality', 'contact_quality_en'); - $query->groupBy('iid.id_industrial') + $query + ->condition('email_contact', '', '<>') + ->groupBy('iid.id_industrial') ->orderBy('iid.id_industrial', 'DESC'); diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc index 272d11df..44e215e1 100644 --- a/migrate_materio.materiau.inc +++ b/migrate_materio.materiau.inc @@ -11,61 +11,190 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { // provide better description for source fields // and add new field source not from sql $source_fields = array( - 'id_product' => t('Materiau id from source') + 'id_product' => t('Materiau id from source'), + 'company_fab'=>t('company_fab'), + 'company_distrib'=>t('company_distrib'), + // 'name'=> t('en-fr name implemented on prepare'), + // 'description'=> t('en-fr description implemented on prepare'), + // 'nature'=> t('en-fr nature implemented on prepare'), + // 'language'=> t('en-fr langauge description, used in prepare'), ); - $query = db_select(MIG_MAT_SRC_DB .'.product_id', 'prod_id'); - // WARNING ! product_info is double langauge + duplicate -> 4 rows each product - $query->join(MIG_MAT_SRC_DB .'.product_info', 'prod_info', 'prod_id.id_product = prod_info.id_product'); + $query = db_select(MIG_MAT_SRC_DB .'.product_id', 'pid'); + + $query->join(MIG_MAT_SRC_DB .'.product_industrial', 'pind', 'pind.id_product = pid.id_product'); + + // $industrial_query = db_select(MIG_MAT_SRC_DB .'.industrial_info', 'iif_select') + // ->fields('iif_select', array('id_industrial', 'company'))->distinct(); + // $query->join($industrial_query, 'iif', 'iif.id_industrial = pind.id_industrial'); + - $query - ->fields('pod_id', array('id_product', 'id_materio', 'status', 'temp_flag', 'sample_status', 'memo', 'source', 'date_creation', 'date_modif')) - ->fields('prod_info', array('name', 'nature', 'description', 'usage', 'technical', 'keywords')) - ->orderBy('prod_id.id_product', 'DESC'); + // WARNING ! product_info is double langauge + duplicate -> 4 rows each product + // $pif_fr_query = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr_select') + // //->fields('pif_fr_select')// , array('id_product') //, 'name', 'nature', 'description', 'usage', 'technical', 'keywords', + // ->condition('pif_fr_select.id_locale', 2)->distinct(); + // $pif_fr_query->addField('pif_fr_select', 'id_product', 'id_product'); + // $query->join($pif_fr_query, 'pif_fr', 'pif_fr.id_product = pid.id_product'); + + // $pif_en_query = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_en_select') + // ->fields('pif_en_select')//, array('id_product') //, 'name', 'nature', 'description', 'usage', 'technical', 'keywords', + // ->condition('pif_en_select.id_locale', 1)->distinct(); + // // $pif_en_query->addField('pif_en_select', 'name', 'name_en'); + // $query->join($pif_en_query, 'pif_en', 'pif_en.id_product = pid.id_product'); - $query->groupBy('prod_id.id_product'); + $query + ->fields('pid', array('id_product', 'id_materio', 'status', 'memo', 'source', 'date_creation', 'date_modif')) + ->fields('pind', array('id_industrial', 'quarity')); + // ->fields('iff', array('company')) + + $query->addExpression('GROUP_CONCAT(DISTINCT pind.id_industrial)','list_industrial'); + $query->addExpression('GROUP_CONCAT(pind.quarity)','list_quarity'); + + $query + ->orderBy('pid.id_product', 'DESC') + ->groupBy('pid.id_product'); - $this->source = new MigrateSourceSQL($query, $source_fields); - $this->destination = new MigrateDestinationNode('materiau'); + //'name', 'nature', 'description', 'usage', 'technical', 'keywords' + // $query->addField('pif_fr', 'name', 'name_fr'); + // $query->addField('pif_fr', 'nature', 'nature_fr'); + // $query->addField('pif_fr', 'description', 'description_fr'); + // $query->addField('pif_fr', 'usage', 'usage_fr'); + // $query->addField('pif_fr', 'technical', 'technical_fr'); + // $query->addField('pif_fr', 'keywords', 'keywords_fr'); + // + // $query->addField('pif_en', 'name', 'name_en'); + // $query->addField('pif_en', 'nature', 'nature_en'); + // $query->addField('pif_en', 'description', 'description_en'); + // $query->addField('pif_en', 'usage', 'usage_en'); + // $query->addField('pif_en', 'technical', 'technical_en'); + // $query->addField('pif_en', 'keywords', 'keywords_en'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationNode('materiau'); - $this->map = new MigrateSQLMap($this->machineName, - array( - 'id_product' => array( - 'type' => 'int', - 'unsigned' => TRUE, - 'not null' => TRUE, - 'description' => 'OLD Unique Materiau ID', - 'alias' => 'prod_id', - ) - ), - MigrateDestinationNode::getKeySchema() - ); + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_product' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique Materiau ID', + 'alias' => 'pid', + ) + ), + MigrateDestinationNode::getKeySchema() + ); - $this->addFieldMapping('is_new')->defaultValue(TRUE); - $this->addFieldMapping('created', 'date_creation'); - $this->addFieldMapping('changed', 'date_modif'); - $this->addFieldMapping('status')->defaultValue(1); - $this->addFieldMapping('promote')->defaultValue(0); - $this->addFieldMapping('sticky')->defaultValue(0); + $this->addFieldMapping('is_new')->defaultValue(TRUE); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('changed', 'date_modif'); + $this->addFieldMapping('status')->defaultValue(1); + $this->addFieldMapping('promote')->defaultValue(0); + $this->addFieldMapping('sticky')->defaultValue(0); - - $this->addFieldMapping('title', 'name'); - $this->addFieldMapping('field_memo', 'memo'); + // $this->addFieldMapping('title', 'name_fr'); + $this->addFieldMapping('field_memo', 'memo'); - /* - TODO translate node - */ - //$this->addFieldMapping('language'); - //$this->addFieldMapping('field_nature_titre', 'nature'); + // $this->addFieldMapping('title_field', 'name'); + // $this->addFieldMapping('title_field:language', 'language'); + // $this->addFieldMapping(NULL, 'name_en'); + // $this->addFieldMapping(NULL, 'name_fr'); + + // see on prepareRow() + // $this->addFieldMapping('field_description', 'description'); + // $this->addFieldMapping('field_description:language', 'language'); + // $this->addFieldMapping(NULL, 'description_en'); + // $this->addFieldMapping(NULL, 'description_fr'); + + // $this->addFieldMapping('field_nature_titre', 'nature'); + // $this->addFieldMapping('field_nature_titre:language', 'language'); + // $this->addFieldMapping(NULL, 'nature_en'); + // $this->addFieldMapping(NULL, 'nature_fr'); + + $this->addFieldMapping('field_company_fab', 'company_fab'); + $this->addFieldMapping('field_company_fab:create_term')->defaultValue(false); + $this->addFieldMapping('field_company_distrib', 'company_distrib'); + + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('comment')->defaultValue(0); + $this->addFieldMapping('revision')->defaultValue(0); + + $this->addFieldMapping(null, 'id_industrial'); + $this->addFieldMapping(null, 'quarity'); + + $this->addFieldMapping('field_onthologie')->defaultValue(null); + } public function prepareRow($cr){ + // dsm($cr); - $cr->company = trim($cr->company); + // $result = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr_select') + // ->fields('pif_fr_select' , array('name', 'nature', 'description'))// , 'usage', 'technical', 'keywords', + // ->condition('pif_fr_select.id_locale', 2) + // ->condition('pif_fr_select.id_product', $cr->id_product) + // ->distinct();//->exectute(); + // $prod_infos_fr = $result->fetchAll(); + + // dsm($result->__toString(), '$query to string'); + + + // + // $cr->name = array($cr->name_en, $cr->name_fr); + // $cr->description = array($cr->description_en, $cr->description_fr); + // $cr->nature = array($cr->nature_en, $cr->nature_fr); + // $cr->language = array('en', 'fr'); + + # parse companies + dsm($cr->list_industrial, '-- $cr->list_industrial'); + dsm($cr->list_quarity, '$cr->list_quarity'); + $industrials = explode(',', $cr->list_industrial); + $quarities = explode(',', $cr->list_quarity); + + $companies_fab = array(); + $companies_distrib = array(); + + $l = count($industrials); + for ($i=0; $i < $l; $i++) { + $result = db_select(MIG_MAT_SRC_DB .'.industrial_info', 'iif') + ->fields('iif', array('company')) + ->condition('iif.id_industrial', $industrials[$i]) + ->distinct()->execute(); + + foreach ($result as $record) { + dsm($record); + $company = trim($record->company); + + if($quarities[$i] == 'M'){ + $companies_fab[] = $company; + }else{ + $companies_distrib[] = $company; + } + } + + } + $cr->company_fab = implode(',', $companies_fab); + $cr->company_distrib = implode(',', $companies_distrib); + + // + // preg_match('/^(\w)([^-]+)-(\d+)$/', $cr->id_materio, $matches); + // dsm($matches); + // + return TRUE; } + public function prepare($node, stdClass $row) { + // dsm('-- prepare --'); + // dsm($node, '$node'); + // dsm($row, '$row'); + + $node->workflow = 4; + + // $node->field_public_email = array('und'=>array($row->email_contact)); + + } diff --git a/migrate_materio.sample.inc b/migrate_materio.sample.inc index 9d67b298..a6692574 100644 --- a/migrate_materio.sample.inc +++ b/migrate_materio.sample.inc @@ -21,6 +21,7 @@ class MaterioIndustrialSampleUserMigration extends MaterioBasicMigration { $query ->fields('iid', array('id_industrial', 'date_creation', 'date_modif')) ->fields('iinf', array('company', 'email_sample')) + ->condition('email_sample', '', '<>') ->orderBy('iid.id_industrial', 'DESC') ->groupBy('iid.id_industrial'); From 93b7db54fe4f0e6393bebd0f42109a991438a709 Mon Sep 17 00:00:00 2001 From: bachy Date: Wed, 16 May 2012 08:05:22 +0200 Subject: [PATCH 05/13] debug - company : dispatch address filed in premise and sub_premise if more than 255 char - company : avoid and record on memo tel1 if number is more than 15 char - materiau : move product_info query in prepareRow() Signed-off-by: bachy --- migrate_materio.company.inc | 41 +++++++++--- migrate_materio.materiau.inc | 122 +++++++++++++++-------------------- 2 files changed, 86 insertions(+), 77 deletions(-) diff --git a/migrate_materio.company.inc b/migrate_materio.company.inc index e2345259..13ad4ab3 100644 --- a/migrate_materio.company.inc +++ b/migrate_materio.company.inc @@ -14,6 +14,8 @@ class MaterioCompanyMigration extends MaterioBasicMigration { 'id_industrial' => t('Industrial id from source'), 'department'=> t('en-fr department implemented on prepare'), 'language'=> t('en-fr langauge description, used in prepare'), + 'premise'=>t('premise'), + 'sub_premise'=>t('sub_premise'), ); $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); @@ -79,6 +81,8 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $arguments = array( // 'name_line' => array('source_field' => 'name'), 'thoroughfare' => array('source_field' => 'address'), + 'premise' => array('source_field' => 'premise'), + 'sub_premise' => array('source_field' => 'sub_premise'), 'locality' => array('source_field' => 'city'), 'postal_code' => array('source_field' => 'zip'), ); @@ -86,6 +90,8 @@ class MaterioCompanyMigration extends MaterioBasicMigration { ->arguments($arguments); $this->addFieldMapping(NULL, 'address'); + $this->addFieldMapping(NULL, 'premise'); + $this->addFieldMapping(NULL, 'sub_premise'); $this->addFieldMapping(NULL, 'city'); $this->addFieldMapping(NULL, 'zip'); $this->addFieldMapping(NULL, 'country_fr'); @@ -130,6 +136,14 @@ class MaterioCompanyMigration extends MaterioBasicMigration { public function prepareRow($cr) { $cr->address = preg_replace('/\\n/', ', ', $cr->address); + if(strlen($cr->address) > 255){ + $adress = $cr->address; + $cr->address = substr($adress, 0, 250); + $cr->premise = substr($adress, 250, 500); + $sub = substr($adress, 500, 750); + $cr->sub_premise = $sub ? $sub : ''; + } + $cr->city = preg_replace('/\\n/', ' ', $cr->city); $cr->department = array($cr->department_en, $cr->department_fr); @@ -148,32 +162,43 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $ccs = cck_phone_countrycodes(); $match = 0; + $ccode1 = ''; foreach ($ccs as $cc => $cc_values) { if('+'.$cr->ccode1 == $cc_values['code']){ $cr->ccode1 = $cc; + $ccode1 = $ccs[$cc]; $match++; } if('+'.$cr->ccode2 == $cc_values['code']){ - $cr->ccode2 = $cc; + $cr->ccode2 = $ccs[$cc]; $match++; } if('+'.$cr->ccode3 == $cc_values['code']){ - $cr->ccode3 = $cc; + $cr->ccode3 = $ccs[$cc]; $match++; } - if($match == 4) + if($match == 3) break; } + + $cr->ccode1 = strlen($cr->ccode1) == 2 ? $cr->ccode1 : false; + + if(($cr->tel1 != '' && !$cr->ccode1) || strlen($cr->tel1) > 15){ + $cr->tel1 = ''; + + $cc = is_array($ccode1) ? $ccode1['country'] . ' (' . $ccode1['code'] . ')' : ''; + $cr->memo .= "\n".'tel1 : '. $cc .' '. $cr->tel1; + } - // do this because i don't know how to insert multiple phone fields + // do this because i don't know how to insert multiple phone fields if($cr->tel2 != ''){ - $cc = cck_phone_countrycodes($cr->ccode2); - $cr->memo .= "\n".'tel2 : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel2; + $cc = is_array($cr->ccode2) ? $cr->ccode2['country'] . ' (' . $cr->ccode2['code'] . ')' : ''; + $cr->memo .= "\n".'tel2 : '. $cc .' '. $cr->tel2; } if($cr->tel3 != ''){ - $cc = cck_phone_countrycodes($cr->ccode3); - $cr->memo .= "\n".'tel3 : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel3; + $cc = is_array($cr->ccode3) ? $cr->ccode3['country'] . ' (' . $cr->ccode3['code'] . ')' : ''; + $cr->memo .= "\n".'tel3 : '. $cc .' '. $cr->tel3; } diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc index 44e215e1..56276ef7 100644 --- a/migrate_materio.materiau.inc +++ b/migrate_materio.materiau.inc @@ -14,38 +14,20 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { 'id_product' => t('Materiau id from source'), 'company_fab'=>t('company_fab'), 'company_distrib'=>t('company_distrib'), - // 'name'=> t('en-fr name implemented on prepare'), - // 'description'=> t('en-fr description implemented on prepare'), - // 'nature'=> t('en-fr nature implemented on prepare'), - // 'language'=> t('en-fr langauge description, used in prepare'), + 'title'=>t('title'), + 'name'=> t('en-fr name implemented on prepare'), + 'description'=> t('en-fr description implemented on prepare'), + 'nature'=> t('en-fr nature implemented on prepare'), + 'language'=> t('en-fr langauge description, used in prepare'), ); $query = db_select(MIG_MAT_SRC_DB .'.product_id', 'pid'); $query->join(MIG_MAT_SRC_DB .'.product_industrial', 'pind', 'pind.id_product = pid.id_product'); - - // $industrial_query = db_select(MIG_MAT_SRC_DB .'.industrial_info', 'iif_select') - // ->fields('iif_select', array('id_industrial', 'company'))->distinct(); - // $query->join($industrial_query, 'iif', 'iif.id_industrial = pind.id_industrial'); - - // WARNING ! product_info is double langauge + duplicate -> 4 rows each product - // $pif_fr_query = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr_select') - // //->fields('pif_fr_select')// , array('id_product') //, 'name', 'nature', 'description', 'usage', 'technical', 'keywords', - // ->condition('pif_fr_select.id_locale', 2)->distinct(); - // $pif_fr_query->addField('pif_fr_select', 'id_product', 'id_product'); - // $query->join($pif_fr_query, 'pif_fr', 'pif_fr.id_product = pid.id_product'); - - // $pif_en_query = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_en_select') - // ->fields('pif_en_select')//, array('id_product') //, 'name', 'nature', 'description', 'usage', 'technical', 'keywords', - // ->condition('pif_en_select.id_locale', 1)->distinct(); - // // $pif_en_query->addField('pif_en_select', 'name', 'name_en'); - // $query->join($pif_en_query, 'pif_en', 'pif_en.id_product = pid.id_product'); - $query ->fields('pid', array('id_product', 'id_materio', 'status', 'memo', 'source', 'date_creation', 'date_modif')) ->fields('pind', array('id_industrial', 'quarity')); - // ->fields('iff', array('company')) $query->addExpression('GROUP_CONCAT(DISTINCT pind.id_industrial)','list_industrial'); $query->addExpression('GROUP_CONCAT(pind.quarity)','list_quarity'); @@ -54,21 +36,6 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { ->orderBy('pid.id_product', 'DESC') ->groupBy('pid.id_product'); - //'name', 'nature', 'description', 'usage', 'technical', 'keywords' - // $query->addField('pif_fr', 'name', 'name_fr'); - // $query->addField('pif_fr', 'nature', 'nature_fr'); - // $query->addField('pif_fr', 'description', 'description_fr'); - // $query->addField('pif_fr', 'usage', 'usage_fr'); - // $query->addField('pif_fr', 'technical', 'technical_fr'); - // $query->addField('pif_fr', 'keywords', 'keywords_fr'); - // - // $query->addField('pif_en', 'name', 'name_en'); - // $query->addField('pif_en', 'nature', 'nature_en'); - // $query->addField('pif_en', 'description', 'description_en'); - // $query->addField('pif_en', 'usage', 'usage_en'); - // $query->addField('pif_en', 'technical', 'technical_en'); - // $query->addField('pif_en', 'keywords', 'keywords_en'); - $this->source = new MigrateSourceSQL($query, $source_fields); $this->destination = new MigrateDestinationNode('materiau'); @@ -91,29 +58,25 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $this->addFieldMapping('status')->defaultValue(1); $this->addFieldMapping('promote')->defaultValue(0); $this->addFieldMapping('sticky')->defaultValue(0); + $this->addFieldMapping('language')->defaultValue('fr'); - // $this->addFieldMapping('title', 'name_fr'); + $this->addFieldMapping('title', 'title'); $this->addFieldMapping('field_memo', 'memo'); - // $this->addFieldMapping('title_field', 'name'); - // $this->addFieldMapping('title_field:language', 'language'); - // $this->addFieldMapping(NULL, 'name_en'); - // $this->addFieldMapping(NULL, 'name_fr'); + $this->addFieldMapping('title_field', 'name'); + $this->addFieldMapping('title_field:language', 'language'); - // see on prepareRow() - // $this->addFieldMapping('field_description', 'description'); - // $this->addFieldMapping('field_description:language', 'language'); - // $this->addFieldMapping(NULL, 'description_en'); - // $this->addFieldMapping(NULL, 'description_fr'); + $this->addFieldMapping('field_description', 'description'); + $this->addFieldMapping('field_description:language', 'language'); + $this->addFieldMapping('field_description:format')->defaultValue('filtred_html'); - // $this->addFieldMapping('field_nature_titre', 'nature'); - // $this->addFieldMapping('field_nature_titre:language', 'language'); - // $this->addFieldMapping(NULL, 'nature_en'); - // $this->addFieldMapping(NULL, 'nature_fr'); + $this->addFieldMapping('field_nature_titre', 'nature'); + $this->addFieldMapping('field_nature_titre:language', 'language'); $this->addFieldMapping('field_company_fab', 'company_fab'); $this->addFieldMapping('field_company_fab:create_term')->defaultValue(false); $this->addFieldMapping('field_company_distrib', 'company_distrib'); + $this->addFieldMapping('field_company_distrib:create_term')->defaultValue(false); $this->addFieldMapping('pathauto')->defaultValue(1); $this->addFieldMapping('comment')->defaultValue(0); @@ -130,26 +93,43 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { public function prepareRow($cr){ // dsm($cr); - // $result = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr_select') - // ->fields('pif_fr_select' , array('name', 'nature', 'description'))// , 'usage', 'technical', 'keywords', - // ->condition('pif_fr_select.id_locale', 2) - // ->condition('pif_fr_select.id_product', $cr->id_product) - // ->distinct();//->exectute(); - - // $prod_infos_fr = $result->fetchAll(); - - // dsm($result->__toString(), '$query to string'); + # parse product infos + $infos_fr = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr') + ->condition('pif_fr.id_locale', 2) + ->condition('pif_fr.id_product', $cr->id_product) + ->fields('pif_fr' , array('name', 'nature', 'description', 'technical', 'keywords'))//, 'usage' + ->distinct()->execute(); + foreach ($infos_fr as $record) + $infos['fr'] = $record; + + $infos['fr']->description .= "
technical : ".$infos['fr']->technical; // . "
usage".$infos['fr']->usage + + $infos_en = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_en') + ->condition('pif_en.id_locale', 1) + ->condition('pif_en.id_product', $cr->id_product) + ->fields('pif_en' , array('name', 'nature', 'description', 'technical', 'keywords'))//, 'usage' , 'keywords' + ->distinct()->execute(); + + foreach ($infos_en as $record) + $infos['en'] = $record; + + $infos['en']->description .= "
technical : ".$infos['en']->technical; // . "
usage".$infos['en']->usage + + $cr->title = $infos['fr']->name; + $cr->name = array($infos['en']->name, $infos['fr']->name); + $cr->description = array($infos['en']->description, $infos['fr']->description); + $cr->nature = array($infos['en']->nature, $infos['fr']->nature); + $cr->language = array('en', 'fr'); + + #record keywords on memo + $cr->memo .= ($cr->memo != '' ? "\n\n" : '') . $infos['fr']->keywords; + - // - // $cr->name = array($cr->name_en, $cr->name_fr); - // $cr->description = array($cr->description_en, $cr->description_fr); - // $cr->nature = array($cr->nature_en, $cr->nature_fr); - // $cr->language = array('en', 'fr'); # parse companies - dsm($cr->list_industrial, '-- $cr->list_industrial'); - dsm($cr->list_quarity, '$cr->list_quarity'); + // dsm($cr->list_industrial, '-- $cr->list_industrial'); + // dsm($cr->list_quarity, '$cr->list_quarity'); $industrials = explode(',', $cr->list_industrial); $quarities = explode(',', $cr->list_quarity); @@ -164,7 +144,7 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { ->distinct()->execute(); foreach ($result as $record) { - dsm($record); + // dsm($record); $company = trim($record->company); if($quarities[$i] == 'M'){ @@ -185,6 +165,10 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { return TRUE; } + + + + public function prepare($node, stdClass $row) { // dsm('-- prepare --'); // dsm($node, '$node'); From 9e85e7a10561d1b5acec4a710b5b8c15d66c1c49 Mon Sep 17 00:00:00 2001 From: bachy Date: Fri, 18 May 2012 22:43:06 +0200 Subject: [PATCH 06/13] id materio materieau = fixe famille, identifiant (against computer filed) company = fixe multiple comp. with same names + misc Signed-off-by: bachy --- migrate_materio.company.inc | 21 +++++++++--------- migrate_materio.materiau.inc | 43 +++++++++++++++++++++++++----------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/migrate_materio.company.inc b/migrate_materio.company.inc index 13ad4ab3..6c7dffe2 100644 --- a/migrate_materio.company.inc +++ b/migrate_materio.company.inc @@ -14,8 +14,8 @@ class MaterioCompanyMigration extends MaterioBasicMigration { 'id_industrial' => t('Industrial id from source'), 'department'=> t('en-fr department implemented on prepare'), 'language'=> t('en-fr langauge description, used in prepare'), - 'premise'=>t('premise'), - 'sub_premise'=>t('sub_premise'), + 'premise'=>'', + 'sub_premise'=>'', ); $query = db_select(MIG_MAT_SRC_DB .'.industrial_id', 'iid'); @@ -79,7 +79,6 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $this->addFieldMapping(NULL, 'department_fr'); $arguments = array( - // 'name_line' => array('source_field' => 'name'), 'thoroughfare' => array('source_field' => 'address'), 'premise' => array('source_field' => 'premise'), 'sub_premise' => array('source_field' => 'sub_premise'), @@ -106,13 +105,11 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $arguments = array( 'number' => array('source_field' => 'tel1'), - // 'extension' => array('source_field' => 'ccode1_contact'), ); $this->addFieldMapping('field_public_phone', 'ccode1') ->arguments($arguments); $this->addFieldMapping(NULL, 'tel1'); - // $this->addFieldMapping(NULL, 'ccode1_contact'); $this->addFieldMapping(NULL, 'tel2'); $this->addFieldMapping(NULL, 'ccode2'); $this->addFieldMapping(NULL, 'tel3'); @@ -147,18 +144,20 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $cr->city = preg_replace('/\\n/', ' ', $cr->city); $cr->department = array($cr->department_en, $cr->department_fr); - // $cr->contact_quality = array($cr->contact_quality_en, $cr->contact_quality_fr); - // $cr->admin_quality = array($cr->admin_quality_en, $cr->admin_quality_fr); $cr->language = array('en', 'fr'); $cr->web_title = str_replace('http://', '', $cr->web); $cr->web = 'http://' . $cr->web_title; + /* + TODO multiple company with same name + how to force new term creation ? + then how to recognize the right comp. with materieaux ? + */ $cr->company = trim($cr->company); - - - // if($cr->email_general != "") - // $cr->email_sample .= ','.$cr->email_general; + $same_comp = taxonomy_get_term_by_name($cr->company); + if(count($same_comp)) + $cr->company .= '-'.$cr->id_industrial; $ccs = cck_phone_countrycodes(); $match = 0; diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc index 56276ef7..8fea5200 100644 --- a/migrate_materio.materiau.inc +++ b/migrate_materio.materiau.inc @@ -19,6 +19,9 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { 'description'=> t('en-fr description implemented on prepare'), 'nature'=> t('en-fr nature implemented on prepare'), 'language'=> t('en-fr langauge description, used in prepare'), + 'family' => '', + 'localisation' => '', + 'identifiant' => '', ); $query = db_select(MIG_MAT_SRC_DB .'.product_id', 'pid'); @@ -86,6 +89,10 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $this->addFieldMapping(null, 'quarity'); $this->addFieldMapping('field_onthologie')->defaultValue(null); + + $this->addFieldMapping('field_famille', 'family'); + $this->addFieldMapping('field_localisation', 'localisation'); + $this->addFieldMapping('field_identifiant', 'identifiant'); } @@ -103,7 +110,8 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { foreach ($infos_fr as $record) $infos['fr'] = $record; - $infos['fr']->description .= "
technical : ".$infos['fr']->technical; // . "
usage".$infos['fr']->usage + if($infos['fr']->technical != '') + $infos['fr']->description .= "
technical : ".$infos['fr']->technical; // . "
usage".$infos['fr']->usage $infos_en = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_en') ->condition('pif_en.id_locale', 1) @@ -114,7 +122,8 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { foreach ($infos_en as $record) $infos['en'] = $record; - $infos['en']->description .= "
technical : ".$infos['en']->technical; // . "
usage".$infos['en']->usage + if($infos['en']->technical != '') + $infos['en']->description .= "
technical : ".$infos['en']->technical; // . "
usage".$infos['en']->usage $cr->title = $infos['fr']->name; $cr->name = array($infos['en']->name, $infos['fr']->name); @@ -126,7 +135,6 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $cr->memo .= ($cr->memo != '' ? "\n\n" : '') . $infos['fr']->keywords; - # parse companies // dsm($cr->list_industrial, '-- $cr->list_industrial'); // dsm($cr->list_quarity, '$cr->list_quarity'); @@ -139,13 +147,16 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $l = count($industrials); for ($i=0; $i < $l; $i++) { $result = db_select(MIG_MAT_SRC_DB .'.industrial_info', 'iif') - ->fields('iif', array('company')) + ->fields('iif', array('id_industrial', 'company')) ->condition('iif.id_industrial', $industrials[$i]) ->distinct()->execute(); foreach ($result as $record) { // dsm($record); $company = trim($record->company); + $same_comp = taxonomy_get_term_by_name($company); + if(count($same_comp)) + $company .= '-'.$record->id_industrial; if($quarities[$i] == 'M'){ $companies_fab[] = $company; @@ -158,28 +169,34 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $cr->company_fab = implode(',', $companies_fab); $cr->company_distrib = implode(',', $companies_distrib); - // - // preg_match('/^(\w)([^-]+)-(\d+)$/', $cr->id_materio, $matches); + + preg_match('/^(\w)([^-]+)-(\d+)$/', $cr->id_materio, $matches); // dsm($matches); - // + $cr->family = $matches[1]; + $cr->localisation = $matches[2]; + $cr->identifiant = $matches[3]; + return TRUE; } - - - public function prepare($node, stdClass $row) { // dsm('-- prepare --'); // dsm($node, '$node'); // dsm($row, '$row'); - + $node->workflow = 4; - // $node->field_public_email = array('und'=>array($row->email_contact)); - + $node->field_identifiant['und'][0]['value'] = $row->identifiant; } + // public function complete($node, $row) { + // // dsm('-- complete --'); + // // // Do what you need to do to + // // dsm($row, '$row'); + // // dsm($node, '$node'); + // + // } From 18982b6700ca5fe4aa546d4a4e687ec45dfe13d0 Mon Sep 17 00:00:00 2001 From: bachy Date: Mon, 21 May 2012 17:50:22 +0200 Subject: [PATCH 07/13] bug fixing ccode homonym companies terms tel to long set to memo instead of phone field Signed-off-by: bachy --- migrate_materio.admin.inc | 6 ++++-- migrate_materio.company.inc | 19 ++++++++++++------- migrate_materio.contact.inc | 23 +++++++++++++++++++---- migrate_materio.materiau.inc | 18 +++++++++--------- migrate_materio.sample.inc | 3 ++- 5 files changed, 46 insertions(+), 23 deletions(-) diff --git a/migrate_materio.admin.inc b/migrate_materio.admin.inc index e1b790f8..edb50d48 100644 --- a/migrate_materio.admin.inc +++ b/migrate_materio.admin.inc @@ -75,6 +75,8 @@ class MaterioIndustrialAdminUserMigration extends MaterioBasicMigration { return false; $cr->company = trim($cr->company); + if(count(taxonomy_get_term_by_name($cr->company.'-'.$cr->id_industrial))) + $cr->company .= '-'.$cr->id_industrial; $cr->memo = "#admin"; @@ -196,11 +198,11 @@ class MaterioIndustrialAdminProfile2Migration extends MaterioBasicMigration { $ccs = cck_phone_countrycodes(); $match = 0; foreach ($ccs as $cc => $cc_values) { - if('+'.$cr->ccode1_admin == $cc_values['code']){ + if('+'.preg_replace('/^\+/', '', $cr->ccode1_admin) == $cc_values['code']){ $cr->ccode1_admin = $cc; $match++; } - if('+'.$cr->ccode2_admin == $cc_values['code']){ + if('+'.preg_replace('/^\+/', '', $cr->ccode2_admin) == $cc_values['code']){ $cr->ccode2_admin = $cc; $match++; } diff --git a/migrate_materio.company.inc b/migrate_materio.company.inc index 6c7dffe2..f005f92b 100644 --- a/migrate_materio.company.inc +++ b/migrate_materio.company.inc @@ -61,7 +61,7 @@ class MaterioCompanyMigration extends MaterioBasicMigration { ); // Make the mappings - $this->addFieldMapping('language')->defaultValue(''); + $this->addFieldMapping('language')->defaultValue('en'); $this->addFieldMapping('is_new')->defaultValue(TRUE); $this->addFieldMapping('created', 'date_creation'); $this->addFieldMapping('changed', 'date_modif'); @@ -95,9 +95,9 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $this->addFieldMapping(NULL, 'zip'); $this->addFieldMapping(NULL, 'country_fr'); - $arguments = MigrateLinkFieldHandler::arguments(array('source_field' => 'web_title')); - $this->addFieldMapping('field_website', 'web') - ->arguments($arguments); + // $arguments = MigrateLinkFieldHandler::arguments(array('source_field' => 'web_title')); + $this->addFieldMapping('field_website', 'web'); + // ->arguments($arguments); $this->addFieldMapping('body')->defaultValue(''); $this->addFieldMapping('field_infos_from_company')->defaultValue(''); @@ -139,6 +139,9 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $cr->premise = substr($adress, 250, 500); $sub = substr($adress, 500, 750); $cr->sub_premise = $sub ? $sub : ''; + }else{ + $cr->premise = ''; + $cr->sub_premise = ''; } $cr->city = preg_replace('/\\n/', ' ', $cr->city); @@ -146,8 +149,7 @@ class MaterioCompanyMigration extends MaterioBasicMigration { $cr->department = array($cr->department_en, $cr->department_fr); $cr->language = array('en', 'fr'); - $cr->web_title = str_replace('http://', '', $cr->web); - $cr->web = 'http://' . $cr->web_title; + $cr->web = str_replace('http://', '', $cr->web); /* TODO multiple company with same name @@ -156,8 +158,11 @@ class MaterioCompanyMigration extends MaterioBasicMigration { */ $cr->company = trim($cr->company); $same_comp = taxonomy_get_term_by_name($cr->company); - if(count($same_comp)) + if(count($same_comp)){ $cr->company .= '-'.$cr->id_industrial; + $cr->memo .= "\n".'#multiple-term'; + } + $ccs = cck_phone_countrycodes(); $match = 0; diff --git a/migrate_materio.contact.inc b/migrate_materio.contact.inc index 34d906f3..42d02c88 100644 --- a/migrate_materio.contact.inc +++ b/migrate_materio.contact.inc @@ -74,7 +74,9 @@ class MaterioIndustrialContactUserMigration extends MaterioBasicMigration { if($cr->email_contact == "") return false; - $cr->company = trim($cr->company); + $cr->company = trim($cr->company); + if(count(taxonomy_get_term_by_name($cr->company.'-'.$cr->id_industrial))) + $cr->company .= '-'.$cr->id_industrial; $cr->memo = "#contact"; @@ -201,11 +203,11 @@ class MaterioIndustrialContactProfile2Migration extends MaterioBasicMigration { $ccs = cck_phone_countrycodes(); $match = 0; foreach ($ccs as $cc => $cc_values) { - if('+'.$cr->ccode1_contact == $cc_values['code']){ + if('+'.preg_replace('/^\+/', '', $cr->ccode1_contact) == $cc_values['code']){ $cr->ccode1_contact = $cc; $match++; } - if('+'.$cr->ccode2_contact == $cc_values['code']){ + if('+'.preg_replace('/^\+/', '', $cr->ccode2_contact) == $cc_values['code']){ $cr->ccode2_contact = $cc; $match++; } @@ -213,11 +215,24 @@ class MaterioIndustrialContactProfile2Migration extends MaterioBasicMigration { break; } + if(strlen($cr->ccode1_contact) > 2 && $cr->tel1_contact != "" ){ + $cr->memo .= "\n".'tel1 contact : '. $cr->ccode1_contact .' '. $cr->tel1_contact; + $cr->tel1_contact = NULL; + $cr->ccode1_contact = NULL; + } + + if(strlen($cr->tel1_contact) > 15){ + $cc = cck_phone_countrycodes($cr->ccode1_contact); + $cr->memo .= "\n".'tel1 contact : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel1_contact; + $cr->tel1_contact = NULL; + $cr->ccode1_contact = NULL; + } + if($cr->tel2_contact != ''){ $cc = cck_phone_countrycodes($cr->ccode2_contact); $cr->memo .= "\n".'tel2 contact : '. $cc['country'] . ' (' . $cc['code'] . ')' .' '. $cr->tel2_contact; } - + // dsm($cr, '- - - - $cr - - - -'); return TRUE; diff --git a/migrate_materio.materiau.inc b/migrate_materio.materiau.inc index 8fea5200..b43fb42e 100644 --- a/migrate_materio.materiau.inc +++ b/migrate_materio.materiau.inc @@ -61,7 +61,7 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { $this->addFieldMapping('status')->defaultValue(1); $this->addFieldMapping('promote')->defaultValue(0); $this->addFieldMapping('sticky')->defaultValue(0); - $this->addFieldMapping('language')->defaultValue('fr'); + $this->addFieldMapping('language')->defaultValue('en'); $this->addFieldMapping('title', 'title'); $this->addFieldMapping('field_memo', 'memo'); @@ -100,7 +100,7 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { public function prepareRow($cr){ // dsm($cr); - # parse product infos + # get product infos FR $infos_fr = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_fr') ->condition('pif_fr.id_locale', 2) ->condition('pif_fr.id_product', $cr->id_product) @@ -112,7 +112,8 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { if($infos['fr']->technical != '') $infos['fr']->description .= "
technical : ".$infos['fr']->technical; // . "
usage".$infos['fr']->usage - + + # get product infos EN $infos_en = db_select(MIG_MAT_SRC_DB .'.product_info', 'pif_en') ->condition('pif_en.id_locale', 1) ->condition('pif_en.id_product', $cr->id_product) @@ -124,17 +125,17 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { if($infos['en']->technical != '') $infos['en']->description .= "
technical : ".$infos['en']->technical; // . "
usage".$infos['en']->usage - + + # set product infos $cr->title = $infos['fr']->name; $cr->name = array($infos['en']->name, $infos['fr']->name); $cr->description = array($infos['en']->description, $infos['fr']->description); $cr->nature = array($infos['en']->nature, $infos['fr']->nature); $cr->language = array('en', 'fr'); - #record keywords on memo + # record keywords on memo $cr->memo .= ($cr->memo != '' ? "\n\n" : '') . $infos['fr']->keywords; - # parse companies // dsm($cr->list_industrial, '-- $cr->list_industrial'); // dsm($cr->list_quarity, '$cr->list_quarity'); @@ -154,9 +155,8 @@ class MaterioMateriauNodeMigration extends MaterioBasicMigration { foreach ($result as $record) { // dsm($record); $company = trim($record->company); - $same_comp = taxonomy_get_term_by_name($company); - if(count($same_comp)) - $company .= '-'.$record->id_industrial; + if(count(taxonomy_get_term_by_name($company.'-'.$record->id_industrial))) + $company .= '-'.$record->id_industrial; if($quarities[$i] == 'M'){ $companies_fab[] = $company; diff --git a/migrate_materio.sample.inc b/migrate_materio.sample.inc index a6692574..59cb0158 100644 --- a/migrate_materio.sample.inc +++ b/migrate_materio.sample.inc @@ -66,7 +66,6 @@ class MaterioIndustrialSampleUserMigration extends MaterioBasicMigration { $this->addFieldMapping('field_company', 'company'); - } public function prepareRow($cr) { @@ -74,6 +73,8 @@ class MaterioIndustrialSampleUserMigration extends MaterioBasicMigration { return false; $cr->company = trim($cr->company); + if(count(taxonomy_get_term_by_name($cr->company.'-'.$cr->id_industrial))) + $cr->company .= '-'.$cr->id_industrial; $cr->memo = "#sample"; From 0370c6233d5b8ed916dbaafb3c6dfc795babeeef Mon Sep 17 00:00:00 2001 From: bachy Date: Sat, 15 Sep 2012 18:52:56 +0200 Subject: [PATCH 08/13] breves migration starting point Signed-off-by: bachy --- migrate_materio.breves.inc | 159 +++++++++++++++++++++++++++++++++++++ migrate_materio.info | 1 + migrate_materio.module | 10 ++- 3 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 migrate_materio.breves.inc diff --git a/migrate_materio.breves.inc b/migrate_materio.breves.inc new file mode 100644 index 00000000..4dae3b24 --- /dev/null +++ b/migrate_materio.breves.inc @@ -0,0 +1,159 @@ +description = t('Migrate Materio Materiau nodes'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + // 'nid' => t('Materiau id from source'), + // 'status'=>t('status'), + // 'promote'=>t('promote'), + // 'sticky'=>t('sticky'), + // 'summary'=>t('summary'), + // 'created'=>t('created'), + // 'changed'=>t('changed'), + 'languages'=> t('languages'), + // 'tnid'=> t('tnid'), + // 'title'=> t('title'), + // 'body'=> t('body'), + // 'teaser' => t('teaser'), + // 'format' => t('format'), + 'memo' => t('memo'), + ); + + // $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n'); + + // $query + // ->condition('n.type',"actu") + // ->condition('n.tnid',"0", "<>") + // ->condition('n.language',"en"); + + + /* translated */ + $query_translated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i'); + + $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid'); + $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid'); + + $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'tn', 'tn.nid = i.trid'); + $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'tnr', 'tnr.nid = tn.nid'); + + $query_translated + ->condition('n.type',"actu") + // ->condition('i.trid', "0", "<>") + ->fields('i', array('nid', 'trid')) + ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) + ->fields('nr', array('title', 'body', 'teaser', 'format')) + ->fields('tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) + ->fields('tnr', array('title', 'body', 'teaser', 'format')); + // ->orderBy('n.created', 'ASC'); + + + /* untranslated translated */ + // $query_untranslated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_i'); + + // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_n', 'un_n.nid = un_i.nid'); + // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_nr', 'un_nr.nid = un_n.nid'); + + // $query_untranslated + // ->condition('un_n.type',"actu") + // ->condition('un_i.trid', "0", "=") + // ->fields('un_i', array('nid', 'trid')) + // ->fields('un_n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) + // ->fields('un_nr', array('title', 'body', 'teaser', 'format')); + + + // $query_translated->union($query_untranslated, 'ALL'); + + // $query = db_select($query_translated, 'x'); + + // print "\n\n- - - - - - \n\n"; + // print_r($query_translated->__toString()); + // print "\n\n- - - - - - \n\n"; + + + $this->source = new MigrateSourceSQL($query_translated, $source_fields); + $this->destination = new MigrateDestinationNode('breve'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'nid' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique Materiau NID', + 'alias' => 'i', + ) + ), + MigrateDestinationNode::getKeySchema() + ); + + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + $this->addSimpleMappings(array('created', 'changed', 'status', 'promote', 'sticky', 'language')); + + $this->addFieldMapping('title', 'title'); + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping('title_field', 'title'); + $this->addFieldMapping('title_field:language', 'languages'); + + $this->addFieldMapping('body', 'body'); + // $this->addFieldMapping('body:summary', 'teaser'); + $this->addFieldMapping('body:language', 'languages'); + $this->addFieldMapping('body:format')->defaultValue('filtred_html'); + + + $this->addUnmigratedDestinations(array('revision', 'revision_uid', 'log', 'tnid', 'comment', 'uid', 'path', 'pathauto', + 'title_field:format', + 'field_memo:format', 'field_memo:language', + 'field_onthologie', 'field_onthologie:source_type', 'field_onthologie:create_term', + )); + } + + public function prepareRow($cr){ + // dsm($cr); + print "\n- - - - - - - - \n"; + if($cr->trid){ + print "\n" . $cr->title . "\n"; + print "\n" . $cr->tnr_title . "\n"; + $cr->title = array($cr->title, $cr->tnr_title); + + $cr->body = array($cr->body, $cr->tnr_body); + // $cr->teaser = array($cr->teaser, $cr->tnr_teaser); + + $cr->languages = array($cr->language, $cr->tn_language); + }else{ + $cr->languages = $cr->language; + } + + return TRUE; + } + + + public function prepare($node, stdClass $row) { + // dsm('-- prepare --'); + // dsm($node, '$node'); + // dsm($row, '$row'); + + $node->workflow = 4; + + } + + // public function complete($node, $row) { + // // dsm('-- complete --'); + // // // Do what you need to do to + // // dsm($row, '$row'); + // // dsm($node, '$node'); + // + // } + + + +} \ No newline at end of file diff --git a/migrate_materio.info b/migrate_materio.info index 3cc40fa9..80ccd406 100644 --- a/migrate_materio.info +++ b/migrate_materio.info @@ -19,6 +19,7 @@ core = 7.x files[] = migrate_materio.admin.inc files[] = migrate_materio.sample.inc files[] = migrate_materio.materiau.inc + files[] = migrate_materio.breves.inc ; Module dependencies dependencies[] = migrate diff --git a/migrate_materio.module b/migrate_materio.module index 8d441679..9eb6d0fe 100644 --- a/migrate_materio.module +++ b/migrate_materio.module @@ -8,7 +8,7 @@ * that the file can be displayed nicely in default-sized consoles. */ define('MIG_MAT_SRC_DB', variable_get('migrate_materio_database', '')); - +define('MIG_MAT_SRC_DB_D6', variable_get('migrate_materio_database_drupal6', '')); /** * You must implement hook_migrate_api(), setting the API level to 2, for @@ -51,6 +51,14 @@ function migrate_materio_settings($form, &$form_state) { '#required' => TRUE, ); + $form['migrate_materio_database_drupal6'] = array( + '#type' => 'textfield', + '#title' => 'Drupal 6 Database name', + '#default_value' => variable_get('migrate_materio_database_drupal6', ''), + '#description' => t('Please enter the name of the drupal 6 database. Note that the database must be accessible by current website db user and must reside on the same db server.'), + '#required' => TRUE, + ); + // $form['redcat_migration_file_path'] = array( // '#type' => 'textfield', // '#title' => 'Migrated Files Path', From 40b0b8bae237b8e8349c8f6ec4d26ff7713de2ad Mon Sep 17 00:00:00 2001 From: bachy Date: Sun, 16 Sep 2012 10:04:06 +0200 Subject: [PATCH 09/13] change source query, got translation onprepare() Signed-off-by: bachy --- migrate_materio.breves.inc | 67 ++++++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/migrate_materio.breves.inc b/migrate_materio.breves.inc index 4dae3b24..7e223e57 100644 --- a/migrate_materio.breves.inc +++ b/migrate_materio.breves.inc @@ -41,17 +41,22 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid'); $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid'); - $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'tn', 'tn.nid = i.trid'); - $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'tnr', 'tnr.nid = tn.nid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'ti', 'ti.trid = i.trid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'tn', 'tn.nid = ti.nid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'tnr', 'tnr.nid = ti.nid'); $query_translated - ->condition('n.type',"actu") + ->condition('i.status', "0", "=") // ->condition('i.trid', "0", "<>") - ->fields('i', array('nid', 'trid')) + ->condition('n.type',"actu") + // ->condition('tn.type',"actu") + // ->condition('ti.trid', "0", "<>") + ->fields('i', array('trid')) ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) - ->fields('nr', array('title', 'body', 'teaser', 'format')) - ->fields('tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) - ->fields('tnr', array('title', 'body', 'teaser', 'format')); + ->fields('nr', array('title', 'body', 'teaser', 'format')); + // ->fields('ti', array('nid')) + // ->fields('tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) + // ->fields('tnr', array('title', 'body', 'teaser', 'format')); // ->orderBy('n.created', 'ASC'); @@ -61,20 +66,28 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_n', 'un_n.nid = un_i.nid'); // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_nr', 'un_nr.nid = un_n.nid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_ti', 'un_ti.nid = un_i.nid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_tn', 'un_tn.nid = un_ti.nid'); + // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_tnr', 'un_tnr.nid = un_ti.nid'); + + // $query_untranslated - // ->condition('un_n.type',"actu") // ->condition('un_i.trid', "0", "=") - // ->fields('un_i', array('nid', 'trid')) + // ->condition('un_n.type',"actu") + // // ->fields('un_i', array('nid', 'trid')) // ->fields('un_n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) // ->fields('un_nr', array('title', 'body', 'teaser', 'format')); - + + // // ->fields('un_tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) + // // ->fields('un_tnr', array('title', 'body', 'teaser', 'format')); + // $query_translated->union($query_untranslated, 'ALL'); // $query = db_select($query_translated, 'x'); // print "\n\n- - - - - - \n\n"; - // print_r($query_translated->__toString()); + // print_r($query->__toString()); // print "\n\n- - - - - - \n\n"; @@ -120,15 +133,35 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { public function prepareRow($cr){ // dsm($cr); print "\n- - - - - - - - \n"; - if($cr->trid){ - print "\n" . $cr->title . "\n"; - print "\n" . $cr->tnr_title . "\n"; - $cr->title = array($cr->title, $cr->tnr_title); - $cr->body = array($cr->body, $cr->tnr_body); + if($cr->trid){ + $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i'); + + $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid'); + $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid'); + + $query + ->condition('i.status', "0", "<>") + ->condition('i.trid', $cr->trid, "=") + ->fields('i', array('trid')) + ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) + ->fields('nr', array('title', 'body', 'teaser', 'format')); + + $result = $query->execute(); + + foreach ($result as $record) { + $tr = $record; + } + + print "\n" . $cr->title . "\n"; + print "\n" . $tr->title . "\n"; + + $cr->title = array($cr->title, $tr->title); + + $cr->body = array($cr->body, $tr->body); // $cr->teaser = array($cr->teaser, $cr->tnr_teaser); - $cr->languages = array($cr->language, $cr->tn_language); + $cr->languages = array($cr->language, $tr->language); }else{ $cr->languages = $cr->language; } From 3ca910cf3435e8f82e0c59085c6276ee12f270f6 Mon Sep 17 00:00:00 2001 From: bachy Date: Sun, 16 Sep 2012 15:47:54 +0200 Subject: [PATCH 10/13] files, video, materiau ref Signed-off-by: bachy --- migrate_materio.breves.inc | 159 ++++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 71 deletions(-) diff --git a/migrate_materio.breves.inc b/migrate_materio.breves.inc index 7e223e57..07cf6eba 100644 --- a/migrate_materio.breves.inc +++ b/migrate_materio.breves.inc @@ -11,87 +11,37 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { // provide better description for source fields // and add new field source not from sql $source_fields = array( - // 'nid' => t('Materiau id from source'), - // 'status'=>t('status'), - // 'promote'=>t('promote'), - // 'sticky'=>t('sticky'), - // 'summary'=>t('summary'), - // 'created'=>t('created'), - // 'changed'=>t('changed'), + 'titlefield'=>t('title field'), 'languages'=> t('languages'), - // 'tnid'=> t('tnid'), - // 'title'=> t('title'), - // 'body'=> t('body'), - // 'teaser' => t('teaser'), - // 'format' => t('format'), 'memo' => t('memo'), + 'images'=>t('images'), + 'images_titles'=>t('images titles'), + 'images_alts'=>t('images alts'), + // 'source'=>t("source"), + // 'materiau'=>t('materiau ref'), + 'video'=>t('video'), ); - // $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n'); - - // $query - // ->condition('n.type',"actu") - // ->condition('n.tnid',"0", "<>") - // ->condition('n.language',"en"); - - - /* translated */ - $query_translated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i'); + $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i'); - $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid'); - $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid'); + $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid'); + $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid'); + // $query->join(MIG_MAT_SRC_DB_D6 .'.fr_content_field_imago', 'im', 'im.nid = n.nid'); - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'ti', 'ti.trid = i.trid'); - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'tn', 'tn.nid = ti.nid'); - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'tnr', 'tnr.nid = ti.nid'); - - $query_translated + $query ->condition('i.status', "0", "=") - // ->condition('i.trid', "0", "<>") ->condition('n.type',"actu") - // ->condition('tn.type',"actu") - // ->condition('ti.trid', "0", "<>") ->fields('i', array('trid')) ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) ->fields('nr', array('title', 'body', 'teaser', 'format')); - // ->fields('ti', array('nid')) - // ->fields('tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) - // ->fields('tnr', array('title', 'body', 'teaser', 'format')); - // ->orderBy('n.created', 'ASC'); + // ->fields('im', array('title', 'body', 'teaser', 'format')); - - /* untranslated translated */ - // $query_untranslated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_i'); - - // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_n', 'un_n.nid = un_i.nid'); - // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_nr', 'un_nr.nid = un_n.nid'); - - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_ti', 'un_ti.nid = un_i.nid'); - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_tn', 'un_tn.nid = un_ti.nid'); - // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_tnr', 'un_tnr.nid = un_ti.nid'); - - - // $query_untranslated - // ->condition('un_i.trid', "0", "=") - // ->condition('un_n.type',"actu") - // // ->fields('un_i', array('nid', 'trid')) - // ->fields('un_n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid')) - // ->fields('un_nr', array('title', 'body', 'teaser', 'format')); - - // // ->fields('un_tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language')) - // // ->fields('un_tnr', array('title', 'body', 'teaser', 'format')); - - - // $query_translated->union($query_untranslated, 'ALL'); - - // $query = db_select($query_translated, 'x'); - // print "\n\n- - - - - - \n\n"; // print_r($query->__toString()); // print "\n\n- - - - - - \n\n"; - $this->source = new MigrateSourceSQL($query_translated, $source_fields); + $this->source = new MigrateSourceSQL($query, $source_fields); $this->destination = new MigrateDestinationNode('breve'); $this->map = new MigrateSQLMap($this->machineName, @@ -109,30 +59,48 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $this->addFieldMapping('is_new')->defaultValue(TRUE); - $this->addSimpleMappings(array('created', 'changed', 'status', 'promote', 'sticky', 'language')); + $this->addSimpleMappings(array('created', 'changed', 'status', 'promote', 'sticky', 'language', 'title')); - $this->addFieldMapping('title', 'title'); $this->addFieldMapping('field_memo', 'memo'); - $this->addFieldMapping('title_field', 'title'); + $this->addFieldMapping('title_field', 'titlefield'); $this->addFieldMapping('title_field:language', 'languages'); $this->addFieldMapping('body', 'body'); - // $this->addFieldMapping('body:summary', 'teaser'); $this->addFieldMapping('body:language', 'languages'); $this->addFieldMapping('body:format')->defaultValue('filtred_html'); + $this->addFieldMapping('field_visuel', 'images'); + $this->addFieldMapping('field_visuel:source_dir')->defaultValue('public://SRC_imago'); + $this->addFieldMapping('field_visuel:title', 'images_titles'); + $this->addFieldMapping('field_visuel:alt', 'images_alts'); + + // $this->addFieldMapping('field_source', 'source'); + $this->addFieldMapping('field_video_filter', 'video'); + $this->addUnmigratedDestinations(array('revision', 'revision_uid', 'log', 'tnid', 'comment', 'uid', 'path', 'pathauto', 'title_field:format', + 'body:summary', + 'field_source', + // 'field_video_filter', + 'field_materiau_ref', 'field_memo:format', 'field_memo:language', 'field_onthologie', 'field_onthologie:source_type', 'field_onthologie:create_term', + 'field_visuel:file_class','field_visuel:language','field_visuel:destination_dir','field_visuel:destination_file','field_visuel:file_replace','field_visuel:preserve_files', )); + } public function prepareRow($cr){ // dsm($cr); print "\n- - - - - - - - \n"; + // print $cr->nid . "\n"; + print $cr->title . "\n"; + + $body = $cr->body; + + $cr->memo = ''; if($cr->trid){ $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i'); @@ -153,10 +121,10 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $tr = $record; } - print "\n" . $cr->title . "\n"; - print "\n" . $tr->title . "\n"; + // print $cr->title . "\n"; + // print $tr->title . "\n"; - $cr->title = array($cr->title, $tr->title); + $cr->titlefield = array($cr->title, $tr->title); $cr->body = array($cr->body, $tr->body); // $cr->teaser = array($cr->teaser, $cr->tnr_teaser); @@ -164,8 +132,57 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $cr->languages = array($cr->language, $tr->language); }else{ $cr->languages = $cr->language; + $cr->titlefield = $cr->title; + // $cr->teaser = htmlspecialchars_decode($cr->teaser); } + /* IMAGES */ + $query = db_select(MIG_MAT_SRC_DB_D6.'.fr_content_field_imago', 'im'); + $query->join(MIG_MAT_SRC_DB_D6.'.fr_files', 'f', 'f.fid = im.field_imago_fid'); + $query + ->condition('im.nid', $cr->nid, "=") + // ->condition('f.fid', $cr->nid, "=") + ->fields('im', array('field_imago_list', 'field_imago_data')) + ->fields('f', array('filename')); + + $images = $query->execute(); + $cr->images = array(); + $cr->images_titles = array(); + $cr->images_alts = array(); + + foreach ($images as $image) { + // print_r($image); + $cr->images[] = $image->filename; + $data = unserialize($image->field_imago_data); + $cr->images_alts[] = $data['alt']; + $cr->images_titles[] = $data['title']; + } + + + /* source */ + //Source : UCSanDiego + // preg_match('/Source\s:\s]*>([^<]*)<\/a>/', $body, $matches); + // if(count($matches)){ + // print_r($matches); + // $cr->source = str_replace('http://', '', $matches[1]); + // } + + /* materio */ + // (matériO P0059) + preg_match('/\(matériO\s([^\)]*)\)/', $body, $matches); + if(count($matches)){ + print_r($matches); + $cr->memo .= "ref materio : ".$matches[1]."\n"; + } + + /* video */ + //[video:http://www.youtube.com/watch?v=3Fzu2Av6BmE align:center autoplay:1] + preg_match('/\[video:([^\s]*)[^\]]*]/', $body, $matches); + if(count($matches)){ + print_r($matches); + $cr->video = $matches[1]; + } + return TRUE; } From 6c132269694d6089e48712a8589bc9286357b098 Mon Sep 17 00:00:00 2001 From: bachy Date: Sun, 16 Sep 2012 15:59:49 +0200 Subject: [PATCH 11/13] terms Signed-off-by: bachy --- migrate_materio.breves.inc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/migrate_materio.breves.inc b/migrate_materio.breves.inc index 07cf6eba..0fd3a69a 100644 --- a/migrate_materio.breves.inc +++ b/migrate_materio.breves.inc @@ -76,9 +76,11 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $this->addFieldMapping('field_visuel:title', 'images_titles'); $this->addFieldMapping('field_visuel:alt', 'images_alts'); - // $this->addFieldMapping('field_source', 'source'); $this->addFieldMapping('field_video_filter', 'video'); + $this->addFieldMapping('field_tags_libres', 'tags'); + $this->addFieldMapping('field_tags_libres:create_term')->defaultValue(TRUE); + $this->addUnmigratedDestinations(array('revision', 'revision_uid', 'log', 'tnid', 'comment', 'uid', 'path', 'pathauto', 'title_field:format', 'body:summary', @@ -88,6 +90,7 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { 'field_memo:format', 'field_memo:language', 'field_onthologie', 'field_onthologie:source_type', 'field_onthologie:create_term', 'field_visuel:file_class','field_visuel:language','field_visuel:destination_dir','field_visuel:destination_file','field_visuel:file_replace','field_visuel:preserve_files', + 'field_tags_libres', 'field_tags_libres:source_type', 'field_tags_libres:create_term', )); } @@ -97,7 +100,7 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { print "\n- - - - - - - - \n"; // print $cr->nid . "\n"; print $cr->title . "\n"; - + $body = $cr->body; $cr->memo = ''; @@ -183,6 +186,23 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $cr->video = $matches[1]; } + + $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_term_node', 'tn'); + $query->join(MIG_MAT_SRC_DB_D6 .'.fr_term_data', 'td', 'td.tid = tn.tid'); + + $query + ->condition('tn.nid', $cr->nid, "=") + ->fields('td', array('name')); + + $result = $query->execute(); + $terms = array(); + foreach ($result as $record) { + $terms[] = $record->name; + } + $cr->memo .= 'terms : '.implode(', ', $terms)."\n"; + + + return TRUE; } From 2697ba8675b823efd2afb780060c193bc82bd79f Mon Sep 17 00:00:00 2001 From: bachy Date: Fri, 5 Oct 2012 14:15:46 +0200 Subject: [PATCH 12/13] breves migration update Signed-off-by: bachy --- migrate_materio.breves.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/migrate_materio.breves.inc b/migrate_materio.breves.inc index 0fd3a69a..97bc37b0 100644 --- a/migrate_materio.breves.inc +++ b/migrate_materio.breves.inc @@ -78,8 +78,8 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { $this->addFieldMapping('field_video_filter', 'video'); - $this->addFieldMapping('field_tags_libres', 'tags'); - $this->addFieldMapping('field_tags_libres:create_term')->defaultValue(TRUE); + // $this->addFieldMapping('field_tags_libres', 'tags'); + // $this->addFieldMapping('field_tags_libres:create_term')->defaultValue(TRUE); $this->addUnmigratedDestinations(array('revision', 'revision_uid', 'log', 'tnid', 'comment', 'uid', 'path', 'pathauto', 'title_field:format', @@ -97,9 +97,9 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { public function prepareRow($cr){ // dsm($cr); - print "\n- - - - - - - - \n"; + // print "\n- - - - - - - - \n"; // print $cr->nid . "\n"; - print $cr->title . "\n"; + // print $cr->title . "\n"; $body = $cr->body; @@ -174,7 +174,7 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { // (matériO P0059) preg_match('/\(matériO\s([^\)]*)\)/', $body, $matches); if(count($matches)){ - print_r($matches); + // print_r($matches); $cr->memo .= "ref materio : ".$matches[1]."\n"; } @@ -182,7 +182,7 @@ class MaterioBrevesNodeMigration extends MaterioBasicMigration { //[video:http://www.youtube.com/watch?v=3Fzu2Av6BmE align:center autoplay:1] preg_match('/\[video:([^\s]*)[^\]]*]/', $body, $matches); if(count($matches)){ - print_r($matches); + // print_r($matches); $cr->video = $matches[1]; } From b0f5c3eae02a474df66dfc5226b690e0249ea78e Mon Sep 17 00:00:00 2001 From: bachy Date: Thu, 3 Jan 2013 16:04:59 +0100 Subject: [PATCH 13/13] =?UTF-8?q?adhe=CC=81rent=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: bachy --- migrate_materio.adherent.inc | 422 +++++++++++++++++++++++++++++++++++ migrate_materio.info | 3 + 2 files changed, 425 insertions(+) create mode 100644 migrate_materio.adherent.inc diff --git a/migrate_materio.adherent.inc b/migrate_materio.adherent.inc new file mode 100644 index 00000000..9c736b04 --- /dev/null +++ b/migrate_materio.adherent.inc @@ -0,0 +1,422 @@ +description = t('Migrate Materio Members Account Users'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_login' => t('Member id from source'), + 'memo'=>t('memo'), + 'roles'=>t('roles'), + 'user_name' => 'User name', + ); + + $query = db_select(MIG_MAT_SRC_DB .'.login_id', 'lid'); + $query->join(MIG_MAT_SRC_DB .'.member_id', 'mid', 'mid.id_member = lid.id_member'); + // $query->join(MIG_MAT_SRC_DB .'.locale_id', 'locid', 'lid.def_locale = locid.id_locale'); + $query->join(MIG_MAT_SRC_DB .'.member_info', 'minf', 'mid.id_member = minf.id_member'); + $query + ->fields('lid', array('id_login', 'status', 'date_creation', 'date_modif', 'date_end', 'type', 'email', 'news_letter', 'def_locale')) + ->fields('mid', array('memo')) + // ->fields('locid', array('name', 'short_name', 'suffix')) + ->fields('minf', array('activity')) + // ->condition('email_general', '', '<>') + ->orderBy('lid.id_login', 'DESC'); + + // $query->groupBy('lid.id_member'); + + $this->source = new MigrateSourceSQL($query, $source_fields); + $this->destination = new MigrateDestinationUser(); + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_login' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique member ID', + 'alias' => 'lid', + ) + ), + MigrateDestinationUser::getKeySchema() + ); + + // Make the mappings + $this->addFieldMapping('name', 'user_name'); + $this->addFieldMapping('pass')->defaultValue(NULL); + $this->addFieldMapping('mail', 'email'); + # NOTE : maybe if we provide only init mail, we wiil be able to ask email confirmation for users + $this->addFieldMapping('init', 'email'); + $this->addFieldMapping('language', 'def_locale'); + $this->addFieldMapping('theme')->defaultValue(''); + $this->addFieldMapping('signature')->defaultValue(''); + $this->addFieldMapping('signature_format')->defaultValue('filtered_html'); + $this->addFieldMapping('created', 'date_creation'); + $this->addFieldMapping('access')->defaultValue(0);//, 'date_modif'); + $this->addFieldMapping('login')->defaultValue(0); + $this->addFieldMapping('status')->defaultValue(0); + $this->addFieldMapping('picture')->defaultValue(0); + $this->addFieldMapping('timezone')->defaultValue(NULL); + // $this->addFieldMapping('path')->issueGroup(t('DNM')); + $this->addFieldMapping('pathauto')->defaultValue(1); + $this->addFieldMapping('roles', 'roles');// 7 = utilisateur, 6 = adherent, 8 = premium; ->defaultValue(array(6)); // adhérent + $this->addFieldMapping('is_new')->defaultValue(TRUE); + + $this->addFieldMapping('field_newsletter', 'news_letter'); + + $this->addFieldMapping('field_memo', 'memo'); + + $this->addFieldMapping(NULL, 'activity'); + + $this->addUnmigratedDestinations(array( + 'role_names', 'data', 'field_memo:language', + 'field_company', 'field_company:source_type', 'field_company:create_term', 'field_company:ignore_case', + 'path', + )); + + $this->addUnmigratedSources(array( + 'status', 'date_end', 'type', + )); + } + + public function prepareRow($cr) { + + # change roles by end date + if($cr->date_end == ''){ + $roles[] = 7; + }else{ + $today = time(); + $time_end = strtotime($cr->date_end); + // dsm($time_end, 'time_end'); + + $roles = array(); + if($time_end > $today){ + $roles[] = 6; + }else{ + $roles[] = 7; + } + } + // dsm($roles, 'roles'); + $cr->roles = $roles; + + #user name + $cr->user_name = $this->getUserName($cr->email); + // TODO: set role expiration + + #duplicate email + if($this->checkDupEmail($cr->email)){ + $memo[] = "@dup-email : ".$cr->email; + } + + #language + $cr->def_locale = $cr->def_locale == 1 ? 'en' : 'fr'; + + #memo + $memo[] = "@imported"; + + #statuts + $memo[] = "statut : ".$cr->status; + + #statuts + $memo[] = "type : ".$cr->type; + + #statuts + $memo[] = "activity : ".$cr->activity; + + #memo + $cr->memo = implode("\n", $memo) ."\n\n". $cr->memo; + + return true; + // return FALSE if you wish to skip a particular row + } + + public function prepare($user, stdClass $row) { + // dsm('-- prepare --'); + // dsm($user, '$user'); + // dsm($row, '$row'); + + // $node->field_private_email = array('und'=>array($row->email_contact)); + + } + + public function complete($user, $row) { + // dsm('-- complete --'); + // Do what you need to do to + // dsm($row, '$row'); + // dsm($user, '$user'); + + if(in_array(6, $user->roles)){ + $time_end = strtotime($row->date_end); + $min = strtotime('2013 01 30'); + if($time_end < $min) + $time_end = $min; + + uc_roles_grant($user, 6, $time_end, FALSE, TRUE); + } + + + } + + + /** + * helpers + */ + + + private function getUserName($email){ + // Default implementation of name generation. + $new_name = preg_replace('/@.*$/', '', $email); + // Remove unwanted characters. + $new_name = preg_replace('/[^a-zA-Z0-9.-]/', '', $new_name); + + // if username generated from email record already exists, append underscore and number eg:(chris_123) + if ((bool) db_query("SELECT 1 FROM {users} WHERE LOWER(name) = LOWER(:new_name)", array(':new_name' => $new_name))->fetchField()) { + $name_idx = db_query_range("SELECT SUBSTRING_INDEX(name,'_',-1) FROM {users} WHERE name REGEXP :search ORDER BY CAST(SUBSTRING_INDEX(name,'_',-1) AS UNSIGNED) DESC", 0, 1, array(':search' => '^' . $new_name . '_[0-9]+$'))->fetchField(); + + $new_name .= '_' . ($name_idx + 1); + } + + return $new_name; + } + + private function checkDupEmail($email){ + if ((bool) db_query("SELECT 1 FROM {users} WHERE mail = :email", array(':email' => $email))->fetchField()) { + return true; + } + return false; + } +} + +/** + * MaterioIndustrialProfile2Migration + */ +class MaterioAdherentProfile2Migration extends MaterioBasicMigration { + public function __construct() { + parent::__construct(); + global $user; + $this->description = t('Migrate Materio Member Profiles2'); + + // provide better description for source fields + // and add new field source not from sql + $source_fields = array( + 'id_login' => t('Member id from source'), + 'member_name' => t('Main member name'), + 'member_firstname' => t('Main member first name'), + 'premise'=>'', + 'sub_premise'=>'', + ); + + + $query = db_select(MIG_MAT_SRC_DB .'.login_id', 'lid'); + $query->join(MIG_MAT_SRC_DB .'.member_id', 'mid', 'mid.id_member = lid.id_member'); + $query->join(MIG_MAT_SRC_DB .'.member_info', 'minf', 'mid.id_member = minf.id_member'); + + $query + ->fields('lid', array('id_login', 'status', 'name',)) + // ->fields('mid', array('memo', 'cgv')) + ->fields('minf', array( + 'con_title', 'con_name1', 'con_name2', 'con_quality', 'con_service', 'con_ccode1', 'con_tel1', + 'organization', 'employee', 'naf', 'siret', 'web', 'address', 'city', 'zip', 'country', ) + ) + // ->condition('status', 'A') + ->orderBy('lid.id_login', 'DESC'); + + // $query->groupBy('lid.id_member'); + + + $this->source = new MigrateSourceSQL($query, $source_fields); + // $this->dependencies = array('MaterioIndustrialUser'); + $this->destination = new MigrateDestinationProfile2('adherent'); + + $this->map = new MigrateSQLMap($this->machineName, + array( + 'id_login' => array( + 'type' => 'int', + 'unsigned' => TRUE, + 'not null' => TRUE, + 'description' => 'OLD Unique Member ID', + 'alias' => 'lid', + ) + ), + MigrateDestinationProfile2::getKeySchema() + ); + + // Connecting the profile2 to the user: + $this->addFieldMapping('uid', 'id_login') + ->sourceMigration('MaterioAdherentUser') // If your user migration class was named 'MyUserMigration', the string is 'MyUser' + ->description(t('The assignment of profile2-items to the respective Adherent user')); + + $this->addFieldMapping('revision_uid', 'id_login') + ->sourceMigration('MaterioAdherentUser'); + + // Make the mappings + $this->addFieldMapping('language')->defaultValue(''); + + $this->addFieldMapping('field_name', 'member_name'); + $this->addFieldMapping('field_first_name', 'member_firstname'); + $this->addFieldMapping(NULL, 'con_name1'); + $this->addFieldMapping(NULL, 'con_name2'); + $this->addFieldMapping(NULL, 'name'); + + + $this->addFieldMapping('field_private_quality', 'con_quality'); // http://drupal.org/node/1232028 + $this->addFieldMapping('field_private_name_title', 'con_title'); + + $arguments = array( + 'number' => array('source_field' => 'con_tel1'), + ); + $this->addFieldMapping('field_private_phone', 'con_ccode1') + ->arguments($arguments); + // field_private_phone:number + // field_private_phone:extension + $this->addFieldMapping(NULL, 'con_tel1'); + + $this->addFieldMapping(NULL, 'status'); + + $arguments = array( + 'thoroughfare' => array('source_field' => 'address'), + 'premise' => array('source_field' => 'premise'), + 'sub_premise' => array('source_field' => 'sub_premise'), + 'locality' => array('source_field' => 'city'), + 'postal_code' => array('source_field' => 'zip'), + ); + $this->addFieldMapping('field_adresse', 'country') + ->arguments($arguments); + + $this->addFieldMapping(NULL, 'address'); + $this->addFieldMapping(NULL, 'premise'); + $this->addFieldMapping(NULL, 'sub_premise'); + $this->addFieldMapping(NULL, 'city'); + $this->addFieldMapping(NULL, 'zip'); + $this->addFieldMapping(NULL, 'country'); + + $this->addFieldMapping('field_organization', 'organization'); + $this->addFieldMapping('field_service', 'con_service'); + $this->addFieldMapping('field_employee', 'employee'); + $this->addFieldMapping('field_naf', 'naf'); + $this->addFieldMapping('field_siret', 'siret'); + + + $this->addFieldMapping('field_user_website', 'web'); + + $this->addUnmigratedDestinations(array( + 'field_private_quality:language', 'field_first_name:language', 'field_name:language', + 'field_organization:language', 'field_activity:language', 'field_service:language', 'field_naf:language', 'field_siret:language', + 'field_private_phone:number', 'field_private_phone:extension', + + )); + + + } + + + public function prepareRow($cr) { + + if($cr->status == 'A'){ + # nom prenom + $cr->member_name = $cr->con_name1; + $cr->member_firstname = $cr->con_name2; + + #telephone + if($cr->con_ccode1 != ''){ + $ccs = cck_phone_countrycodes(); + $cc_founded = false; + foreach ($ccs as $cc => $cc_values) { + if('+'.preg_replace('/^\+/', '', trim($cr->con_ccode1)) == $cc_values['code']){ + $cr->con_ccode1 = $cc; + $cc_founded = true; + break; + } + } + if(!$cc_founded){ + // dsm($cr->con_ccode1, '$cr->con_ccode1'); + $cr->con_ccode1 = null; + } + } + + + }else{ + $name = explode(' ', $cr->name); + $cr->member_name = array_shift($name); + $cr->member_firstname = implode(' ', $name); + $cr->con_quality = ''; + $cr->con_title = ''; + $cr->con_ccode1 = ''; + $cr->con_tel1 = ''; + } + + $cr->organization = trim($cr->organization); + + + $cr->address = preg_replace('/\\n/', ', ', $cr->address); + if(strlen($cr->address) > 255){ + $adress = $cr->address; + $cr->address = substr($adress, 0, 250); + $cr->premise = substr($adress, 250, 500); + $sub = substr($adress, 500, 750); + $cr->sub_premise = $sub ? $sub : ''; + }else{ + $cr->premise = ''; + $cr->sub_premise = ''; + } + + $cr->city = preg_replace('/\\n/', ' ', $cr->city); + + if($cr->country != ''){ + require_once DRUPAL_ROOT . '/includes/locale.inc'; + $countries = country_get_list(); + + $c_founded = false; + foreach ($countries as $cc => $c) { + if(stristr($cr->country, $c)){ + $cr->country = $cc; + $c_founded = true; + break; + } + } + + if(!$c_founded){ + $nonISO_cc = array( + 'liban' => 'LB', + 'uk' => 'GB', + 'usa' => 'US', + 'korea, south' => 'KR', + 'brésil' => 'BR', + ); + foreach ($nonISO_cc as $n => $cc) { + if(stristr($cr->country, $n)){ + $cr->country = $cc; + $c_founded = true; + break; + } + } + + if(!$c_founded){ + // dsm($cr->country, '$cr->country'); + $cr->country = null; + } + + } + } + + + return TRUE; + // return FALSE if you wish to skip a particular row + } + + + + // public function prepare($node, stdClass $row) { + // // dsm('-- prepare --'); + // // dsm($node, '$node'); + // // dsm($row, '$row'); + // + // // $node->field_private_email = array('und'=>array($row->email_contact)); + // + // } +} \ No newline at end of file diff --git a/migrate_materio.info b/migrate_materio.info index 80ccd406..7f7b5444 100644 --- a/migrate_materio.info +++ b/migrate_materio.info @@ -13,6 +13,7 @@ core = 7.x ; Loadable code files files[] = migrate_materio.module files[] = migrate_materio.basic.inc + files[] = migrate_materio.adherent.inc files[] = migrate_materio.company.inc files[] = migrate_materio.account.inc files[] = migrate_materio.contact.inc @@ -34,6 +35,8 @@ core = 7.x ; dependencies[] = date dependencies[] = link ; dependencies[] = media + dependencies[] = uc_store + dependencies[] = uc_roles ; Configuration page ; configure = admin/config/migrate_materio