cvs diff: Diffing .
Index: uc_addresses.migrate.inc
===================================================================
RCS file: uc_addresses.migrate.inc
diff -N uc_addresses.migrate.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ uc_addresses.migrate.inc	7 Nov 2009 01:28:17 -0000
@@ -0,0 +1,105 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Hooks and support code for importing uc_address records via migrate.module.
+ *
+ * @see http://drupal.org/project/migrate
+ */
+
+/**
+ * Implement hook_migrate_types().
+ *
+ * Register 'ac_addresses' as a viable type to import via migrate.module
+ */
+function uc_addresses_migrate_types() {
+  $types = array('uc_addresses' => t('UberCart address'));
+  return $types;
+}
+
+/**
+ * Implement hook_migrate_fields_[type]().
+ *
+ * This defines what target fields the uc_addresses migrate type supports.
+ */
+function uc_addresses_migrate_fields_uc_addresses($type) {
+  $fields = array(
+    'uid' => t('UC Address: User ID'),
+    'first_name' => t('UC Address: First name'),
+    'last_name' => t('UC Address: Last name'),
+    'phone' => t('UC Address: Phone'),
+    'company' => t('UC Address: Company'),
+    'street1' => t('UC Address: Street 1'),
+    'street2' => t('UC Address: Street 2'),
+    'city' => t('UC Address: City'),
+    'zone' => t('UC Address: Zone code'),
+    'postal_code' => t('UC Address: Postal Code'),
+    'country' => t('UC Address: Country'),
+    'address_name' => t('UC Address: Address nickname'),
+    'created' => t('UC Address: Created timestamp'),
+    'modified' => t('UC Address: Last modified timestamp'),
+    'is_default' => t('UC Address: Is default'),
+  );
+  return $fields;
+}
+
+/**
+ * Implement hook_migrate_delete_[type]().
+ *
+ * Force the clearing out of imported uc_addresses records. We don't want to
+ * use _uc_addresses_db_delete_address() here, since unlike in the normal UI,
+ * we need to be able to delete default addresses this way, too, 
+ */
+function uc_addresses_migrate_delete_uc_addresses($aid) {
+  db_query("DELETE FROM {uc_addresses} WHERE aid = %d", $aid);
+  db_query("DELETE FROM {uc_addresses_defaults} WHERE aid = %d", $aid);
+}
+
+/**
+ * Implement hook_migrate_import_[type]().
+ *
+ * Import the given data into a new uc_address object and save it to the DB.
+ * This function invokes hook_migrate_prepare_uc_addresses() to give modules
+ * a chance to alter the $address object before it is written to the DB.
+ */
+function uc_addresses_migrate_import_uc_addresses($tblinfo, $row) {
+  $sourcekey = $tblinfo->sourcekey;
+  $address = new stdClass;
+  foreach ($tblinfo->fields as $destfield => $values) {
+    if ($values['srcfield'] && isset($row->$values['srcfield'])) {
+      $newvalue = $row->$values['srcfield'];
+    }
+    else {
+      $newvalue = $values['default_value'];
+    }
+    // Make sense of timestamp fields
+    if ($destfield == 'created' || $destfield == 'modified') {
+      $newvalue = _migrate_valid_date($newvalue);
+    }
+    $address->$destfield = $newvalue;
+  }
+
+  $errors = migrate_destination_invoke_all('prepare_uc_addresses', $address, $tblinfo, $row);
+
+  $success = TRUE;
+  foreach ($errors as $error) {
+    if ($error['level'] != MIGRATE_MESSAGE_INFORMATIONAL) {
+      $success = FALSE;
+      break;
+    }
+  }
+
+  if ($success) {
+    $address_id = _uc_addresses_db_add_address($address, TRUE);
+    if (!empty($address_id)) {
+      migrate_add_mapping($tblinfo->mcsid, $row->$sourcekey, $address_id);
+    }
+    elseif (empty($errors)) {
+      $errors[] = migrate_message(t('_uc_addresses_db_add_address() failed: Unknown reason'));
+    }
+  }
+
+  return $errors;
+}
+
Index: uc_addresses.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/uc_addresses/uc_addresses.module,v
retrieving revision 1.28
diff -u -p -r1.28 uc_addresses.module
--- uc_addresses.module	20 Apr 2009 20:54:10 -0000	1.28
+++ uc_addresses.module	7 Nov 2009 01:28:18 -0000
@@ -57,6 +57,9 @@ define('UC_ADDRESSES_ACCESS_ADD_EDIT', '
  */
 function uc_addresses_init() {
   drupal_add_css(drupal_get_path('module', 'uc_order') .'/uc_order.css');
+  if (module_exists('migrate')) {
+    module_load_include('inc', 'uc_addresses', 'uc_addresses.migrate');
+  }
 }
 
 /**
