diff --git a/mappers/date.inc b/mappers/date.inc index 6cc5bcaf41380b86e1d90fe680575bbfd07096d7..3de6a69f2e5af4c15c9df1c2ec86a466adfcc940 100644 --- a/mappers/date.inc +++ b/mappers/date.inc @@ -59,5 +59,4 @@ function date_feeds_set_target($source, $entity, $target, $feed_element) { } } $feed_element->buildDateField($entity, $field_name); - } diff --git a/mappers/link.inc b/mappers/link.inc index 28aa59a7909427ca5897422851dfc6cae918f950..45a86f7dc7f651ee2914f1bd9318472ed41be127 100644 --- a/mappers/link.inc +++ b/mappers/link.inc @@ -8,7 +8,7 @@ /** * Implements hook_feeds_processor_targets_alter(). * - * @see FeedsNodeProcessor::getMappingTargets(). + * @see FeedsProcessor::getMappingTargets() */ function link_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) { foreach (field_info_instances($entity_type, $bundle_name) as $name => $instance) { @@ -16,16 +16,18 @@ function link_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam if ($info['type'] == 'link_field') { if (array_key_exists('url', $info['columns'])) { $targets[$name . ':url'] = array( - 'name' => t('@name URL', array('@name' => $instance['label'])), + 'name' => t('@name: URL', array('@name' => $instance['label'])), 'callback' => 'link_feeds_set_target', - 'description' => t('The @label field of the node.', array('@label' => $instance['label'])), + 'description' => t('The @label field of the entity.', array('@label' => $instance['label'])), + 'real_target' => $name, ); } if (array_key_exists('title', $info['columns'])) { $targets[$name . ':title'] = array( - 'name' => t('@name Title', array('@name' => $instance['label'])), + 'name' => t('@name: Title', array('@name' => $instance['label'])), 'callback' => 'link_feeds_set_target', - 'description' => t('The @label field of the node.', array('@label' => $instance['label'])), + 'description' => t('The @label field of the entity.', array('@label' => $instance['label'])), + 'real_target' => $name, ); } } @@ -50,31 +52,25 @@ function link_feeds_set_target($source, $entity, $target, $value) { } // Iterate over all values. - $i = 0; - $info = field_info_field($target); - list($field_name, $sub_field) = explode(':', $target); + list($field_name, $column) = explode(':', $target); + $info = field_info_field($field_name); + + $field = isset($entity->$field_name) ? $entity->$field_name : array(); + $delta = 0; + foreach ($value as $v) { + if ($info['cardinality'] == $delta) { + break; + } + if (is_object($v) && ($v instanceof FeedsElement)) { $v = $v->getValue(); } - if (!is_array($v) && !is_object($v)) { - if (strstr($target, 'url')) { - if (isset($entity->{$field_name}['und'][$i]['title'])) { - $field['und'][$i]['title'] = $entity->{$field_name}['und'][$i]['title']; - } - $field['und'][$i]['url'] = $v; - } - elseif (strstr($target, 'title')) { - if (isset($entity->{$field_name}['und'][$i]['url'])) { - $field['und'][$i]['url'] = $entity->{$field_name}['und'][$i]['url']; - } - $field['und'][$i]['title'] = $v; - } - } - if ($info['cardinality'] == 1) { - break; + + if (is_scalar($v)) { + $field['und'][$delta][$column] = $v; + $delta++; } - $i++; } - $entity->{$field_name} = $field; + $entity->$field_name = $field; }