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/figi.creativefellows.nl/classes/LanguageMiddleware.php
<?php

	class LanguageMiddleware extends BaseController {

	    protected $container;

	    public function __construct($available_languages, $default_language, $languages_defaults,$container)
		{
		
	        if(!is_array($available_languages))
			{
	            $available_languages = array($available_languages);
	        }
		
	        $this->container = $container;
		
	        $this->container['default_language'] 	= $default_language;
	        $this->container['available_languages'] = $available_languages;
	        $this->container['language_prefix'] 	= $default_language;
			$this->container['language_id'] 		= $default_language;
	        $this->container['language_defaults'] 	= $languages_defaults;
			//d($this->container['language_defaults']);
		
	   }

	    /**
	     * RestrictRoute middleware invokable class.
	     * 
	     * @param \Psr\Http\Message\ServerRequestInterface PSR7 request
	     * @param \Psr\Http\Message\ResponseInterface PSR7 response
	     * @param callable 
	     * 
	     * @return \Psr\Http\Message\ResponseInterface
	     */
	    public function __invoke($request, $response, $next)
		{

	        $uri 	= $request->getUri();
	        $path 	= $uri->getPath();
        
	        // Split path into chunks
	        $pathChunks = explode("/", $path); 

	        // Check for language references
	        if ( count($pathChunks) > 1 && in_array($pathChunks[1], $this->container['available_languages']) )
			{
	            // Set current language
	            $this->container['language_prefix'] = $pathChunks[1];  

				// override default settings with language variables
				$this->setLanguage($pathChunks[1]);
            
			
	            // Produce new URI without language reference 
	            unset($pathChunks[1]); 
	            $newPath = implode('/', $pathChunks);
	            $newUri = $uri->withPath($newPath);
			

	            return $next($request->withUri($newUri), $response); 
	        }
			else{
			
				$notFoundHandler = $this->container->get('notFoundHandler');
				return $notFoundHandler($request, $response);
			
	        }
		
	        return $next($request, $response);
	    }
	
		private function setLanguage($lang_prefix)
		{
		
	        $language_settings = $this->container['language_defaults'][$lang_prefix];  

			foreach($language_settings as $key => $value)
			{	
				$this->container->get('settings')[$key] = $value;
			}
			
		}
	}
	
?>