protected function FeedImportProcessor::attachField in Feed Import 8
Attaches a field value to entity.
Parameters
array &$entity: Entity where to attach field.
array &$field: Field settings.
mixed &$value: Field value.
1 call to FeedImportProcessor::attachField()
- FeedImportProcessor::createEntity in feed_import_base/
src/ FeedImportProcessor.php - Creates a new entity.
File
- feed_import_base/
src/ FeedImportProcessor.php, line 610
Class
- FeedImportProcessor
- Class that processess the import.
Namespace
Drupal\feed_import_baseCode
protected function attachField(array &$entity, &$field, &$value) {
if ($field['column']) {
// It is a field.
$fn =& $field['field'];
$fc =& $field['column'];
$lang =& $entity[$this->entityInfo->langKey];
// Check if field exists.
if (!isset($entity[$fn][$lang])) {
$entity[$fn][$lang] = array();
}
// Get field reference.
$ef =& $entity[$fn][$lang];
// Check for static fields.
$st = FALSE;
if (!empty($this->staticFields[$fn])) {
$st =& $this->staticFields[$fn];
}
// Make it look multivalued.
if (!is_array($value)) {
$value = array(
$value,
);
}
elseif ($field['cardinality'] != -1 && ($cnt = count($value)) > $field['cardinality']) {
// Remove extra values.
array_splice($value, $field['cardinality'], $cnt - $field['cardinality'], NULL);
}
// Set field properties.
if ($st) {
// There are static field props.
$fa = array(
$fc => NULL,
);
$fv =& $fa[$fc];
foreach ($value as &$v) {
if (is_object($v)) {
$ef[] = (array) $v + $st;
}
else {
$fv = $v;
$ef[] = $fa + $st;
}
}
}
else {
// No static field props.
foreach ($value as &$v) {
if (is_object($v)) {
$ef[] = (array) $v;
}
else {
$ef[][$fc] = $v;
}
}
}
}
else {
// If this is a property then get only first value.
if (is_array($value) || is_object($value)) {
// This still can be array but if so then problem is elsewhere.
$value = reset($value);
}
// Set property.
$entity[$field['field']] = $value;
}
}