src/Controller/LegacyController.php line 83

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Application\Service\Helper\LinkGenerator;
  4. use App\Application\Service\Session\SessionService;
  5. use App\Service\LegacyControllerService;
  6. use Psr\Log\LoggerInterface;
  7. use Request as LegacyRequest;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class LegacyController extends AbstractController
  14. {
  15.     public const TAXONOMY_CONTROLLER 'taxonomyController';
  16.     public const MANUFACTURER_CONTROLLER 'manufacturerController';
  17.     public const PRODUCT_CONTROLLER 'productController';
  18.     public const TAG_CONTROLLER 'tagController';
  19.     private LoggerInterface $logger;
  20.     private SessionService $sessionService;
  21.     private LegacyControllerService $legacyControllerService;
  22.     private LinkGenerator $linkGenerator;
  23.     public function __construct(
  24.         LoggerInterface $logger,
  25.         SessionService $sessionService,
  26.         LegacyControllerService $legacyControllerService,
  27.         LinkGenerator $linkGenerator
  28.     ) {
  29.         $this->logger $logger;
  30.         $this->sessionService $sessionService;
  31.         $this->legacyControllerService $legacyControllerService;
  32.         $this->linkGenerator $linkGenerator;
  33.     }
  34.     /**
  35.      * @Route("/admin{anything}", name="legacy_admin_endpoints", priority="-3", requirements={"anything"=".*"})
  36.      */
  37.     public function legacyNotFrontEndpoints(Request $request): Response
  38.     {
  39.         $this->sessionService->set('cms_new'false);
  40.         /** @var array $controllerData */
  41.         $controllerData $request->request->get('legacy_controller');
  42.         if (LegacyRequest::NOT_FOUND_CONTROLLER === $controllerData['controller']) {
  43.             throw $this->createNotFoundException();
  44.         }
  45.         if (LegacyRequest::MAINTENANCE_CONTROLLER === $controllerData['controller']) {
  46.             throw new ServiceUnavailableHttpException();
  47.         }
  48.         $legacyController = new $controllerData['controller']();
  49.         if (!method_exists($legacyController$controllerData['method'])) {
  50.             throw $this->createNotFoundException();
  51.         }
  52.         call_user_func_array([$legacyController$controllerData['method']], $controllerData['args']);
  53.         if (empty($legacyController->getView())) {
  54.             $this->sessionService->deleteFlashData();
  55.             return new Response('');
  56.             // throw $this->createNotFoundException();
  57.         }
  58.         $html $legacyController->display();
  59.         $this->sessionService->deleteFlashData();
  60.         return new Response($html);
  61.     }
  62.     /**
  63.      * @Route("/{anything}", name="legacy_front_endpoints", priority=-5, requirements={"anything"="^((?!rest/).)*$"})
  64.      */
  65.     public function legacyFrontEndpoints(Request $requeststring $anything): Response
  66.     {
  67.         /** @var array $controllerData */
  68.         $controllerData $request->request->get('legacy_controller');
  69.         if (LegacyRequest::NOT_FOUND_CONTROLLER === $controllerData['controller']) {
  70.             throw $this->createNotFoundException();
  71.         }
  72.         if ($newRoute $this->redirectToNewRoutes(
  73.             $controllerData['controller'],
  74.             reset($controllerData['args'])
  75.         )) {
  76.             return $this->redirect($newRouteResponse::HTTP_MOVED_PERMANENTLY);
  77.         }
  78.         $legacyController null;
  79.         $parameter $this->sessionService->get('id_model') ?? reset($controllerData['args']) ?? null;
  80.         try {
  81.             if ($parameter) {
  82.                 $legacyController = new $controllerData['controller']($parameter);
  83.             } else {
  84.                 $legacyController = new $controllerData['controller']();
  85.             }
  86.         } catch (\Throwable $t) {
  87.             $this->logger->critical('Error loading legacy controller: '.$anything.' '.$t->getMessage());
  88.         }
  89.         if (!method_exists($legacyController$controllerData['method'])) {
  90.             throw $this->createNotFoundException();
  91.         }
  92.         call_user_func_array([$legacyController$controllerData['method']], $controllerData['args']);
  93.         return new Response($this->legacyControllerService->getHtmlFromLegacyController($legacyController));
  94.     }
  95.     /**
  96.      * @param int|string $parameter
  97.      */
  98.     protected function redirectToNewRoutes(string $controller$parameter): ?string
  99.     {
  100.         switch ($controller) {
  101.             case self::TAXONOMY_CONTROLLER:
  102.                 return $this->linkGenerator->getTaxonomyLink($parameter);
  103.             case self::MANUFACTURER_CONTROLLER:
  104.                 return $this->linkGenerator->getManufacturerLink($parameter);
  105.             case self::PRODUCT_CONTROLLER:
  106.                 return $this->linkGenerator->getProductLink($parameter);
  107.             case self::TAG_CONTROLLER:
  108.                 return $this->generateUrl('shop_tag', ['url' => $parameter'lang' => $this->sessionService->getLocale()]);
  109.         }
  110.         return null;
  111.     }
  112. }