protected function mapStructFieldsForUpdate($initialLanguageCode, $structFields, $mainLanguageCode, $fieldDefinitions)
{
$initialLanguageCode = $initialLanguageCode ?: $mainLanguageCode;
$mappedFieldDefinitions = array();
foreach ($fieldDefinitions as $fieldDefinition) {
$mappedFieldDefinitions[$fieldDefinition->identifier] = $fieldDefinition;
}
$mappedStructFields = array();
foreach ($structFields as $structField) {
$identifier = $structField->fieldDefIdentifier;
if ($structField->languageCode !== null) {
$languageCode = $structField->languageCode;
} elseif ($mappedFieldDefinitions[$identifier]->isTranslatable) {
$languageCode = $initialLanguageCode;
} else {
$languageCode = $mainLanguageCode;
}
$mappedStructFields[$identifier][$languageCode] = (string) $structField->value;
}
return $mappedStructFields;
}