Networking\InitCmsBundle\Entity\ContentRouteManager::getRouteCollectionForRequest PHP Метод

getRouteCollectionForRequest() публичный Метод

{@inheritDoc}
public getRouteCollectionForRequest ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function getRouteCollectionForRequest(Request $request)
    {
        $url = $request->getPathInfo();
        $collection = new RouteCollection();
        /** @var $connection \Doctrine\DBAL\Connection */
        $connection = $this->objectManager->getConnection();
        try {
            $connection->connect();
        } catch (\Exception $e) {
            return $collection;
        }
        if (!$connection->isConnected()) {
            return $collection;
        }
        $searchUrl = substr($url, -1) != '/' ? $url . '/' : $url;
        $params = array('path' => $searchUrl);
        try {
            $contentRoutes = $this->repository->findBy($params);
        } catch (\Doctrine\DBAL\DBALException $e) {
            return $collection;
        }
        if (empty($contentRoutes)) {
            return $collection;
        }
        $filterByLocale = function (ContentRouteInterface $var) use($request) {
            if ($request) {
                return $var->getLocale() == $request->getLocale();
            } else {
                return true;
            }
        };
        $tempContentRoutes = array_filter($contentRoutes, $filterByLocale);
        if (empty($tempContentRoutes)) {
            $tempContentRoutes = $contentRoutes;
        }
        foreach ($tempContentRoutes as $key => $contentRoute) {
            $viewStatus = $request ? $request->getSession()->get('_viewStatus', VersionableInterface::STATUS_PUBLISHED) : VersionableInterface::STATUS_PUBLISHED;
            $test = new \ReflectionClass($contentRoute->getClassType());
            if ($viewStatus == VersionableInterface::STATUS_DRAFT && $test->implementsInterface(ResourceVersionInterface::class)) {
                continue;
            } elseif ($viewStatus == VersionableInterface::STATUS_PUBLISHED && $test->implementsInterface(VersionableInterface::class)) {
                continue;
            }
            /** @var \Networking\InitCmsBundle\Model\ContentRouteInterface $contentRoute */
            $content = $this->getRouteContent($contentRoute);
            $collection->add(sprintf('%s/%s', $contentRoute->getLocale(), $searchUrl), static::generateRoute($contentRoute, $url, $content));
        }
        return $collection;
    }