simplephango/libraries/Routes.php

142 lines
3 KiB
PHP

<?php
namespace PhangoApp\PhaRouter;
use PhangoApp\PhaUtils\Utils;
class Config {
static public $home_module='welcome';
static public $modules_allowed=['welcome' => true];
}
function get_controller($controller, $args=[]) {
if(is_file($controller)) {
include_once($controller);
return call_user_func_array('controller', $args);
}
else {
echo 'Page not found';
http_response_code(404);
exit(1);
}
}
function get_route($path_info) {
if($path_info!='') {
$arr_path=filter_path($path_info);
switch (count($arr_path)) {
case 0:
$controller='modules/'.\PhangoApp\PhaRouter\Config::$home_module.'/controllers/index.php';
return \PhangoApp\PhaRouter\get_controller($controller, []);
break;
case 1:
$controller='modules/'.$arr_path[1].'/controllers/index.php';
if(Config::$modules_allowed[$arr_path[1]]) {
return \PhangoApp\PhaRouter\get_controller($controller, []);
}
break;
case 2:
$controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php';
if(Config::$modules_allowed[$arr_path[1]]) {
return \PhangoApp\PhaRouter\get_controller($controller, []);
}
break;
default:
$controller='modules/'.$arr_path[1].'/controllers/'.$arr_path[2].'.php';
if(Config::$modules_allowed[$arr_path[1]]) {
$args=array_slice($arr_path, 2, count($arr_path));
return \PhangoApp\PhaRouter\get_controller($controller, $args);
}
break;
}
}
else {
$controller='modules/'.\PhangoApp\PhaRouter\Config::$home_module.'/controllers/index.php';
return \PhangoApp\PhaRouter\get_controller($controller, []);
}
//If not return, page not found.
echo 'Page not found';
http_response_code(404);
exit(1);
}
function filter_path($path_info) {
$final_path=[];
$arr_path=explode('/', $path_info);
if($arr_path[count($arr_path)-1]=='') {
unset($arr_path[count($arr_path)-1]);
}
$z=1;
unset($arr_path[0]);
foreach($arr_path as $k => $info) {
$v=Utils::slugify($info);
if($v!='') {
$final_path[$z]=$v;
$z++;
}
}
return $final_path;
}