src/Package/Admin/Tools/AdminUtil/AdminUtil.php line 163

Open in your IDE?
  1. <?php
  2. namespace App\Package\Admin\Tools\AdminUtil;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\HttpFoundation\{ RequestRequestStack };
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use App\Package\Toolkit\ConfigurationBag\ConfigurationBag;
  7. use App\Package\Admin\Main\EntityInterface\{ AdminInterfaceAdminModuleInterfaceAdminActionInterface };
  8. use App\Package\Admin\Tools\AdminUtil\{ AdminUtilEntityClassTraitAdminUtilRepositoryTrait };
  9. /**
  10.  * AdminUtil
  11.  * 
  12.  * Utilities related to admin package
  13.  * - getters for repositories
  14.  * - getters for class names
  15.  * - fetchers of module/action from database by field "name"
  16.  * - fetchers of current module/action from database using moduleSlug/actionSlug from url
  17.  * 
  18.  * @author     Daniel Balowski <d.balowski@openform.pl> (_creator)
  19.  * @copyright  Openform
  20.  * @since      03.2019
  21.  */
  22. class AdminUtil
  23. {
  24.     use AdminUtilEntityClassTrait,
  25.         AdminUtilRepositoryTrait;        
  26.     /**
  27.      * @var EntityManagerInterface
  28.      */
  29.     protected $em;
  30.     /**
  31.      * @var Request
  32.      */
  33.     protected $request;
  34.     /**
  35.      * @var AdminInterface
  36.      */
  37.     protected $admin;
  38.     /**
  39.      * @var ConfigurationBag
  40.      */
  41.     protected $configBag;
  42.     /**
  43.      * @param EntityManagerInterface  $em
  44.      * @param RequestStack            $requestStack
  45.      * @param TokenStorageInterface   $tokenStorage
  46.      * @param ConfigurationBag        $configBag
  47.      */
  48.     public function __construct(
  49.         EntityManagerInterface $em
  50.         RequestStack           $requestStack
  51.         TokenStorageInterface  $tokenStorage
  52.         ConfigurationBag       $configBag
  53.     ) {
  54.         $this->em    $em;
  55.         $this->admin 
  56.             $tokenStorage->getToken() ?
  57.             $tokenStorage->getToken()->getUser() :
  58.             null;
  59.         $this->request   $requestStack->getMainRequest();
  60.         $this->configBag $configBag;
  61.     }
  62.     /**
  63.      * Clears entity manager
  64.      * 
  65.      * @return AdminUtil
  66.      */
  67.     public function clearEm() : AdminUtil
  68.     {
  69.         $this->em->clear();
  70.         return $this;
  71.     }
  72.     /**
  73.      * Fetches from database admin module by name
  74.      * 
  75.      * @param string  $name
  76.      * 
  77.      * @return AdminModuleInterface|null
  78.      */
  79.     public function fetchAdminModule(string $name) : ? AdminModuleInterface
  80.     {
  81.         return
  82.             $this->getAdminModuleRepository()
  83.                  ->findOneByName($name);
  84.     }
  85.     /**
  86.      * Fetches from database current admin module
  87.      * 
  88.      * @return AdminModuleInterface|null
  89.      */
  90.     public function fetchCurrentAdminModule() : ? AdminModuleInterface
  91.     {
  92.         if (! $this->request) {
  93.             return null;
  94.         }
  95.         $moduleRepository $this->getAdminModuleRepository();
  96.         return
  97.             $this->request->get('moduleSlug') ?
  98.             $moduleRepository->getVisibleBySlug(
  99.                 $this->request->get('moduleSlug'),
  100.                 $this->request->getLocale()
  101.             ) :
  102.             (
  103.                 strpos($this->request->get('_route'), 'admin_adminModule_home') !== false ?
  104.                 $moduleRepository->findOneByName(
  105.                     $this->configBag->get('admin:general:module_home')
  106.                 ) :
  107.                 null
  108.             );
  109.     }
  110.     /**
  111.      * Fetches admin action by name
  112.      * 
  113.      * @param string  $name
  114.      * 
  115.      * @return AdminActionInterface|null
  116.      */
  117.     public function fetchAdminAction(string $name) : ? AdminActionInterface
  118.     {
  119.         return 
  120.             $this->getAdminActionRepository()
  121.                  ->findOneByName($name);
  122.     }
  123.     /**
  124.      * Fetches current admin action
  125.      *
  126.      * @return AdminActionInterface|null
  127.      */
  128.     public function fetchCurrentAdminAction() : ? AdminActionInterface
  129.     {
  130.         if (! $this->request) {
  131.             return null;
  132.         }
  133.         $actionRepository $this->getAdminActionRepository();
  134.         return
  135.             $this->request->get('actionSlug') ?
  136.             $actionRepository->getVisibleBySlug(
  137.                 $this->request->get('actionSlug'),
  138.                 $this->request->getLocale()
  139.             ) :
  140.             (
  141.                 (
  142.                     strpos($this->request->get('_route'), 'admin_adminModule_action') !== false ||
  143.                     strpos($this->request->get('_route'), 'admin_adminModule_home') !== false 
  144.                 ) ?
  145.                 $actionRepository->findOneByName(
  146.                     $this->configBag->get('admin:general:action_index')
  147.                 ) :
  148.                 null
  149.             );
  150.     }
  151. }