<?php /** * Zbase-Laravel Routes * * Laravel Routes * * @link http://zbase.dennesabing.com * @author Dennes B Abing <*****@*****.**> * @license proprietary * @copyright Copyright (c) 2016 ClaremontDesign/MadLabs-Dx * @file routes.php * @project Zbase * @package Zbase/Laravel/Helpers */ zbase_routes_init();
/** * Run Routing * @return void */ function zbase_routes_init($routes = null) { if (empty($routes)) { $routes = zbase_config_get('routes'); /** * Add dynamic routes * for modules */ $adminKey = zbase_admin_key(); $modules = zbase()->modules(); if (!empty($modules)) { foreach ($modules as $moduleName => $module) { $module = zbase()->module($moduleName); if ($module instanceof \Zbase\Module\ModuleInterface) { if (empty($routes[$adminKey]['children'])) { $routes[$adminKey]['children'] = []; } if ($module->isEnable()) { $routes = array_merge($routes, $module->getRoutes()); if ($module->hasBackend()) { $adminRoute = ['controller' => ['name' => 'backendModule', 'method' => 'index', 'enable' => true, 'params' => ['module' => $module]], 'form' => ['enable' => true], 'url' => $module->sectionUrl('backend'), 'backend' => true, 'enable' => true]; $routes[$adminKey]['children'][$module->id()] = $adminRoute; if ($module->isNode()) { $nodes = $module->getNodesSupport(); if (!empty($nodes)) { foreach ($nodes as $n) { $adminRoute = ['controller' => ['name' => 'backendModule', 'method' => 'index', 'enable' => true, 'params' => ['module' => $module, 'node' => $n, 'nodeNamespace' => $module->nodeNamespace()]], 'form' => ['enable' => true], 'url' => 'nodes/' . $n . '/' . $module->sectionUrl('backend'), 'backend' => true, 'enable' => true]; // var_dump('Module', $module->id(), 'node_' . $module->nodeNamespace() . '_' . $n, 'nodes/' . $n . '/' . $module->sectionUrl('backend'), '==='); $routes[$adminKey]['children']['node_' . $module->nodeNamespace() . '_' . $n] = $adminRoute; } } } } if ($module->hasFrontend()) { $frontRoute = ['controller' => ['name' => 'pageModule', 'method' => 'index', 'enable' => true, 'params' => ['module' => $module]], 'form' => ['enable' => true], 'url' => $module->sectionUrl(), 'enable' => true]; $routes[$module->id()] = $frontRoute; if ($module->isNode()) { $nodes = $module->getNodesSupport(); if (!empty($nodes)) { foreach ($nodes as $n) { $frontRoute = ['controller' => ['name' => 'pageModule', 'method' => 'index', 'enable' => true, 'params' => ['module' => $module, 'node' => $n, 'nodeNamespace' => $module->nodeNamespace()]], 'form' => ['enable' => true], 'url' => 'nodes/' . $n . '/' . $module->sectionUrl(), 'enable' => true]; $routes['node_' . $module->nodeNamespace() . '_' . $n] = $frontRoute; } } } } /** * Module Defined Routes */ // $routes = array_merge($routes, $module->getRoutes()); } } } } } if (!empty($routes)) { foreach ($routes as $name => $route) { if (!empty($route['url'])) { zbase_route_init($name, $route); if (!empty($route['children'])) { $cRoutes = []; $uCRoutes = []; foreach ($route['children'] as $cName => $cRoute) { $cRoute['url'] = $route['url'] . '/' . (!empty($cRoute['url']) ? $cRoute['url'] : $cName); $cRoutes[$name . '.' . $cName] = $cRoute; } zbase_routes_init($cRoutes); } } } $usernameRoute = zbase_route_username(); /** * Using Username Route */ if (!empty($usernameRoute)) { $routeParameterName = zbase_route_username_prefix(); $usernameRoutePrefix = '/{' . $routeParameterName . '?}'; $usernameroute = ['controller' => ['name' => 'user', 'method' => 'username', 'enable' => true], 'url' => $usernameRoutePrefix, 'enable' => true]; zbase_route_init($routeParameterName, $usernameroute); foreach ($routes as $name => $route) { $usernameRouteEnable = isset($route['usernameroute']) ? $route['usernameroute'] : true; if (!empty($route['url']) && !empty($usernameRouteEnable)) { $route['url'] = str_replace('//', '/', $usernameRoutePrefix . '/' . $route['url']); $route['url'] = str_replace('{' . $routeParameterName . '?}/{' . $routeParameterName . '?}', '{' . $routeParameterName . '?}', $route['url']); $route['controller']['params'][$routeParameterName] = null; $routeName = $routeParameterName . $name; $routeName = str_replace($routeParameterName . $routeParameterName, $routeParameterName, $routeName); zbase_route_init($routeName, $route); if (!empty($route['children'])) { $cRoutes = []; foreach ($route['children'] as $cName => $cRoute) { $cRoute['url'] = $route['url'] . '/' . (!empty($cRoute['url']) ? $cRoute['url'] : $cName); $cRoute['url'] = str_replace('{' . $routeParameterName . '?}/{' . $routeParameterName . '?}', '{' . $routeParameterName . '?}', $cRoute['url']); $cRoute['controller']['params'][$routeParameterName] = null; $cRouteName = $routeParameterName . $name . '.' . $cName; $cRoutes[$cRouteName] = $cRoute; } zbase_routes_init($cRoutes); } } } } } }