function entityreference_feeds_feeds_set_target in Entity reference feeds 7
Callback for mapping.
Parameters
FeedsSource $source: A FeedsSource object.
Entity $entity: The entity to map to.
string $target: The target key on $entity to map to.
array $value: The value to map. Should be an array.
1 string reference to 'entityreference_feeds_feeds_set_target'
- _entityreference_feeds_get_targets in ./
entityreference_feeds.module - @file This is the main module file for entity reference feeds.
File
- ./
entityreference_feeds.module, line 160 - This is the main module file for entity reference feeds.
Code
function entityreference_feeds_feeds_set_target($source, $entity, $target, $value, $mapping) {
$entity->entityreference_feeds_source_id = $source->id;
//$entity->entityreference_feeds_source_feed_nid = $source->feed_nid;
// Assume that the passed in value could really be any number of values.
if (is_array($value)) {
$values = $value;
}
else {
$values = array(
$value,
);
}
list($field_name, $target_bundle, $target_callback, $target_target) = explode(':', $target, 4);
// Get some useful field information.
$field_info = field_info_field($field_name);
$target_type = $field_info['settings']['target_type'];
if (!isset($entity->entityreference_feeds_items)) {
$entity->entityreference_feeds_items = array();
}
if (!isset($entity->entityreference_feeds_items[$field_name])) {
$entity->entityreference_feeds_items[$field_name] = array();
}
if (!isset($entity->entityreference_feeds_items[$field_name][$target_bundle])) {
$entity->entityreference_feeds_items[$field_name][$target_bundle] = array();
}
$bundle_items =& $entity->entityreference_feeds_items[$field_name][$target_bundle];
foreach ($values as $delta => $target_value) {
if (!isset($bundle_items[$delta])) {
$target_entity_info = entity_get_info($target_type);
$target_entity = new stdClass();
if (!empty($target_entity_info['entity keys']['bundle'])) {
$target_entity->{$target_entity_info['entity keys']['bundle']} = $target_bundle;
}
$bundle_items[$delta]['target_entity'] = $target_entity;
$bundle_items[$delta]['creation_values'] = array();
}
else {
$target_entity =& $bundle_items[$delta]['target_entity'];
}
if (!isset($target_entity->feeds_item)) {
entityreference_feeds_newItemInfo($target_entity, $target_type, $source->id, $source->feed_nid);
}
if ($target_callback !== 'entityreference_feeds' && function_exists($target_callback)) {
//$real_target = isset($targets[$target]['real_target']) ? $targets[$target]['real_target'] : $target_target;
//$bundle_items[$delta]['real_targets'][$real_target] = $real_target;
//Note: Most feed mappers, at least the ones in Feeds > 7.x-2.0-alpha8, assume target value is an array
$target_callback($source, $target_entity, $target_target, array(
$target_value,
), $mapping);
}
else {
switch ($target_target) {
case 'url':
case 'guid':
$target_entity->feeds_item->{$target_target} = $target_value;
break;
default:
$bundle_items[$delta]['creation_values'][$target_target] = $target_value;
break;
}
}
}
}