Skip to content

Commit

Permalink
pkp#10818 Simplified code
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasraoni committed Jan 18, 2025
1 parent 005f9dd commit 5e6eb80
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions classes/core/PKPPageRouter.php
Original file line number Diff line number Diff line change
Expand Up @@ -507,28 +507,31 @@ private function _setLocale(PKPRequest $request, ?string $setLocale): void
return;
}

$sessionLocale = (function (string $l) use ($request): string {
$session = $request->getSession();
if (Locale::isSupported($l) && $l !== $session->get('currentLocale')) {
$session->put('currentLocale', $l);
$request->setCookieVar('currentLocale', $l);
}
// In case session current locale has been set to non-supported locale, or is null, somewhere else
if (!Locale::isSupported($session->get('currentLocale') ?? '')) {
$session->put('currentLocale', Locale::getLocale());
$request->setCookieVar('currentLocale', Locale::getLocale());
}
return $session->get('currentLocale');
})($setLocale ?? $urlLocale);
$session = $request->getSession();
$currentLocale = $session->get('currentLocale') ?? '';
if (!Locale::isSupported($currentLocale ?? '')) {
$currentLocale = null;
}

$newLocale = $setLocale ?? $urlLocale;
if (!Locale::isSupported($newLocale)) {
$newLocale = $currentLocale ?? Locale::getLocale();
}

if ($newLocale !== $currentLocale) {
$session->put('currentLocale', $newLocale);
$request->setCookieVar('currentLocale', $newLocale);
}

// Do not permit basic auth strings in source parameter for redirects
if (preg_match('#^/\w#', $source = str_replace('@', '', $request->getUserVar('source') ?? ''))) {
$request->redirectUrl($source);
}

$indexUrl = $this->getIndexUrl($request);
$uri = preg_replace("#^{$indexUrl}#", '', $setLocale ? ($_SERVER['HTTP_REFERER'] ?? '') : $request->getCompleteUrl(), 1);
$newUrlLocale = $multiLingual ? "/{$sessionLocale}" : '';
$pathInfo = ($uri)
$newUrlLocale = $multiLingual ? "/{$newLocale}" : '';
$pathInfo = $uri
? preg_replace("#^/{$contextPath}" . ($urlLocale ? "/{$urlLocale}" : '') . '(?=[/?\\#]|$)#', "/{$contextPath}{$newUrlLocale}", $uri, 1)
: "/index{$newUrlLocale}";

Expand Down

0 comments on commit 5e6eb80

Please sign in to comment.