src/Sulu/Component/Content/Document/Subscriber/ResourceSegmentSubscriber.php
private function updateRoute($document, $generateRoutes)
    {
        $locales = $this->documentInspector->getLocales($document);
        $webspaceKey = $this->documentInspector->getWebspace($document);
        $uuid = $this->documentInspector->getUuid($document);
        $path = $this->documentInspector->getPath($document);
        $parentUuid = $this->documentInspector->getUuid($this->documentInspector->getParent($document));

        $defaultNode = $this->defaultSession->getNode($path);
        $liveNode = $this->liveSession->getNode($path);

        $resourceLocatorStrategy = $this->resourceLocatorStrategyPool->getStrategyByWebspaceKey($webspaceKey);

        foreach ($locales as $locale) {
            $localizedDocument = $this->documentManager->find($uuid, $locale);

            if (RedirectType::NONE !== $localizedDocument->getRedirectType()) {
                continue;
            }

            $resourceSegmentPropertyName = $this->encoder->localizedSystemName(
                $this->getResourceSegmentProperty($localizedDocument)->getName(),
                $locale
            );

            $this->updateResourceSegmentProperty(
                $defaultNode,
                $resourceSegmentPropertyName,
                $parentUuid,
                $webspaceKey,
                $locale
            );

            if ($liveNode->hasProperty($resourceSegmentPropertyName)) {
                $this->updateResourceSegmentProperty(
                    $liveNode,
                    $resourceSegmentPropertyName,
                    $parentUuid,
                    $webspaceKey,
                    $locale
                );

                // if the method is called with the generateRoutes flag it will create a new route
                // this happens on a move, but not on copy, because copy results in a draft page without url
                if ($generateRoutes) {
                    $localizedDocument->setResourceSegment($liveNode->getPropertyValue($resourceSegmentPropertyName));
                    $resourceLocatorStrategy->save($localizedDocument, null);
                    $localizedDocument->setResourceSegment($defaultNode->getPropertyValue($resourceSegmentPropertyName));
                }
            }
        }
    }
private function updateRoute($document, $generateRoutes)
    {
        $locales = $this->documentInspector->getLocales($document);
        $webspaceKey = $this->documentInspector->getWebspace($document);
        $uuid = $this->documentInspector->getUuid($document);
        $path = $this->documentInspector->getPath($document);
        $parentUuid = $this->documentInspector->getUuid($this->documentInspector->getParent($document));

        $defaultNode = $this->defaultSession->getNode($path);
        $liveNode = $this->liveSession->getNode($path);

        $resourceLocatorStrategy = $this->resourceLocatorStrategyPool->getStrategyByWebspaceKey($webspaceKey);

        foreach ($locales as $locale) {
            $localizedDocument = $this->documentManager->find($uuid, $locale);

            if (RedirectType::NONE !== $localizedDocument->getRedirectType()) {
                continue;
            }

            $resourceSegmentPropertyName = $this->encoder->localizedSystemName(
                $this->getResourceSegmentProperty($localizedDocument)->getName(),
                $locale
            );

            $this->updateResourceSegmentProperty(
                $defaultNode,
                $resourceSegmentPropertyName,
                $parentUuid,
                $webspaceKey,
                $locale
            );

            if ($liveNode->hasProperty($resourceSegmentPropertyName)) {
                $this->updateResourceSegmentProperty(
                    $liveNode,
                    $resourceSegmentPropertyName,
                    $parentUuid,
                    $webspaceKey,
                    $locale
                );

                // if the method is called with the generateRoutes flag it will create a new route
                // this happens on a move, but not on copy, because copy results in a draft page without url
                if ($generateRoutes) {
                    $localizedDocument->setResourceSegment($liveNode->getPropertyValue($resourceSegmentPropertyName));
                    $resourceLocatorStrategy->save($localizedDocument, null);
                    $localizedDocument->setResourceSegment($defaultNode->getPropertyValue($resourceSegmentPropertyName));
                }
            }
        }
    }
private function updateRoute ( $ document , $ generateRoutes ) { $ locales = $ this -> documentInspector -> getLocales ( $ document ) ; $ webspaceKey = $ this -> documentInspector -> getWebspace ( $ document ) ; $ uuid = $ this -> documentInspector -> getUuid ( $ document ) ; $ path = $ this -> documentInspector -> getPath ( $ document ) ; $ parentUuid = $ this -> documentInspector -> getUuid ( $ this -> documentInspector -> getParent ( $ document ) ) ; $ defaultNode = $ this -> defaultSession -> getNode ( $ path ) ; $ liveNode = $ this -> liveSession -> getNode ( $ path ) ; $ resourceLocatorStrategy = $ this -> resourceLocatorStrategyPool -> getStrategyByWebspaceKey ( $ webspaceKey ) ; foreach ( $ locales as $ locale ) { $ localizedDocument = $ this -> documentManager -> find ( $ uuid , $ locale ) ; if ( RedirectType :: NONE !== $ localizedDocument -> getRedirectType ( ) ) { continue ; } $ resourceSegmentPropertyName = $ this -> encoder -> localizedSystemName ( $ this -> getResourceSegmentProperty ( $ localizedDocument ) -> getName ( ) , $ locale ) ; $ this -> updateResourceSegmentProperty ( $ defaultNode , $ resourceSegmentPropertyName , $ parentUuid , $ webspaceKey , $ locale ) ; if ( $ liveNode -> hasProperty ( $ resourceSegmentPropertyName ) ) { $ this -> updateResourceSegmentProperty ( $ liveNode , $ resourceSegmentPropertyName , $ parentUuid , $ webspaceKey , $ locale ) ; // if the method is called with the generateRoutes flag it will create a new route // this happens on a move, but not on copy, because copy results in a draft page without url if ( $ generateRoutes ) { $ localizedDocument -> setResourceSegment ( $ liveNode -> getPropertyValue ( $ resourceSegmentPropertyName ) ) ; $ resourceLocatorStrategy -> save ( $ localizedDocument , null ) ; $ localizedDocument -> setResourceSegment ( $ defaultNode -> getPropertyValue ( $ resourceSegmentPropertyName ) ) ; } } } }
Updates the route for the given document after a move or copy.

@param object $document
@param bool $generateRoutes If set to true a route in the routing tree will also be created
Updates the route for the given document after a move or copy .