array( "^/$" => "modules/home/index.php" ), "project" => array( "^/project/([a-zA-Z0-9_-]+)$" => "modules/project/index.php", "^/project/([a-zA-Z0-9_-]+)/tickets$" => "modules/project/tickets/index.php", "^/project/([a-zA-Z0-9_-]+)/ticket/([0-9]+)$" => "modules/project/tickets/view.php" ) ); /* Define the preset values for the route "categories" */ $presets = array( "home" => array( "_page_type" => "home" ), "project" => array( "_page_type" => "project", "authenticator" => "authenticators/project.php", "auth_error" => "" ) ); /* Generate a routing table */ $router = new CPHPRouter(); $router->allow_slash = true; $router->ignore_query = true; $router->routes = array(0 => array()); foreach($routes as $category => $items) { foreach($items as $route => $target) { $router->routes[0][$route] = $presets[$category]; $router->routes[0][$route]['target'] = $target; } } /* Route the actual request */ try { $router->RouteRequest(); } catch (RouterException $e) { require("modules/error/404.php"); } /* Render the resulting page */ if(empty($router->uVariables['page_type']) || $router->uVariables['page_type'] == "home") { $sContents = NewTemplater::Render("home/layout", $locale->strings, array( "contents" => $sPageContents )); } elseif($router->uVariables['page_type'] == "project") { $sContents = NewTemplater::Render("project/layout", $locale->strings, array( "contents" => $sPageContents, "current-page" => $sCurrentPage )); } else { die(); } echo(NewTemplater::Render("layout", $locale->strings, array( "contents" => $sContents )));