You've already forked Epicnabbo-Catalogus-Updated-Daily
50 lines
1.8 KiB
PHP
50 lines
1.8 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')) {
|
|
App::setLocale(Session::get('locale'));
|
|
|
|
return $next($request);
|
|
}
|
|
|
|
$countryCode = config('habbo.site.default_language');
|
|
|
|
// GEWIJZIGD: isset() werkt niet op Request::server() in PHP 8. Gebruik null !== in plaats daarvan.
|
|
if (null !== \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY')) {
|
|
$countryCode = strtolower((string) \Illuminate\Support\Facades\Request::server('HTTP_CF_IPCOUNTRY'));
|
|
}
|
|
elseif (null !== \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE')) {
|
|
$countryCode = strtolower(substr((string) \Illuminate\Support\Facades\Request::server('HTTP_ACCEPT_LANGUAGE'), 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');
|
|
|
|
App::setLocale($defaultCountry);
|
|
Session::put('locale', $defaultCountry);
|
|
|
|
return $next($request);
|
|
}
|
|
|
|
// Zet de gedetecteerde taal
|
|
App::setLocale($countryCode);
|
|
Session::put('locale', $countryCode);
|
|
|
|
return $next($request);
|
|
}
|
|
} |