protected function determineValuesForUpdate($initialLanguageCode, array $structFields, Content $content, array $fieldDefinitions, array $languageCodes)
{
$mainLanguageCode = $content->versionInfo->contentInfo->mainLanguageCode;
$mappedStructFields = $this->mapStructFieldsForUpdate($initialLanguageCode, $structFields, $mainLanguageCode, $fieldDefinitions);
$values = array();
foreach ($fieldDefinitions as $fieldDefinition) {
$identifier = $fieldDefinition->identifier;
foreach ($languageCodes as $languageCode) {
if (!$fieldDefinition->isTranslatable) {
if (isset($mappedStructFields[$identifier][$mainLanguageCode])) {
$values[$identifier][$languageCode] = $mappedStructFields[$identifier][$mainLanguageCode];
} else {
$values[$identifier][$languageCode] = (string) $content->fields[$identifier][$mainLanguageCode];
}
continue;
}
if (isset($mappedStructFields[$identifier][$languageCode])) {
$values[$identifier][$languageCode] = $mappedStructFields[$identifier][$languageCode];
continue;
}
if (isset($content->fields[$identifier][$languageCode])) {
$values[$identifier][$languageCode] = (string) $content->fields[$identifier][$languageCode];
continue;
}
$values[$identifier][$languageCode] = (string) $fieldDefinition->defaultValue;
}
}
return $this->stubValues($values);
}