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/fvr.creativefellows.nl/src/Action/View/ViewAction.php
<?php

namespace App\Action\View;

use App\Action\Action;

use App\Domain\Page\Service\PageReader;
use App\Domain\Navigation\Service\NavigationReader;
use App\Domain\Language\LanguageData;
use App\Domain\Breadcrumb\Data\BreadcrumbData;

use App\Handler\DefaultErrorHandler;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Container\ContainerInterface;
use Slim\Views\PhpRenderer;

use App\Domain\Reviews\Service\ReviewReader;



final class ViewAction extends Action
{	
	
    protected $container;	
	protected $responder;
	protected $pageReader;
	protected $navigationReader;
	protected $breadcrumbs;
	protected $errorHandler;
	protected $language;
	protected $reviews;	
		
	
    public function __construct(
		ContainerInterface $container, 
		PhpRenderer $responder, 
		PageReader $pageReader, 
		NavigationReader $navigationReader,
		BreadcrumbData $breadcrumbs,
		LanguageData $language,
		DefaultErrorHandler $errorHandler,
		ReviewReader $reviews
	) {
        $this->container 		= $container;
        $this->responder 		= $responder;
		$this->pageReader 		= $pageReader;
		$this->navigationReader = $navigationReader;
		$this->breadcrumbs		= $breadcrumbs;
		$this->language 		= $language;
		$this->errorHandler 	= $errorHandler;
        $this->reviews = $reviews;
    }
	
    public function action() : ResponseInterface
	{
		// set breadcrumbs
		$this->breadcrumbs->setUrl( $this->request->getUri()->getPath() );
		
		// check of a post url is set
	    $post_name = ($this->args['page'] ?? null);
	    $post_section = ($this->args['section'] ?? null);
		$load_page = $post_name == null ? $post_section : $post_name;
		
		
		
		// get data of page
        $this->page = $this->pageReader->getPageData($load_page);
		

		// get menu elements
		$this->navigation = $this->navigationReader->getNavigationData($post_section);	
			
		// return error page if no result in page				
		if( !$this->page->hasData() ) return $this->errorHandler->respond($this->response,$this->page,$this->navigation);
		
		// localize labels
		$localization = $this->language->localizedLanguageData()->setting("labels");
		
		// get reviews
		$reviews = $this->reviews->get();
		

		// return
		return $this->responder->render($this->response, $this->page->getTemplateName(), [
			"navigation" => $this->navigation,
			"page" => $this->page,
			"breadcrumbs" => $this->breadcrumbs,
			"localization" => $localization,
			"reviews" => $reviews,
		]);
		
    }
		
}