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\CompanyInfo\CompanyInfoClientInterface;
  6. use Klaravik\Financing\Nordea\Calculate;
  7. use Klaravik\Firebase\KamNotifier;
  8. use Klaravik\Firebase\StorefrontNotifier;
  9. use Klaravik\Hubspot\HubspotHandler;
  10. use Klaravik\Identity\IdentityFactory;
  11. use Klaravik\Page\MarketWpClient;
  12. use Klaravik\Page\PropUserData;
  13. use Klaravik\PDF\PDFHandler;
  14. use Klaravik\Product\Util\TimeLeftUtil;
  15. use Klaravik\Storefront\GraphQL\Repository\ProductCategoriesRepository;
  16. use Klaravik\Storefront\GraphQL\Repository\ProductSearchRepository;
  17. use Klaravik\Translate\Trans;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  20. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\StreamedResponse;
  23. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  24. use Symfony\Contracts\HttpClient\HttpClientInterface;
  25. use Twig\Environment;
  26. class LegacyController extends AbstractController
  27. {
  28.     public function loadLegacyScript(
  29.         Request $request,
  30.         Trans $trans,
  31.         UrlGeneratorInterface $urlGenerator,
  32.         ManifestAssets $manifestAssets,
  33.         Environment $twig,
  34.         string $legacyScript,
  35.         array $requestParams = []
  36.     ): StreamedResponse {
  37.         $session $request->getSession()->start();
  38.         return new StreamedResponse(
  39.             function () use ($legacyScript$requestParams$request$trans$urlGenerator$manifestAssets$twig) {
  40.                 $_SERVER['SCRIPT_FILENAME'] = $legacyScript;
  41.                 // Needed for legacy inGroups function
  42.                 global $container;
  43.                 $container $this->container;
  44.                 foreach ($requestParams as $key => $value) {
  45.                     $_REQUEST[$key] = $value;
  46.                 }
  47.                 $routeParameters $request->attributes->get('_route_params');
  48.                 unset($routeParameters['requestPath'], $routeParameters['legacyScript'], $routeParameters['requestParams']);
  49.                 foreach ($routeParameters as $key => $value) {
  50.                     $_REQUEST[$key] = $value;
  51.                 }
  52.                 session_start();
  53.                 if ((null !== $user $this->getUser()) && in_array('ROLE_ADMIN'$user->getRoles(), true)) {
  54.                     $_SESSION['is_admin'] = true;
  55.                     // TODO: Remove when RemoteUser is removed
  56.                     $_SESSION['legacyRemoteUser'] = $user->getUserIdentifier();
  57.                 }
  58.                 chdir(dirname($legacyScript));
  59.                 require $legacyScript;
  60.             }
  61.         );
  62.     }
  63.     public static function getSubscribedServices(): array
  64.     {
  65.         return array_merge(parent::getSubscribedServices(), [
  66.             CompanyInfoClientInterface::class,
  67.             Trans::class,
  68.             UrlGeneratorInterface::class,
  69.             IdentityFactory::class,
  70.             ParameterBagInterface::class,
  71.             HttpClientInterface::class,
  72.             KamNotifier::class,
  73.             CarbonDioxideEmissions::class,
  74.             TimeLeftUtil::class,
  75.             StorefrontNotifier::class,
  76.             Calculate::class,
  77.             ProductSearchRepository::class,
  78.             ProductCategoriesRepository::class,
  79.             EventDispatcherInterface::class,
  80.             MarketWpClient::class,
  81.             PropUserData::class,
  82.             HubspotHandler::class,
  83.             PDFHandler::class,
  84.             TimeLeftUtil::class,
  85.         ]);
  86.     }
  87. }