100 lines
3.2 KiB
PHP
100 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace KupShop\ContentBundle\Controller;
|
|
|
|
use KupShop\ContentBundle\View\ArticlesView;
|
|
use KupShop\ContentBundle\View\ArticleView;
|
|
use KupShop\KupShopBundle\Routing\TranslatedRoute;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
class ArticlesController extends AbstractController
|
|
{
|
|
/**
|
|
* @TranslatedRoute("/#articles#/{IDb}/{param}/{IDa}/", requirements={"IDb":"\d+", "IDa":"\d+", "param":"(prev|next)"})
|
|
* @TranslatedRoute("/#articles#/{IDb}/{slug}/{param}/{IDa}/", requirements={"IDb":"\d+", "IDa":"\d+", "slug":".*", "param":"(prev|next)"})
|
|
*/
|
|
public function articlePrevNext(Request $request, ArticlesView $view, $IDa, $IDb, $param)
|
|
{
|
|
$view->setIDb($IDb);
|
|
$view->setRequest($request);
|
|
$ArticleID = $view->getPrevNext($IDa, $param);
|
|
|
|
return new RedirectResponse(
|
|
path('kupshop_content_articles_article', ['IDa' => $ArticleID])
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @TranslatedRoute("/#articles#/")
|
|
* @TranslatedRoute("/#articles#/{IDb}/", requirements={"IDb":"\d+"})
|
|
* @TranslatedRoute("/#articles#/{IDb}/{slug}/", requirements={"IDb":"\d+", "slug":".*"})
|
|
*/
|
|
public function articlesAction(Request $request, ArticlesView $view, $IDb = null): ArticlesView
|
|
{
|
|
if ($IDb) {
|
|
$view->setIDb($IDb);
|
|
}
|
|
|
|
$this->setArticlesFilters($request, $view);
|
|
|
|
$view->setRequest($request);
|
|
|
|
return $view;
|
|
}
|
|
|
|
/**
|
|
* @TranslatedRoute("/#articles#/#tag#/{tagId}/", requirements={"tagId":"\d+"})
|
|
* @TranslatedRoute("/#articles#/#tag#/{tagId}/{slug}/", requirements={"tagId":"\d+", "slug":".*"})
|
|
*/
|
|
public function articlesTagsAction(Request $request, ArticlesView $view, int $tagId): ArticlesView
|
|
{
|
|
$this->setArticlesFilters($request, $view);
|
|
|
|
$view->setTagId($tagId);
|
|
$view->setRequest($request);
|
|
|
|
return $view;
|
|
}
|
|
|
|
/**
|
|
* @TranslatedRoute("/#articles#/#author#/{authorId}/", requirements={"authorId":"\d+"}, module="articles_authors")
|
|
* @TranslatedRoute("/#articles#/#author#/{authorId}/{slug}/", requirements={"authorId":"\d+", "slug":".*"}, module="articles_authors")
|
|
*/
|
|
public function articlesAuthorAction(Request $request, ArticlesView $view, int $authorId): ArticlesView
|
|
{
|
|
$this->setArticlesFilters($request, $view);
|
|
|
|
$view->setAuthorId($authorId);
|
|
$view->setRequest($request);
|
|
|
|
return $view;
|
|
}
|
|
|
|
/**
|
|
* @TranslatedRoute("/#article#/{IDa}/", requirements={"IDa":"\d+"})
|
|
* @TranslatedRoute("/#article#/{IDa}/{slug}/", requirements={"IDa":"\d+", "slug":".*"})
|
|
*/
|
|
public function articleAction(Request $request, ArticleView $view, $IDa)
|
|
{
|
|
$view->setIDa($IDa);
|
|
$view->setRequest($request);
|
|
|
|
return $view;
|
|
}
|
|
|
|
private function setArticlesFilters(Request $request, ArticlesView $view): void
|
|
{
|
|
// razeni produktu
|
|
$view->setSort(
|
|
$request->get('order')
|
|
);
|
|
|
|
// dynamicke filtry
|
|
$view->setDynamicFilter(
|
|
$request->get('dynamic_filter', [])
|
|
);
|
|
}
|
|
}
|