tinternet.net/src/Site/SiteRequest.php
2021-03-19 15:13:42 +01:00

70 lines
1.6 KiB
PHP

<?php
namespace App\Site;
use App\Entity\Site\Menu;
use App\Entity\Site\Navigation;
use App\Entity\Site\Node;
use App\Entity\Site\Page\Page;
use App\Repository\Site\NavigationRepositoryQuery;
use App\Repository\Site\NodeRepository;
use App\Repository\Site\Page\PageRepositoryQuery;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* class SiteRequest.
*
* @author Simon Vieille <simon@deblan.fr>
*/
class SiteRequest
{
protected RequestStack $requestStack;
protected NodeRepository $nodeRepository;
protected NavigationRepositoryQuery $navigationRepositoryQuery;
protected PageRepositoryQuery $pageRepositoryQuery;
public function __construct(RequestStack $requestStack, NodeRepository $nodeRepository)
{
$this->requestStack = $requestStack;
$this->nodeRepository = $nodeRepository;
}
public function getNode(): ?Node
{
$request = $this->requestStack->getCurrentRequest();
if ($request->attributes->has('_node')) {
return $this->nodeRepository->findOneBy([
'id' => $request->attributes->get('_node'),
]);
}
return null;
}
public function getPage(): ?Page
{
$node = $this->getNode();
if ($node && $node->getPage()) {
return $node->getPage();
}
return null;
}
public function getMenu(): ?Menu
{
$node = $this->getNode();
return null !== $node ? $node->getMenu() : null;
}
public function getNavigation(): ?Navigation
{
$menu = $this->getMenu();
return null !== $menu ? $menu->getNavigation() : null;
}
}