function salesforce_mapping_form_submit in Salesforce Suite 7.3
Submit handler for salesforce_mapping_form().
File
- modules/
salesforce_mapping/ includes/ salesforce_mapping.admin.inc, line 665 - Configuration page for creating and modifying a mapping.
Code
function salesforce_mapping_form_submit($form, &$form_state) {
$values = $form_state['values'];
$mappings = array();
if (isset($values['key'])) {
$key_delta = isset($values['key']) ? $values['key'] : FALSE;
$dedupe_key = FALSE;
$sfobject = _salesforce_mapping_get_salesforce_object($values['salesforce_object_type'], $form_state);
$sf_fields = isset($sfobject['fields']) ? $sfobject['fields'] : array();
foreach ($values['salesforce_field_mappings'] as $key => $mapping) {
$drupal_field_type = $mapping['drupal_field']['fieldmap_type'];
$field_map = salesforce_mapping_get_fieldmap_types($drupal_field_type);
if (!empty($mapping['drupal_field']) && !empty($mapping['salesforce_field'])) {
if (isset($field_map['salesforce_multiple_fields']) && $field_map['salesforce_multiple_fields']) {
$sf_field = array();
foreach ($mapping['salesforce_field'] as $field) {
$filtered = array_filter($sf_fields, salesforce_field_filter($field));
$sf_field[] = reset($filtered);
}
}
else {
$filtered = array_filter($sf_fields, salesforce_field_filter($mapping['salesforce_field']));
$sf_field = reset($filtered);
}
$mappings[] = array(
'drupal_field' => $mapping['drupal_field'],
'salesforce_field' => $sf_field,
'key' => $key_delta !== FALSE && $key_delta != "" && $key === (int) $key_delta,
'direction' => $mapping['direction'],
);
if ($key_delta !== FALSE && $key_delta != "" && $key === (int) $key_delta) {
$dedupe_key = $sf_field['name'];
}
}
}
}
$sync_values = array_filter($values['sync_triggers']);
$sync_triggers = SALESFORCE_MAPPING_SYNC_OFF;
foreach ($sync_values as $value) {
$sync_triggers = $sync_triggers | $value;
}
$params = array(
'label' => $values['label'],
'salesforce_object_type' => $values['salesforce_object_type'],
'salesforce_record_types_allowed' => $values['salesforce_record_types_allowed'],
'salesforce_record_type_default' => $values['salesforce_record_type_default'],
'drupal_entity_type' => $values['drupal_entity_type'],
'drupal_bundle' => $values['drupal_bundle'],
'description' => '',
'field_mappings' => $mappings,
'sync_triggers' => $sync_triggers,
'pull_trigger_date' => $values['pull_trigger_date'],
'push_async' => $values['push_async'],
);
if ($form_state['salesforce_mapping']->name) {
$mapping = $form_state['salesforce_mapping'];
foreach ($params as $key => $value) {
$mapping->{$key} = $value;
}
}
else {
$params['name'] = $values['name'];
$mapping = entity_create('salesforce_mapping', $params);
}
if (!empty($dedupe_key)) {
$mapping->dedupe_key = $dedupe_key;
}
$mapping
->save();
salesforce_set_message(t('Salesforce field mapping saved.'));
$form_state['redirect'] = 'admin/structure/salesforce/mappings';
}