HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers42/tandartsmaas.nl/app/Komma/Routes/RouteResolver.php
<?php


namespace Komma\Routes;


use Komma\Pages\PageEntity;
use Komma\Navigation\NavigationService;

class RouteResolver
{
    /**
     * @var PageEntity
     */
    private $pageEntity;
    /**
     * @var NavigationService
     */
    private $navigationService;

    /**
     * @param PageEntity $pageEntity
     * @param NavigationService $navigationService
     */
    public function __construct(PageEntity $pageEntity, NavigationService $navigationService)
    {
        $this->pageEntity = $pageEntity;
        $this->navigationService = $navigationService;
    }

    /*
     * Resolve the new route
     */
    public function resolve()
    {
        //\Route::get('facebook/login', ['uses'=>'FacebookPageTokenController@login']);
        //\Route::get('facebook/getPageToken', ['uses'=>'FacebookPageTokenController@getPageToken']);

        \Route::post('process/signUp', ['uses'=>'FormController@signUp']);

        // Json Request for active page
        \Route::get('navigation/getActive/{currentPageName}', function($currentPageName)
        {
           $this->navigationService->getActiveEntity($currentPageName);
        });

        \Route::get('sitemap.xml', ['uses'=>'SEOController@sitemap']);
        \Route::get('robots.txt', ['uses'=>'SEOController@robots']);

        // Check for other page
        $pages = \Config::get('komma.pages');
        $pages = $this->sortRoutes($pages);

        foreach($pages as $page => $data)
        {
            $route = \Lang::get('pages.' . $page . '.route');
            // Search for the route
            \Route::get($route, [ function() use ($page,$data,$route)
            {
                // Get the controller name through a routable query
                $controller = $data['controller'];

                // Set a default method
                $method = null;
                // Check if a method is included in the controller string
                if($controllerData = $this->parseController($controller))
                {
                    $controller = $controllerData['controller'];
                    $method = $controllerData['method'];
                }

                // Create PageEntity
                $pageEntity = new PageEntity([
                    'name' => $page,

                    'controller' => $data['controller'],
                    'view' => $data['view'],

                    'label' => \Lang::get('pages.' . $page . '.label'),
                    'route' => $route,
                    'metaTitle' => \Lang::get('pages.' . $page . '.metaTitle'),
                    'metaDescription' => \Lang::get('pages.' . $page . '.metaDescription')
                ]);

                // Return a new controller that allows dependency injection
                return \App::make($controller)->routeProcessor([],$pageEntity,$method);
            }]);
        }

        return false;

    }

    /**
     * @param $pages
     * @return array
     */
    private function sortRoutes($pages)
    {
        $sort = [];

        foreach($pages as $page => $data)
        {
            $route = \Lang::get('pages.' . $page . '.route');
            $exploded = explode('/',$route);
            $numSlashes = count($exploded) - 1;

            $sort[$numSlashes][$page] = $data;
        }
        krsort($sort);

        $pages = [];
        foreach($sort as $data)
        {
            $pages = array_merge($pages,$data);
        }

        return $pages;
    }

    /*
     * Does the controller have a method specified
     */
    private function parseController($controller)
    {
        $temp = explode('@',$controller);
        if(count($temp) > 1)
        {
            return [
                'controller' => $temp[0],
                'method' => $temp[count($temp)-1]
            ];
        }
        return false;
    }
}