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;
}
}