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;
}