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.21 diff -u -p -r1.2.2.21 salesforce_api.module --- salesforce_api/salesforce_api.module 31 Aug 2009 15:00:22 -0000 1.2.2.21 +++ salesforce_api/salesforce_api.module 29 Sep 2009 19:55:59 -0000 @@ -398,28 +398,19 @@ function salesforce_api_fieldmap_delete( * @return * A FAPI options array of all the matching fieldmaps. */ -function salesforce_api_fieldmap_options($drupal = NULL, $salesforce = NULL, $automatic = FALSE) { +function salesforce_api_fieldmap_options($drupal = NULL, $salesforce = NULL) { $options = array(); - $result = db_query("SELECT fieldmap, drupal, salesforce FROM {salesforce_field_map}"); - while ($map = db_fetch_array($result)) { - - // Skip the fieldmap if it is not for the appropriate Drupal object. - if (!empty($drupal) && $map['drupal'] != $drupal) { - continue; - } - - // Skip the fieldmap if it is not for the appropriate Salesforce object. - if (!empty($salesforce) && $map['salesforce'] != $salesforce) { - continue; - } - - // Setup some replacement args for the label. - $args = array( - '@drupal' => salesforce_api_fieldmap_object_label('drupal', $map['drupal']), - '@salesforce' => salesforce_api_fieldmap_object_label('salesforce', $map['salesforce']), - ); + // This does not need to not be optimized for perfomance since it's only an admin interface. + $vars = array($drupal ? $drupal : '%', $salesforce ? $salesforce : '%'); + $result = db_query("SELECT fieldmap, drupal, salesforce FROM {salesforce_field_map} WHERE drupal LIKE '%s' AND salesforce LIKE '%s'", $vars); + while ($map = db_fetch_array($result)) { + // Setup some replacement args for the label. + $args = array( + '@drupal' => salesforce_api_fieldmap_object_label('drupal', $map['drupal']), + '@salesforce' => salesforce_api_fieldmap_object_label('salesforce', $map['salesforce']), + ); $options[$map['fieldmap']] = t('Drupal @drupal to Salesforce @salesforce', $args); } 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.12 diff -u -p -r1.2.2.12 sf_node.module --- sf_node/sf_node.module 31 Aug 2009 15:00:22 -0000 1.2.2.12 +++ sf_node/sf_node.module 29 Sep 2009 19:55:59 -0000 @@ -59,17 +59,23 @@ function sf_node_nodeapi(&$node, $op, $a if (isset($node->sf_node_skip_export)) { return; } - // Detect whether or not this should be an auto-update for this node - $options = salesforce_api_fieldmap_options('node_'. $node->type, NULL, TRUE); - if (empty($options)) { + + // Are there any automatic fieldmaps for this node type? + $result = db_query("SELECT fieldmap FROM {salesforce_field_map} WHERE drupal = '%s' AND automatic = 1", 'node_'. $node->type); + $map = db_fetch_object($result); + if (!$map) { return; } - if (count($options) > 0) { - $map = key($options); - } - elseif (count($options) > 1 && user_access('administer salesforce')) { - drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used @map.', array('@map' => $map[$key])), 'error'); + + // Use the first fieldmap. + $map = $map->fieldmap; + + // Check if there is more than one fieldmap in the result. + if (user_access('administer salesforce') and db_fetch_object($result)) { + drupal_set_message(t('Warning: more than one "automatic" salesforce mapping detected. Used fieldmap @map.', array('@map' => $map)), 'error'); } + + // Finally, export the node to Salesforce. sf_node_export($node, $map); break; case 'update':