Skip to content

Commit

Permalink
Transfering the GET/POST parameters during redirection
Browse files Browse the repository at this point in the history
So that advertising campaigns can also be tracked after language redirection e.g. "?utm_source=google&utm_medium=social&utm_campaign=promotion&utm_content=advertising"
  • Loading branch information
Ergün authored Aug 24, 2020
1 parent 66edc12 commit 2e4497d
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions Classes/Middleware/RedirectionMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -180,13 +180,18 @@ function ($language) use ($siteLanguages, $siteLanguagesFallbacks) {
return null;
}

/** @var array $parameters Array in the form of: ['utm_source' => 'google', 'utm_medium' => 'social'] */
$parameters = $request->getQueryParams();

$parameters['_language'] = $matchingSiteLanguage;

$uri = $site->getRouter()->generateUri(
$pageArguments->getPageId(),
['_language' => $matchingSiteLanguage]
$parameters
);

/** @var RedirectResponse $response */
$response = new RedirectResponse($uri, 302);
$response = new RedirectResponse($uri, 307);
return $response->withAddedHeader('Set-Cookie', $cookieName . '=' . $matchingSiteLanguage->getLanguageId() . '; Path=/; Max-Age=' . (time()+60*60*24*30));
}

Expand Down Expand Up @@ -254,13 +259,18 @@ function ($siteLanguage) use ($geocodedIsoCode) {
return null;
}

/** @var array $parameters Array in the form of: ['utm_source' => 'google', 'utm_medium' => 'social'] */
$parameters = $request->getQueryParams();

$parameters['_language'] = $matchingSiteLanguage;

$uri = $site->getRouter()->generateUri(
$pageArguments->getPageId(),
['_language' => $matchingSiteLanguage]
$parameters
);

/** @var RedirectResponse $response */
$response = new RedirectResponse($uri, 302);
$response = new RedirectResponse($uri, 307);
return $response->withAddedHeader('Set-Cookie', $cookieName . '=' . $matchingSiteLanguage->getLanguageId() . '; Path=/; Max-Age=' . (time()+60*60*24*30));
} catch (\Throwable $e) {
// IP address is not in database. Do not redirect.
Expand Down Expand Up @@ -342,11 +352,16 @@ protected function getRedirectResponseIfCookieIsSet(ServerRequestInterface $requ
$preferredSiteLanguage = $site->getLanguageById($languageId);

if ($preferredSiteLanguage !== $requestLanguage) {
/** @var array $parameters Array in the form of: ['utm_source' => 'google', 'utm_medium' => 'social'] */
$parameters = $request->getQueryParams();

$parameters['_language'] = $preferredSiteLanguage;

$uri = $site->getRouter()->generateUri(
$pageArguments->getPageId(),
['_language' => $preferredSiteLanguage]
$parameters
);
return new RedirectResponse($uri, 302);
return new RedirectResponse($uri, 307);
}
}
}
Expand Down

0 comments on commit 2e4497d

Please sign in to comment.