/**
* Inserts given $field and appends it to the given $content field collection.
*
* @param \eZ\Publish\SPI\Persistence\Content $content
* @param \eZ\Publish\SPI\Persistence\Content\Field $field
*
* @return void
*/
protected function insertField(Content $content, Field $field)
{
$storageValue = new StorageFieldValue();
$this->fieldValueConverter->toStorageValue($field->value, $storageValue);
$field->id = $this->contentGateway->insertNewField($content, $field, $storageValue);
// If the storage handler returns true, it means that $field value has been modified
// So we need to update it in order to store those modifications
// Field converter is called once again via the Mapper
if ($this->storageHandler->storeFieldData($content->versionInfo, $field) === true) {
$storageValue = new StorageFieldValue();
$this->fieldValueConverter->toStorageValue($field->value, $storageValue);
if ($this->fieldDefinition->isTranslatable) {
$this->contentGateway->updateField($field, $storageValue);
} else {
$this->contentGateway->updateNonTranslatableField($field, $storageValue, $content->versionInfo->contentInfo->id);
}
}
$content->fields[] = $field;
}