src/Controller/LegacyController.php line 29

Open in your IDE?
  1. <?php
  2. namespace Klaravik\Controller;
  3. use Klaravik\Anthesis\CarbonDioxideEmissions;
  4. use Klaravik\Assets\ManifestAssets;
  5. use Klaravik\Category\Cache\ActiveCategoryCache;
  6. use Klaravik\Category\Cache\ClosedCategoryCache;
  7. use Klaravik\CompanyInfo\CompanyInfoClientInterface;
  8. use Klaravik\Databricks\PLVAskService;
  9. use Klaravik\Databricks\PLVFeedbackService;
  10. use Klaravik\Financing\Nordea\Calculate;
  11. use Klaravik\Financing\Nordea\Client;
  12. use Klaravik\Firebase\KamNotifier;
  13. use Klaravik\Firebase\StorefrontNotifier;
  14. use Klaravik\Hubspot\HubspotHandler;
  15. use Klaravik\Identity\IdentityFactory;
  16. use Klaravik\Page\MarketWpClient;
  17. use Klaravik\Page\PropUserData;
  18. use Klaravik\PDF\PDFHandler;
  19. use Klaravik\Product\Util\TimeLeftUtil;
  20. use Klaravik\Service\AssetsResolverService;
  21. use Klaravik\StructuredData\StructuredDataService;
  22. use Klaravik\Storage\FileStorageService;
  23. use Klaravik\Repository\ProductRepo;
  24. use Klaravik\Repository\UserRepo;
  25. use Klaravik\Security\ResetPasswordHandler;
  26. use Klaravik\Storefront\GraphQL\Repository\ProductCategoriesRepository;
  27. use Klaravik\Storefront\GraphQL\Repository\ProductSearchRepository;
  28. use Klaravik\Translate\Trans;
  29. use Psr\Log\LoggerInterface;
  30. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  31. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  32. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  33. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  34. use Symfony\Component\HttpFoundation\Request;
  35. use Symfony\Component\HttpFoundation\StreamedResponse;
  36. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  37. use Symfony\Contracts\Cache\CacheInterface;
  38. use Symfony\Contracts\HttpClient\HttpClientInterface;
  39. use Twig\Environment;
  40. class LegacyController extends AbstractController
  41. {
  42.     public function loadLegacyScript(
  43.         Request $request,
  44.         Trans $trans,
  45.         UrlGeneratorInterface $urlGenerator,
  46.         ManifestAssets $manifestAssets,
  47.         Environment $twig,
  48.         ActiveCategoryCache $activeCategoryCache,
  49.         ClosedCategoryCache $closedCategoryCache,
  50.         string $legacyScript,
  51.         array $requestParams = []
  52.     ): StreamedResponse {
  53.         $session $request->getSession()->start();
  54.         return new StreamedResponse(
  55.             function () use (
  56.                 $legacyScript,
  57.                 $requestParams,
  58.                 $request,
  59.                 $trans,
  60.                 $urlGenerator,
  61.                 $manifestAssets,
  62.                 $twig,
  63.                 $activeCategoryCache,
  64.                 $closedCategoryCache
  65.             ) {
  66.                 $_SERVER['SCRIPT_FILENAME'] = $legacyScript;
  67.                 // Needed for legacy inGroups function
  68.                 global $container;
  69.                 $container $this->container;
  70.                 foreach ($requestParams as $key => $value) {
  71.                     $_REQUEST[$key] = $value;
  72.                 }
  73.                 $routeParameters $request->attributes->get('_route_params');
  74.                 unset($routeParameters['requestPath'], $routeParameters['legacyScript'], $routeParameters['requestParams']);
  75.                 foreach ($routeParameters as $key => $value) {
  76.                     $_REQUEST[$key] = $value;
  77.                 }
  78.                 session_start();
  79.                 if ((null !== $user $this->getUser()) && in_array('ROLE_ADMIN'$user->getRoles(), true)) {
  80.                     $_SESSION['is_admin'] = true;
  81.                     // TODO: Remove when RemoteUser is removed
  82.                     $_SESSION['legacyRemoteUser'] = $user->getUserIdentifier();
  83.                 }
  84.                 chdir(dirname($legacyScript));
  85.                 require $legacyScript;
  86.             }
  87.         );
  88.     }
  89.     public static function getSubscribedServices(): array
  90.     {
  91.         return array_merge(parent::getSubscribedServices(), [
  92.             CompanyInfoClientInterface::class,
  93.             Trans::class,
  94.             UrlGeneratorInterface::class,
  95.             IdentityFactory::class,
  96.             ParameterBagInterface::class,
  97.             HttpClientInterface::class,
  98.             KamNotifier::class,
  99.             CarbonDioxideEmissions::class,
  100.             TimeLeftUtil::class,
  101.             StorefrontNotifier::class,
  102.             Calculate::class,
  103.             ProductSearchRepository::class,
  104.             ProductCategoriesRepository::class,
  105.             EventDispatcherInterface::class,
  106.             MarketWpClient::class,
  107.             PropUserData::class,
  108.             HubspotHandler::class,
  109.             PDFHandler::class,
  110.             TimeLeftUtil::class,
  111.             FileStorageService::class,
  112.             ResetPasswordHandler::class,
  113.             'cache.vehicles' => CacheInterface::class,
  114.             'cache.tokens' => CacheInterface::class,
  115.             'monolog.logger.zendesk_ticket' => LoggerInterface::class,
  116.             ProductRepo::class,
  117.             PLVAskService::class,
  118.             PLVFeedbackService::class,
  119.             UserRepo::class,
  120.             AssetsResolverService::class,
  121.             StructuredDataService::class,
  122.             Client::class,
  123.             ContainerBagInterface::class,
  124.         ]);
  125.     }
  126. }