Files
Epicnabbo-Catalogus-Updated…/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php
T
Remco e0f7021693 🆙 More fixes 🆙
2026-01-19 22:23:30 +01:00

69 lines
2.4 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\Miscellaneous\WebsiteLanguage;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Session;
use Symfony\Component\HttpFoundation\Response;
class LocalizationMiddleware
{
public function handle(Request $request, Closure $next): Response
{
// Controleer of de instellingen bestaan en of de taal al in de sessie staat
if (Schema::hasTable('website_settings') && Session::has('locale')) {
$locale = Session::get('locale');
if (! is_string($locale)) {
$response = $next($request);
assert($response instanceof Response);
return $response;
}
App::setLocale($locale);
$response = $next($request);
assert($response instanceof Response);
return $response;
}
$countryCode = config('habbo.site.default_language');
// GEWIJZIGD: isset() werkt niet op Request::server() in PHP 8. Gebruik null !== in plaats daarvan.
$cfCountry = \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY');
if (is_string($cfCountry)) {
$countryCode = strtolower($cfCountry);
} elseif (is_string(\Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'))) {
$acceptLanguage = \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE');
$countryCode = strtolower(substr($acceptLanguage, 0, 2));
}
// Als de taal niet in de database staat, gebruik de standaardtaal
if (Schema::hasTable('website_languages') && WebsiteLanguage::where('country_code', '=', $countryCode)->doesntExist()) {
$defaultCountry = config('habbo.site.default_language');
if (! is_string($defaultCountry)) {
$defaultCountry = 'en';
}
App::setLocale($defaultCountry);
Session::put('locale', $defaultCountry);
$response = $next($request);
assert($response instanceof Response);
return $response;
}
// Zet de gedetecteerde taal
if (is_string($countryCode)) {
App::setLocale($countryCode);
}
Session::put('locale', $countryCode);
$response = $next($request);
assert($response instanceof Response);
return $response;
}
}