HEX
Server: Apache
System: Linux v38079.2is.nl 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: democfellows (10015)
PHP: 8.1.34
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/creativefellows.nl/apics.creativefellows.nl/src/Middleware/LanguageMiddleware.php
<?php

namespace App\Middleware;

use Psr\Container\ContainerInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Slim\Routing\RouteContext;
use Slim\Exception\HttpNotFoundException;

use App\Domain\Language\LanguageData;

use PDO;

final class LanguageMiddleware implements MiddlewareInterface
{	
	protected $settings;
	
    public function __construct(
		ContainerInterface $container,
		ResponseFactoryInterface $responseFactory,
		LanguageData $language		
	){
        $this->container = $container;
		$this->responseFactory = $responseFactory;
		$this->language = $language;
    }
	
	
	public function process(
		ServerRequestInterface $request, 
		RequestHandlerInterface $handler
	) : ResponseInterface {
		
		
		
		// Set localization
		$this->localization = $this->container->get('settings')['localization']; 		
		$this->root =  $this->container->get('settings')['root']; 			
		
        $uri 	= $request->getUri();
        $path 	= $uri->getPath();
		
        //Split path into chunks
        $pathChunks = explode("/", $path); 
		
        if ( count($pathChunks) > 1 && in_array($pathChunks[1], $this->localization['available_languages']) ) {
            
			// Override default settings with language variables
			$this->language->setLanguage($pathChunks[1]);

			// Set DB
			//$this->setDatabase($pathChunks[1]);
			            
            //Produce new URI without language reference 
            unset($pathChunks[1]); 
            $newPath = implode('/', $pathChunks);
            $newUri = $uri->withPath($newPath);

  			return $handler->handle($request->withUri($newUri));
        }
		
			
		return $handler->handle($request);
	}
	
	
	protected function setDatabase($locale)
	{	
	
		$settings_locale = require $this->root . '/config/settings.'. $locale .'.php';		
		$settings_default = $this->container->get('settings')['db']; 	
		$settings = array_merge($settings_default,$settings_locale["db"]);
		
		
	    $host = $settings['host'];
	    $dbname = $settings['database'];
	    $username = $settings['username'];
	    $password = $settings['password'];
	    $charset = $settings['charset'];
	    $flags = $settings['flags'];
	    $dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";

	    $pdo = new PDO($dsn, $username, $password, $flags);
		
		
		$this->container->set('PDO',$pdo);
	   
	}
	
}