vendor/easycorp/easyadmin-bundle/src/Context/AdminContext.php line 30

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Context;
  3. use EasyCorp\Bundle\EasyAdminBundle\Config\Option\EA;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  5. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Controller\DashboardControllerInterface;
  6. use EasyCorp\Bundle\EasyAdminBundle\Contracts\Factory\MenuFactoryInterface;
  7. use EasyCorp\Bundle\EasyAdminBundle\Dto\AssetsDto;
  8. use EasyCorp\Bundle\EasyAdminBundle\Dto\CrudDto;
  9. use EasyCorp\Bundle\EasyAdminBundle\Dto\DashboardDto;
  10. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  11. use EasyCorp\Bundle\EasyAdminBundle\Dto\I18nDto;
  12. use EasyCorp\Bundle\EasyAdminBundle\Dto\LocaleDto;
  13. use EasyCorp\Bundle\EasyAdminBundle\Dto\MainMenuDto;
  14. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  15. use EasyCorp\Bundle\EasyAdminBundle\Dto\UserMenuDto;
  16. use EasyCorp\Bundle\EasyAdminBundle\Registry\CrudControllerRegistry;
  17. use EasyCorp\Bundle\EasyAdminBundle\Registry\TemplateRegistry;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\Security\Core\User\UserInterface;
  20. /**
  21.  * A context object that stores all the state and config of the current admin request.
  22.  *
  23.  * IMPORTANT: any new methods added here MUST be duplicated in the AdminContextProvider class.
  24.  *
  25.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  26.  */
  27. final class AdminContext
  28. {
  29.     private Request $request;
  30.     private ?UserInterface $user;
  31.     private I18nDto $i18nDto;
  32.     private CrudControllerRegistry $crudControllers;
  33.     private ?EntityDto $entityDto;
  34.     private DashboardDto $dashboardDto;
  35.     private DashboardControllerInterface $dashboardControllerInstance;
  36.     private AssetsDto $assetDto;
  37.     private ?CrudDto $crudDto;
  38.     private ?SearchDto $searchDto;
  39.     private MenuFactoryInterface $menuFactory;
  40.     private TemplateRegistry $templateRegistry;
  41.     private ?MainMenuDto $mainMenuDto = null;
  42.     private ?UserMenuDto $userMenuDto = null;
  43.     public function __construct(Request $request, ?UserInterface $user, I18nDto $i18nDto, CrudControllerRegistry $crudControllers, DashboardDto $dashboardDto, DashboardControllerInterface $dashboardController, AssetsDto $assetDto, ?CrudDto $crudDto, ?EntityDto $entityDto, ?SearchDto $searchDto, MenuFactoryInterface $menuFactory, TemplateRegistry $templateRegistry)
  44.     {
  45.         $this->request = $request;
  46.         $this->user = $user;
  47.         $this->i18nDto = $i18nDto;
  48.         $this->crudControllers = $crudControllers;
  49.         $this->dashboardDto = $dashboardDto;
  50.         $this->dashboardControllerInstance = $dashboardController;
  51.         $this->crudDto = $crudDto;
  52.         $this->assetDto = $assetDto;
  53.         $this->entityDto = $entityDto;
  54.         $this->searchDto = $searchDto;
  55.         $this->menuFactory = $menuFactory;
  56.         $this->templateRegistry = $templateRegistry;
  57.     }
  58.     public function getRequest(): Request
  59.     {
  60.         return $this->request;
  61.     }
  62.     public function getReferrer(): ?string
  63.     {
  64.         $referrer = $this->request->query->get(EA::REFERRER);
  65.         return '' !== $referrer ? $referrer : null;
  66.     }
  67.     public function getI18n(): I18nDto
  68.     {
  69.         return $this->i18nDto;
  70.     }
  71.     public function getCrudControllers(): CrudControllerRegistry
  72.     {
  73.         return $this->crudControllers;
  74.     }
  75.     public function getEntity(): EntityDto
  76.     {
  77.         return $this->entityDto;
  78.     }
  79.     public function getUser(): ?UserInterface
  80.     {
  81.         return $this->user;
  82.     }
  83.     public function getAssets(): AssetsDto
  84.     {
  85.         return $this->assetDto;
  86.     }
  87.     public function getSignedUrls(): bool
  88.     {
  89.         return $this->dashboardDto->getSignedUrls();
  90.     }
  91.     public function getAbsoluteUrls(): bool
  92.     {
  93.         return $this->dashboardDto->getAbsoluteUrls();
  94.     }
  95.     public function getDashboardTitle(): string
  96.     {
  97.         return $this->dashboardDto->getTitle();
  98.     }
  99.     public function getDashboardFaviconPath(): string
  100.     {
  101.         return $this->dashboardDto->getFaviconPath();
  102.     }
  103.     public function getDashboardControllerFqcn(): string
  104.     {
  105.         return \get_class($this->dashboardControllerInstance);
  106.     }
  107.     public function getDashboardRouteName(): string
  108.     {
  109.         return $this->dashboardDto->getRouteName();
  110.     }
  111.     public function getDashboardContentWidth(): string
  112.     {
  113.         return $this->dashboardDto->getContentWidth();
  114.     }
  115.     public function getDashboardSidebarWidth(): string
  116.     {
  117.         return $this->dashboardDto->getSidebarWidth();
  118.     }
  119.     public function getDashboardHasDarkModeEnabled(): bool
  120.     {
  121.         return $this->dashboardDto->isDarkModeEnabled();
  122.     }
  123.     public function getDashboardDefaultColorScheme(): string
  124.     {
  125.         return $this->dashboardDto->getDefaultColorScheme();
  126.     }
  127.     /**
  128.      * @return LocaleDto[]
  129.      */
  130.     public function getDashboardLocales(): array
  131.     {
  132.         return $this->dashboardDto->getLocales();
  133.     }
  134.     public function getMainMenu(): MainMenuDto
  135.     {
  136.         if (null !== $this->mainMenuDto) {
  137.             return $this->mainMenuDto;
  138.         }
  139.         $configuredMenuItems = $this->dashboardControllerInstance->configureMenuItems();
  140.         $mainMenuItems = \is_array($configuredMenuItems) ? $configuredMenuItems : iterator_to_array($configuredMenuItems, false);
  141.         return $this->mainMenuDto = $this->menuFactory->createMainMenu($mainMenuItems);
  142.     }
  143.     public function getUserMenu(): UserMenuDto
  144.     {
  145.         if (null !== $this->userMenuDto) {
  146.             return $this->userMenuDto;
  147.         }
  148.         if (null === $this->user) {
  149.             return UserMenu::new()->getAsDto();
  150.         }
  151.         $userMenu = $this->dashboardControllerInstance->configureUserMenu($this->user);
  152.         return $this->userMenuDto = $this->menuFactory->createUserMenu($userMenu);
  153.     }
  154.     public function getCrud(): ?CrudDto
  155.     {
  156.         return $this->crudDto;
  157.     }
  158.     public function getSearch(): ?SearchDto
  159.     {
  160.         return $this->searchDto;
  161.     }
  162.     public function getTemplatePath(string $templateName): string
  163.     {
  164.         return $this->templateRegistry->get($templateName);
  165.     }
  166. }