private function migrateHome(SessionInterface $session, $from, $to, $referenceWebspace)
{
$webspaceManager = $this->container->get('sulu_core.webspace.webspace_manager');
$pathRegistry = $this->container->get('sulu_document_manager.path_segment_registry');
$webspaces = $webspaceManager->getWebspaceCollection();
foreach ($webspaces as $webspace) {
$webspacePath = sprintf('/%s/%s', $pathRegistry->getPathSegment('base'), $webspace->getKey());
$homeNodeName = $pathRegistry->getPathSegment('content');
$webspace = $session->getNode($webspacePath);
if ($referenceWebspace) {
$webspace->addMixin('mix:referenceable');
} else {
$webspace->removeMixin('mix:referenceable');
}
$homeNode = $webspace->getNode($homeNodeName);
$tmpNode = $session->getRootNode()->addNode('/tmp');
$tmpNode->addMixin('mix:referenceable');
$session->save();
$homeNodeReferences = $homeNode->getReferences();
$homeNodeReferenceValues = [];
foreach ($homeNodeReferences as $homeNodeReference) {
/* @var Property $homeNodeReference */
$homeNodeReferenceValues[$homeNodeReference->getPath()] = $homeNodeReference->getValue();
$homeNodeReference->setValue($tmpNode);
}
$session->save();
$homeNode->removeMixin($from);
$session->save();
$homeNode->addMixin($to);
$session->save();
foreach ($homeNodeReferences as $homeNodeReference) {
$homeNodeReference->setValue($homeNodeReferenceValues[$homeNodeReference->getPath()], PropertyType::REFERENCE);
}
$session->save();
$tmpNode->remove();
}
}