Sulu\Bundle\ContentBundle\Version201504271608::migrateHome PHP Метод

migrateHome() приватный Метод

private migrateHome ( PHPCR\SessionInterface $session, $from, $to, $referenceWebspace )
$session PHPCR\SessionInterface
    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();
        }
    }