function salesforce_pull_process_merged_records in Salesforce Suite 7.3
Process merged records from salesforce.
1 call to salesforce_pull_process_merged_records()
- salesforce_pull_process_updated_records in modules/
salesforce_pull/ salesforce_pull.module - Process records in the queue.
File
- modules/
salesforce_pull/ salesforce_pull.module, line 703 - Pull updates from Salesforce when a Salesforce object is updated.
Code
function salesforce_pull_process_merged_records($sf_object) {
// Handle merges from Salesforce.
$merge_fields = array(
'old_contact_key' => 'Old_Contact__c',
'merged_contact_key' => 'Contact__c',
);
drupal_alter('salesforce_pull_entity_merge_fields', $merge_fields);
$entity_to_delete = salesforce_mapping_object_load_by_sfid($sf_object[$merge_fields['old_contact_key']]);
$merged_entity = salesforce_mapping_object_load_by_sfid($sf_object[$merge_fields['merged_contact_key']]);
// Load and wrap the Drupal entity linked to the SF object.
if ($entity_to_delete && $merged_entity) {
$wrapper = entity_metadata_wrapper($entity_to_delete->entity_type, $entity_to_delete);
// Prevent processing by salesforce_push. We hate circular logic.
$merged_entity->salesforce_pull = TRUE;
// Delete the mapped Drupal entity. Catch any exceptions as
// we want to ensure the mapping object is deleted even in
// case of an error.
module_invoke_all('salesforce_pull_entity_merge', $entity_to_delete, $merged_entity);
watchdog('Salesforce Pull', 'Merged entity %label with ID: %id associated with Salesforce Object ID: %sfid to %label with ID: %newid associated with Salesforce Object ID: %newsfid', array(
'%label' => $wrapper
->label(),
'%id' => $entity_to_delete->entity_id,
'%sfid' => $sf_object[$merge_fields['old_contact_key']],
'%newid' => $merged_entity->entity_id,
'%newsfid' => $sf_object[$merge_fields['merged_contact_key']],
));
}
}