コード例 #1
0
ファイル: CustomUrlSubscriber.php プロジェクト: sulu/sulu
 /**
  * Returns all route-document which referees given document.
  *
  * @param $document
  * @param $webspaceKey
  *
  * @return array
  */
 protected function findReferrer($document, $webspaceKey)
 {
     $routes = [];
     $referrers = $this->inspector->getReferrers($document);
     foreach ($referrers as $routeDocument) {
         if ($routeDocument instanceof RouteDocument) {
             $path = PathHelper::relativizePath($routeDocument->getPath(), $this->getRoutesPath($webspaceKey));
             $routes[$path] = $routeDocument;
             $tmp = $this->findReferrer($routeDocument, $webspaceKey);
             $routes = array_merge($routes, $tmp);
         }
     }
     return $routes;
 }
コード例 #2
0
ファイル: RouteSubscriber.php プロジェクト: sulu/sulu
 /**
  * Changes the old route to a history route and redirect to the new route.
  *
  * @param RouteBehavior $oldDocument
  * @param RouteBehavior $newDocument
  */
 private function changeOldPathToHistoryRoutes(RouteBehavior $oldDocument, RouteBehavior $newDocument)
 {
     $oldDocument->setTargetDocument($newDocument);
     $oldDocument->setHistory(true);
     $oldRouteNode = $this->documentInspector->getNode($oldDocument);
     $oldRouteNode->setProperty(self::NODE_HISTORY_FIELD, true);
     foreach ($this->documentInspector->getReferrers($oldDocument) as $referrer) {
         if ($referrer instanceof RouteBehavior) {
             $referrer->setTargetDocument($newDocument);
             $referrer->setHistory(true);
             $this->documentManager->persist($referrer, null, ['path' => $this->documentInspector->getPath($referrer)]);
             $this->documentManager->publish($referrer, null);
         }
     }
 }