public function toStorageFieldDefinition(FieldDefinition $fieldDef, StorageFieldDefinition $storageDef)
{
$fieldSettings = $fieldDef->fieldTypeConstraints->fieldSettings;
$doc = new DOMDocument('1.0', 'utf-8');
$root = $doc->createElement('related-objects');
$doc->appendChild($root);
$constraints = $doc->createElement('constraints');
if (!empty($fieldSettings['selectionContentTypes'])) {
foreach ($fieldSettings['selectionContentTypes'] as $typeIdentifier) {
$allowedClass = $doc->createElement('allowed-class');
$allowedClass->setAttribute('contentclass-identifier', $typeIdentifier);
$constraints->appendChild($allowedClass);
unset($allowedClass);
}
}
$root->appendChild($constraints);
$type = $doc->createElement('type');
$type->setAttribute('value', 2);
//Deprecated advance object relation list type, set since 4.x does
$root->appendChild($type);
$objectClass = $doc->createElement('object_class');
$objectClass->setAttribute('value', '');
//Deprecated advance object relation class type, set since 4.x does
$root->appendChild($objectClass);
$selectionType = $doc->createElement('selection_type');
if (isset($fieldSettings['selectionMethod'])) {
$selectionType->setAttribute('value', (int) $fieldSettings['selectionMethod']);
} else {
$selectionType->setAttribute('value', 0);
}
$root->appendChild($selectionType);
$defaultLocation = $doc->createElement('contentobject-placement');
if (!empty($fieldSettings['selectionDefaultLocation'])) {
$defaultLocation->setAttribute('node-id', (int) $fieldSettings['selectionDefaultLocation']);
}
$root->appendChild($defaultLocation);
$doc->appendChild($root);
$storageDef->dataText5 = $doc->saveXML();
}