src/Service/AdminReferrer.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\Order;
  4. use App\Entity\Orderregel;
  5. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  6. use EasyCorp\Bundle\EasyAdminBundle\Factory\AdminContextFactory;
  7. use EasyCorp\Bundle\EasyAdminBundle\Provider\AdminContextProvider;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Session\Session;
  10. class AdminReferrer
  11. {
  12.     public AdminContext $adminContext;
  13.     public static function new(AdminContext $adminContext): self
  14.     {
  15.         return (new self())
  16.             ->setAdminContext($adminContext);;
  17.     }
  18.     public function setAdminContext(AdminContext $adminContext): self
  19.     {
  20.         $this->adminContext $adminContext;
  21.         return $this;
  22.     }
  23.     public function getAdminContext(): AdminContext
  24.     {
  25.         return $this->adminContext;
  26.     }
  27.     public function getSession(): Session
  28.     {
  29.         return $this->getAdminContext()->getRequest()->getSession();;
  30.     }
  31.     public function setReferrer(string $controllerFqcnstring $referrer ''): self
  32.     {
  33.         $session $this->getSession();
  34.         $referrerArray $session->get('referrer');
  35.         //als referrer niet is meegegeven, dan de huidige controller met actions, parameters, etc
  36.         if ($referrer == '') {
  37.             $referrer $this->getAdminContext()->getRequest()->getRequestUri();
  38.         }
  39.         $referrerArray[$controllerFqcn] = $referrer;
  40.         $session->set('referrer'$referrerArray); // overschrijf de session referrer
  41.         return $this;
  42.     }
  43.     public function getReferrer(string $controllerFqcn): string
  44.     {
  45.         $referrer 'admin';
  46.         $session $this->getSession();
  47.         if (is_array($session->get('referrer'))) {
  48.             if (array_key_exists($controllerFqcn$session->get('referrer'))) {
  49.                 if ($session->get('referrer')) {
  50.                     $referrer $session->get('referrer')[$controllerFqcn];
  51.                 }
  52.             };
  53.         };
  54.         return $referrer;
  55.     }
  56.     public function addParameters(string $controllerFqcn, array $urlParameters): self
  57.     {
  58.         $session $this->getSession();
  59.         $referrerArray $session->get('referrer');
  60.         if ($referrerArray !== null) {
  61.             $referrer $referrerArray[$controllerFqcn];
  62.             $request Request::create($referrer);
  63.             foreach ($urlParameters as $k => $v) {
  64.                 $request->query->add([$k => $v]);
  65.             }
  66.             $request->overrideGlobals();
  67.             $nwReferrer str_replace($request->getSchemeAndHttpHost(), ""$request->getUri());
  68.             $this->setReferrer($controllerFqcn$nwReferrer);
  69.         }
  70.         return $this;
  71.     }
  72.     public function removeParameters(string $controllerFqcn, array $urlParameters): self
  73.     {
  74.         $referrer $this->getReferrer($controllerFqcn);
  75.         $request Request::create($referrer);
  76.         foreach ($urlParameters as $urlParameter) {
  77.             $request->query->remove($urlParameter);
  78.         }
  79.         $request->overrideGlobals();
  80.         $nwReferrer str_replace($request->getSchemeAndHttpHost(), ""$request->getUri());
  81.         $this->setReferrer($controllerFqcn$nwReferrer);
  82.         return $this;
  83.     }
  84.     // globale functies
  85.     public function getAllReferrers(): array
  86.     {
  87.         $allRefs = array();
  88.         $session $this->getSession();
  89.         if (is_array($session->get('referrer'))) {
  90.             $allRefs $session->get('referrer');
  91.         }
  92.         return $allRefs;
  93.     }
  94. }