protected function mapFieldsForUpdate(APIContentUpdateStruct $contentUpdateStruct, ContentType $contentType, $mainLanguageCode)
{
$fields = array();
foreach ($contentUpdateStruct->fields as $field) {
$fieldDefinition = $contentType->getFieldDefinition($field->fieldDefIdentifier);
if ($fieldDefinition === null) {
throw new ContentValidationException("Field definition '%identifier%' does not exist in given ContentType", ['%identifier%' => $field->fieldDefIdentifier]);
}
if ($field->languageCode === null) {
if ($fieldDefinition->isTranslatable) {
$languageCode = $contentUpdateStruct->initialLanguageCode;
} else {
$languageCode = $mainLanguageCode;
}
$field = $this->cloneField($field, array('languageCode' => $languageCode));
}
if (!$fieldDefinition->isTranslatable && $field->languageCode != $mainLanguageCode) {
throw new ContentValidationException("A value is set for non translatable field definition '%identifier%' with language '%languageCode%'", ['%identifier%' => $field->fieldDefIdentifier, '%languageCode%' => $field->languageCode]);
}
$fields[$field->fieldDefIdentifier][$field->languageCode] = $field;
}
return $fields;
}