src/Controller/RedirectController.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\RedirectService;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. class RedirectController extends AbstractController
  7. {
  8.     private $langs;
  9.     private $requestStack;
  10.     private $redirectService;
  11.     public function __construct(
  12.         string $langs,
  13.         RequestStack $requestStack,
  14.         RedirectService $redirectService
  15.     ) {
  16.         $this->langs $langs;
  17.         $this->requestStack $requestStack;
  18.         $this->redirectService $redirectService;
  19.     }
  20.     public function checkRedirect($url)
  21.     {
  22.         $urlParts explode("/"$url);
  23.         $url "/" $url;
  24.         $queryParams $this->requestStack->getCurrentRequest()->query->all();
  25.         $redirectStory $this->redirectService->loadRedirects();
  26.         if ($redirectStory != null) {
  27.             $redirects $redirectStory['content']['redirects'];
  28.             $redirects_reversed array_reverse($redirects);
  29.             foreach ($redirects_reversed as $redirect) {
  30.                 if (rtrim($redirect['from'], '/') === rtrim($url'/') && rtrim($redirect['to'], '/') !== rtrim($url'/')) {
  31.                     $redirectTo $redirect['to'];
  32.                     if (sizeof($queryParams) > 0) {
  33.                         $redirectTo .= "?" http_build_query($queryParams);
  34.                     }
  35.                     return $this->redirect($redirectTo);
  36.                 }
  37.             }
  38.         }
  39.         $locale in_array($urlParts[0], explode("|"$this->langs)) ? $urlParts[0] : "";
  40.         $attributes $this->requestStack->getCurrentRequest()->attributes->all();
  41.         $cfCountry array_key_exists('HTTP_CLOUDFRONT_VIEWER_COUNTRY'$attributes) ? $attributes['HTTP_CLOUDFRONT_VIEWER_COUNTRY'] : '';
  42.         $cfLatitude array_key_exists('HTTP_CLOUDFRONT_VIEWER_LATITUDE'$attributes) ? $attributes['HTTP_CLOUDFRONT_VIEWER_LATITUDE'] : '';
  43.         $cfLongitude array_key_exists('HTTP_CLOUDFRONT_VIEWER_LONGITUDE'$attributes) ? $attributes['HTTP_CLOUDFRONT_VIEWER_LONGITUDE'] : '';
  44.         if ($locale != "") {
  45.             array_shift($urlParts);
  46.             return $this->forward("App\\Controller\\WebController::langSlug", [
  47.                 "_locale" => $locale,
  48.                 "slug" => implode("/"$urlParts),
  49.                 'HTTP_CLOUDFRONT_VIEWER_COUNTRY' => $cfCountry,
  50.                 'HTTP_CLOUDFRONT_VIEWER_LATITUDE' => $cfLatitude,
  51.                 'HTTP_CLOUDFRONT_VIEWER_LONGITUDE' => $cfLongitude,
  52.             ], $queryParams);
  53.         } else {
  54.             if (
  55.                 str_contains($url'.aspx') || str_contains($url'/_inc') || str_contains($url'.mvc') ||
  56.                 str_contains($url'/roi-tool/') || str_contains($url'.ico')
  57.             ) {
  58.                 return $this->forward("App\\Controller\\ProxyController::proxy", [
  59.                     "path" => $url,
  60.                     'HTTP_CLOUDFRONT_VIEWER_COUNTRY' => $cfCountry,
  61.                     'HTTP_CLOUDFRONT_VIEWER_LATITUDE' => $cfLatitude,
  62.                     'HTTP_CLOUDFRONT_VIEWER_LONGITUDE' => $cfLongitude,
  63.                 ], $queryParams);
  64.             }
  65.             return $this->forward("App\\Controller\\WebController::shortlink", [
  66.                 "slug" => $url,
  67.                 'HTTP_CLOUDFRONT_VIEWER_COUNTRY' => $cfCountry,
  68.                 'HTTP_CLOUDFRONT_VIEWER_LATITUDE' => $cfLatitude,
  69.                 'HTTP_CLOUDFRONT_VIEWER_LONGITUDE' => $cfLongitude,
  70.             ], $queryParams);
  71.         }
  72.     }
  73. }