You are here

function _salesforce_mapping_get_default_value in Salesforce Suite 7.3

Helper to retrieve the current value for a given form field.

Parameters

string $field: Name of the field who's value to retreive.

array $form_state: Current state of the form to compare with.

mixed $delta: Optionally provide the delta of the specific field map to check.

Return value

mixed Value of the field that is appropriate for #default_value.

2 calls to _salesforce_mapping_get_default_value()
salesforce_mapping_form in modules/salesforce_mapping/includes/salesforce_mapping.admin.inc
Return a form for a Salesforce mapping entity.
_salesforce_mapping_get_required_mapping_fields in modules/salesforce_mapping/includes/salesforce_mapping.admin.inc
Helper to discover which fields required for mapping do not have values.

File

modules/salesforce_mapping/includes/salesforce_mapping.admin.inc, line 756
Configuration page for creating and modifying a mapping.

Code

function _salesforce_mapping_get_default_value($field, &$form_state, $delta = NULL) {
  $mapping = NULL;
  if (isset($form_state['salesforce_mapping'])) {
    $mapping =& $form_state['salesforce_mapping'];
  }
  $value = NULL;
  if ($field == 'field_mappings') {
    if (!isset($mapping->field_mappings) || !is_array($mapping->field_mappings)) {
      $mapping->field_mappings = array(
        _salesforce_mapping_get_empty_field_map_row(),
      );
    }
    if (isset($form_state['triggering_element'])) {
      if ($form_state['triggering_element']['#name'] == 'salesforce_add_field') {
        $mapping->field_mappings[] = _salesforce_mapping_get_empty_field_map_row();
      }
      if (isset($form_state['triggering_element']['#ajax']['delta']) && $form_state['triggering_element']['#name'] == 'delete_field_mapping-' . $form_state['triggering_element']['#ajax']['delta']) {
        $delta = $form_state['triggering_element']['#ajax']['delta'];
        unset($mapping->field_mappings[$delta]);
      }
    }
    $value =& $mapping->field_mappings;
  }
  elseif (is_null($delta)) {
    if (isset($form_state['input'][$field])) {
      $value =& $form_state['input'][$field];
    }
    elseif (!empty($mapping)) {
      $value =& $mapping->{$field};
    }

    // Special case for drupal bundle.
    if ($field == 'drupal_bundle') {
      $drupal_entity = _salesforce_mapping_get_default_value('drupal_entity_type', $form_state);
      $entity_bundle_options = array_keys(_salesforce_mapping_get_entity_bundle_options($drupal_entity, FALSE));
      if (empty($drupal_entity) || !in_array($value, $entity_bundle_options)) {
        $value = NULL;
      }
    }

    // Special case for salesforce record type.
    if ($field == 'salesforce_record_type_default') {
      $salesforce_object_type = _salesforce_mapping_get_default_value('salesforce_object_type', $form_state);
      $salesforce_record_type_options = _salesforce_mapping_get_salesforce_record_type_options($salesforce_object_type, $form_state, FALSE);
      $record_type_count = count($salesforce_record_type_options);
      $default = $record_type_count > 1 ? 0 : SALESFORCE_MAPPING_DEFAULT_RECORD_TYPE;
      $value = !empty($value) && $record_type_count > 1 ? $value : $default;
    }

    // Special case for sync triggers.
    if ($field == 'sync_triggers') {
      if (is_array($value)) {
        $sync_values = array_filter($value);
        $sync_triggers = SALESFORCE_MAPPING_SYNC_OFF;
        foreach ($sync_values as $value) {
          $sync_triggers = $sync_triggers | $value;
        }
        $value = $sync_triggers;
      }
      $breakup = array();
      foreach (_salesforce_mapping_get_sync_trigger_options() as $key => $option) {
        if ($key & $value) {
          $breakup[] = $key;
        }
      }
      $value = $breakup;
    }
  }
  else {
    switch ($field) {
      case 'fieldmap_type':
      case 'fieldmap_value':
        if (isset($form_state['input']['salesforce_field_mappings'][$delta]['drupal_field'][$field])) {
          $value =& $form_state['input']['salesforce_field_mappings'][$delta]['drupal_field'][$field];
        }
        elseif (!empty($mapping) && isset($mapping->field_mappings[$delta]['drupal_field'][$field])) {
          $value =& $mapping->field_mappings[$delta]['drupal_field'][$field];
        }
        break;
      case 'salesforce_field':
        $salesforce_object_type = _salesforce_mapping_get_default_value('salesforce_object_type', $form_state);
        if (empty($salesforce_object_type)) {
          $value = NULL;
        }
        else {
          if (isset($form_state['input']['salesforce_field_mappings'][$delta][$field])) {
            $value =& $form_state['input']['salesforce_field_mappings'][$delta][$field];
          }
          elseif (!empty($mapping) && isset($mapping->field_mappings[$delta])) {
            $fieldmap_type_name = _salesforce_mapping_get_default_value('fieldmap_type', $form_state, $delta);
            $fieldmap_type = salesforce_mapping_get_fieldmap_types($fieldmap_type_name);
            if (isset($fieldmap_type['salesforce_multiple_fields']) && $fieldmap_type['salesforce_multiple_fields']) {
              $value = array();
              foreach ($mapping->field_mappings[$delta][$field] as $sf_field) {
                if (is_array($sf_field) && isset($sf_field['name'])) {
                  $value[] =& $sf_field['name'];
                }
                else {
                  $value[] =& $sf_field;
                }
              }
            }
            elseif (isset($mapping->field_mappings[$delta][$field])) {
              $sf_field =& $mapping->field_mappings[$delta][$field];
              if (is_array($sf_field) && isset($sf_field['name'])) {
                $value =& $sf_field['name'];
              }
              else {
                $value =& $sf_field;
              }
            }
            else {
              $value = NULL;
            }
          }
        }
        break;
      case 'key':
        if (isset($form_state['input']['key'])) {
          if ($form_state['input']['key'] == $delta) {
            $value = $delta;
          }
        }
        elseif (isset($mapping->field_mappings[$delta][$field]) && $mapping->field_mappings[$delta][$field] === TRUE) {
          $value = $delta;
        }
        else {
          $value = FALSE;
        }
        break;
      case 'direction':

        // Set default for direction, which cannot be NULL like the others.
        $keys = array_keys(_salesforce_mapping_get_direction_options());
        $value = end($keys);

      // No break for this case, should carry onto the default case.
      default:
        if (isset($form_state['input']['salesforce_field_mappings'][$delta][$field])) {
          $value =& $form_state['input']['salesforce_field_mappings'][$delta][$field];
        }
        elseif (isset($mapping->field_mappings[$delta][$field])) {
          $value =& $mapping->field_mappings[$delta][$field];
        }
        break;
    }
  }
  return $value;
}