Document/Subscriber/RoutableSubscriber.php
private function reallocateExistingRoute(RoutablePageBehavior $document, $locale)
    {
        $newRoute = $this->routeRepository->findByPath($document->getRoutePath(), $locale);
        if (!$newRoute) {
            return;
        }

        $oldRoute = $this->routeRepository->findByEntity(get_class($document), $document->getUuid(), $locale);
        $history = $this->routeRepository->findHistoryByEntity(get_class($document), $document->getUuid(), $locale);

        /** @var RouteInterface $historyRoute */
        foreach (array_filter(array_merge($history, [$oldRoute])) as $historyRoute) {
            if ($historyRoute->getId() === $newRoute->getId() || $document->getId() !== $historyRoute->getEntityId()) {
                // Mismatch of entity-id's happens because doctrine don't check entities which has been changed in the
                // current session. If the old-route was already reused by a page before it will be returned in the
                // query of line 329.

                continue;
            }

            $historyRoute->setTarget($newRoute);
            $historyRoute->setHistory(true);
            $newRoute->addHistory($historyRoute);
        }

        $newRoute->setEntityClass(get_class($document));
        $newRoute->setEntityId($document->getId());
        $newRoute->setTarget(null);
        $newRoute->setHistory(false);

        return $newRoute;
    }
private function reallocateExistingRoute(RoutablePageBehavior $document, $locale)
    {
        $newRoute = $this->routeRepository->findByPath($document->getRoutePath(), $locale);
        if (!$newRoute) {
            return;
        }

        $oldRoute = $this->routeRepository->findByEntity(get_class($document), $document->getUuid(), $locale);
        $history = $this->routeRepository->findHistoryByEntity(get_class($document), $document->getUuid(), $locale);

        /** @var RouteInterface $historyRoute */
        foreach (array_filter(array_merge($history, [$oldRoute])) as $historyRoute) {
            if ($historyRoute->getId() === $newRoute->getId() || $document->getId() !== $historyRoute->getEntityId()) {
                // Mismatch of entity-id's happens because doctrine don't check entities which has been changed in the
                // current session. If the old-route was already reused by a page before it will be returned in the
                // query of line 329.

                continue;
            }

            $historyRoute->setTarget($newRoute);
            $historyRoute->setHistory(true);
            $newRoute->addHistory($historyRoute);
        }

        $newRoute->setEntityClass(get_class($document));
        $newRoute->setEntityId($document->getId());
        $newRoute->setTarget(null);
        $newRoute->setHistory(false);

        return $newRoute;
    }
private function reallocateExistingRoute ( RoutablePageBehavior $ document , $ locale ) { $ newRoute = $ this -> routeRepository -> findByPath ( $ document -> getRoutePath ( ) , $ locale ) ; if ( ! $ newRoute ) { return ; } $ oldRoute = $ this -> routeRepository -> findByEntity ( get_class ( $ document ) , $ document -> getUuid ( ) , $ locale ) ; $ history = $ this -> routeRepository -> findHistoryByEntity ( get_class ( $ document ) , $ document -> getUuid ( ) , $ locale ) ; /** @var RouteInterface $historyRoute */ foreach ( array_filter ( array_merge ( $ history , [ $ oldRoute ] ) ) as $ historyRoute ) { if ( $ historyRoute -> getId ( ) === $ newRoute -> getId ( ) || $ document -> getId ( ) !== $ historyRoute -> getEntityId ( ) ) { // Mismatch of entity-id's happens because doctrine don't check entities which has been changed in the // current session. If the old-route was already reused by a page before it will be returned in the // query of line 329. continue ; } $ historyRoute -> setTarget ( $ newRoute ) ; $ historyRoute -> setHistory ( true ) ; $ newRoute -> addHistory ( $ historyRoute ) ; } $ newRoute -> setEntityClass ( get_class ( $ document ) ) ; $ newRoute -> setEntityId ( $ document -> getId ( ) ) ; $ newRoute -> setTarget ( null ) ; $ newRoute -> setHistory ( false ) ; return $ newRoute ; }
Reallocates existing route to given document.

@param RoutablePageBehavior $document
@param string $locale

@return RouteInterface
Reallocates existing route to given document .