You are here

function feeds_xls_feeds_set_target_numeric in Feeds XLS 7

Callback for mapping numerics.

Ensure that $value is a numeric to avoid database errors. This will also map from a value to a key for list fields.

1 string reference to 'feeds_xls_feeds_set_target_numeric'
feeds_xls_feeds_processor_targets_alter in ./feeds_xls.module
Implements hook_feeds_processor_targets_alter().

File

./feeds_xls.module, line 237

Code

function feeds_xls_feeds_set_target_numeric($source, $entity, $target, $value) {
  if (!is_array($value)) {
    $value = array(
      $value,
    );
  }
  foreach ($value as $k => $v) {
    if (!is_numeric($v)) {

      // We load the field and try to do the mapping.
      $field = field_info_field($target);
      if (isset($field['settings']['allowed_values'])) {
        $key = array_search($v, $field['settings']['allowed_values']);
        if ($field && is_numeric($key)) {
          $value[$k] = $key;
        }
        else {
          unset($value[$k]);
        }
      }
    }
  }
  number_feeds_set_target($source, $entity, $target, $value, FALSE);
}