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;
}