You are here

function salesforce_api_fieldmap_edit_form_submit in Salesforce Suite 7.2

Same name and namespace in other branches
  1. 5.2 salesforce_api/salesforce_api.admin.inc \salesforce_api_fieldmap_edit_form_submit()
  2. 6.2 salesforce_api/salesforce_api.admin.inc \salesforce_api_fieldmap_edit_form_submit()
  3. 7 salesforce_api/salesforce_api.admin.inc \salesforce_api_fieldmap_edit_form_submit()

FAPI submit handler for fieldmap editor.

File

salesforce_api/salesforce_api.admin.inc, line 925
Contains the admin page callbacks for the Salesforce module, including forms for general settings and fieldmap administration.

Code

function salesforce_api_fieldmap_edit_form_submit($form, &$form_state) {

  // Load the fieldmap from the database.
  $map = salesforce_api_salesforce_fieldmap_load($form_state['values']['fieldmap_index']);
  $map->description = $form_state['values']['description'];
  $map->fields = array();

  // Get the object definition for the target object.
  $object = salesforce_api_fieldmap_objects_load('salesforce', 'salesforce', $map->salesforce);
  if (isset($form_state['values']['rows'])) {
    $rows = $form_state['values']['rows'];
  }

  // Loop through all the select inputs.
  if (isset($rows)) {
    foreach ($rows as $row) {
      $source = key($row['source']);
      $target = current($row['source']);
      if (!empty($row['source'][$source . '_extra'])) {
        $map->fields[$source] = array(
          'type' => $target,
          'value' => $row['source'][$source . '_extra'],
        );
      }
      else {

        // Add the association to the fieldmap's fields array.
        $map->fields[$source] = $target;
      }
    }
  }
  $map->automatic = 0;

  // set the automatic flag on the map
  foreach ($form_state['values']['drupal_sfapi_automatic'] as $auto) {
    $map->automatic |= $auto;
  }
  if (!empty($form_state['values']['new_field'])) {
    $field = $form_state['values']['new_field'];
    $map->fields[$field] = '';
  }

  // Save the updated fieldmap.
  salesforce_api_fieldmap_save($map);

  // In most cases, we will want to remain on this page and rebuild the form.
  $form_state['rebuild'] = TRUE;
  switch ($form_state['values']['op']) {
    case $form_state['values']['add_button']:
      drupal_set_message(t('Field added.'));
      break;
    case $form_state['values']['submit']:
      if (!empty($form_state['values']['new_field'])) {
        drupal_set_message(t('Field added.'));
      }
      else {
        drupal_set_message(t('The changes have been saved.'));
        $form_state['redirect'] = SALESFORCE_PATH_FIELDMAPS;
        $form_state['rebuild'] = FALSE;
      }
      break;
  }
}