You are here

function feeds_xls_feeds_processor_targets_alter in Feeds XLS 7

Implements hook_feeds_processor_targets_alter().

We alter the numeric field types so that fields that are set up with values like:

1|Something 2|Rocking 3|Banana

allow the entry of the text "Something", or "Rocking" instead of "1" or "2".

We alter date field types, so that "days since epoch" values can be imported without changing the format in Excel

File

./feeds_xls.module, line 143

Code

function feeds_xls_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
  $numeric_types = array(
    'list_integer',
    'list_float',
    'list_boolean',
    'number_integer',
    'number_decimal',
    'number_float',
  );
  foreach (field_info_instances($entity_type, $bundle_name) as $name => $instance) {
    $info = field_info_field($name);
    if (in_array($info['type'], $numeric_types)) {
      $targets[$name]['callback'] = 'feeds_xls_feeds_set_target_numeric';
    }
    elseif ($info['type'] == 'list_text') {
      $targets[$name]['callback'] = 'feeds_xls_feeds_set_target_list_text';
    }
    elseif (in_array($info['type'], array(
      'date',
      'datestamp',
      'datetime',
    ))) {
      $targets[$name . ':start'] = array(
        'name' => t('@name: Start', array(
          '@name' => $instance['label'],
        )),
        'callback' => 'feeds_xls_feeds_set_target_date',
        'description' => t('The start date for the @name field. Also use if mapping both start and end.', array(
          '@name' => $instance['label'],
        )),
        'real_target' => $name,
      );
      $targets[$name . ':end'] = array(
        'name' => t('@name: End', array(
          '@name' => $instance['label'],
        )),
        'callback' => 'feeds_xls_feeds_set_target_date',
        'description' => t('The end date for the @name field.', array(
          '@name' => $instance['label'],
        )),
        'real_target' => $name,
      );
    }
  }
}