protected function FeedImportProcessor::combineEntities in Feed Import 8
Combines two entities.
Parameters
array $new: Created entity
object $curr: Current entity
Return value
boolean TRUE if current entity was changed
1 call to FeedImportProcessor::combineEntities()
- FeedImportProcessor::saveEntities in feed_import_base/
src/ FeedImportProcessor.php - Saves created entities.
File
- feed_import_base/
src/ FeedImportProcessor.php, line 798
Class
- FeedImportProcessor
- Class that processess the import.
Namespace
Drupal\feed_import_baseCode
protected function combineEntities(array &$new, $curr) {
// Initial entity status.
$changed = FALSE;
// Get entity language
$lang =& $new[$this->entityInfo->langKey];
// Compare fields from entities.
foreach ($this->fieldsInfo as &$field) {
// Get field name and column.
$fn =& $field['field'];
$fc =& $field['column'];
if ($fc) {
// It is a field
if (isset($new[$fn][$lang])) {
if (isset($curr->{$fn}[$lang])) {
if ($field['update_mode']
->merge($curr->{$fn}[$lang], $new[$fn][$lang], $field)) {
// Mark as changed.
$changed = TRUE;
}
}
else {
// Overwrite.
$curr->{$fn}[$lang] = $new[$fn][$lang];
// Mark as changed.
$changed = TRUE;
}
}
elseif ($field['overwrite'] && isset($curr->{$fn}[$lang])) {
// Forced update mode.
unset($curr->{$fn}[$lang]);
// Don't leave an empty property.
if (empty($curr->{$fn})) {
unset($curr->{$fn});
}
// Mark as changed.
$changed = TRUE;
}
}
else {
// It is a property.
if (isset($new[$fn])) {
if (isset($curr->{$fn}) && $curr->{$fn} == $new[$fn]) {
// Nothing changed.
continue;
}
// Set the new property value.
$curr->{$fn} = $new[$fn];
// Mark as changed.
$changed = TRUE;
// Remove from memory.
unset($new[$fn]);
}
elseif ($field['overwrite'] && isset($curr->{$fn})) {
// Forced update mode is selected.
unset($curr->{$fn});
// Mark as changed.
$changed = TRUE;
}
}
}
return $changed;
}