? .DS_Store
? sf-cck-ref.patch
Index: salesforce_api/salesforce_api.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/salesforce_api/salesforce_api.module,v
retrieving revision 1.2.2.36
diff -u -p -r1.2.2.36 salesforce_api.module
--- salesforce_api/salesforce_api.module	17 Mar 2010 17:44:37 -0000	1.2.2.36
+++ salesforce_api/salesforce_api.module	19 Mar 2010 15:39:43 -0000
@@ -720,6 +720,21 @@ function salesforce_api_id_load($type, $
 }
 
 /**
+ * Get an object id using the salesforce id
+ *
+ * @param $sfid
+ *   A saleforce id
+ * @param $type
+ *   The type of the Drupal object you are requesting data for; node or user.
+ * @return
+ *   The associated unique ID used to identify the object in Drupal or FALSE.
+ */ 
+function salesforce_api_get_id_with_sfid($sfid, $type = 'node') {
+  $result = db_query("SELECT oid FROM {salesforce_object_map} WHERE sfid = '%s' AND drupal_type = '%s'", $sfid, $type); 
+  return db_result($result);
+}
+
+/**
  * Saves the Salesforce ID and fieldmap index of a Drupal object.
  *
  * @param $drupal_type
Index: sf_node/sf_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/salesforce/sf_node/sf_node.module,v
retrieving revision 1.2.2.32
diff -u -p -r1.2.2.32 sf_node.module
--- sf_node/sf_node.module	17 Mar 2010 17:48:19 -0000	1.2.2.32
+++ sf_node/sf_node.module	19 Mar 2010 15:39:44 -0000
@@ -191,6 +191,17 @@ function sf_node_fieldmap_objects($type)
             // case 'text':
               // For example, I might set a handler for text fields that takes
               // the selected input format into account.
+              
+            case 'nodereference':
+              $export_handler = '_sf_node_export_cck_nodereference';
+              $import_handler = '_sf_node_import_cck_nodereference';
+              break;
+
+            case 'userreference':
+              $export_handler = '_sf_node_export_cck_userreference';
+              $import_handler = '_sf_node_import_cck_userreference';
+              break;
+            
             default:
               $export_handler = '_sf_node_export_cck_default';
               $import_handler = '_sf_node_import_cck_default';
@@ -327,6 +338,36 @@ function _sf_node_import_body(&$node, $d
   $node->body = $sf_data->$sf_fieldname;
 }
 
+// Export sfid of referenced node
+function _sf_node_export_cck_nodereference($node, $fieldname, $drupal_field_definition, $sf_field_definition) {
+  $sfid = ''; 
+  if ($nid = $node->{$fieldname}[0]['nid']) {
+    $sf_data = salesforce_api_id_load('node', $nid); 
+    $sfid = isset($sf_data['sfid']) ? $sf_data['sfid'] : ''; 
+  }
+  return $sfid;
+}
+
+// Import node id of referenced node
+function _sf_node_import_cck_nodereference(&$node, $drupal_fieldname, $drupal_field_definition, $sf_data, $sf_fieldname, $sf_field_definition) {
+  $node->{$drupal_fieldname}[0]['nid'] = salesforce_api_get_id_with_sfid($sf_data->$sf_fieldname);
+}
+
+// Export sfid of referenced user
+function _sf_node_export_cck_userreference($node, $fieldname, $drupal_field_definition, $sf_field_definition) {
+  $sfid = ''; 
+  if ($uid = $node->{$fieldname}[0]['uid']) {
+    $sf_data = salesforce_api_id_load('user', $uid); 
+    $sfid = isset($sf_data['sfid']) ? $sf_data['sfid'] : ''; 
+  }
+  return $sfid;
+}
+
+// Import node id of referenced user
+function _sf_node_import_cck_userreference(&$node, $drupal_fieldname, $drupal_field_definition, $sf_data, $sf_fieldname, $sf_field_definition) {
+  $node->{$drupal_fieldname}[0]['uid'] = salesforce_api_get_id_with_sfid($sf_data->$sf_fieldname, $type = 'user');
+}
+
 // Displays the Salesforce synchronization form.
 function sf_node_salesforce_form(&$form_state, $node) {
   // Fail out if the node didn't exist!
