<?php


function initRouter(){
    global $routerRequest;
    global $routerConfig;

    $routerRequest["requestAddress"] = array_slice(explode('.', $_SERVER['HTTP_HOST']), -3, 3); //get the last 3 elements

    $needsRedirect = false;

    if(count($routerRequest["requestAddress"]) < 3){
        // Root domain accessed directly
        $needsRedirect = true;

        $routerRequest["subdomain"] = $routerConfig["default_site"];
        $routerRequest["domain"] = basename($routerRequest["requestAddress"][0]);
        $routerRequest["tld"] = basename($routerRequest["requestAddress"][1]);

    } else {
        $routerRequest["subdomain"] = basename($routerRequest["requestAddress"][0]);
        $routerRequest["domain"] = basename($routerRequest["requestAddress"][1]);
        $routerRequest["tld"] = basename($routerRequest["requestAddress"][2]);

        $routerRequest["page_name"] = basename($_SERVER["QUERY_STRING"]);

        if (empty($routerRequest["page_name"])) {
            // Page name is empty
            $needsRedirect = true;
            $routerRequest["page_name"] = $routerConfig["default_page"];
        }
    }

    if ($needsRedirect) {
        $redirectAddress = $routerConfig["protocol"] .
            $routerRequest["subdomain"] . "." .
            $routerRequest["domain"] . "." .
            $routerRequest["tld"] . "/" .
            $routerRequest["page_name"];
        // Redirect with default page name
        header("Location: $redirectAddress");
    }

    return !$needsRedirect;
}

function renderDynamicPage($page_file)
{
    require_once $page_file;
    return render();
}

function getPage($page_name = null){
    global $routerConfig;
    global $routerRequest;

    if(!$page_name){
        $page_name = $routerRequest["page_name"];
    }

    $dynamic_page_file = $routerConfig["page_dir"] . $routerRequest["subdomain"] . "/" . $page_name . ".php";
    $page_file = $routerConfig["page_dir"] . $routerRequest["subdomain"] . "/" . $page_name . ".html";

    $dynamic_page_file_global = $routerConfig["page_dir"] . "global/" . $page_name . ".php";
    $page_file_global = $routerConfig["page_dir"] . "global/" . $page_name . ".html";

    $skeleton = file_get_contents($routerConfig["template_dir"] . "skeleton.html");
    $nav = file_get_contents($routerConfig["template_dir"] . "nav.html");

    if (file_exists($dynamic_page_file_global)){
        $page = renderDynamicPage($dynamic_page_file_global);
    }
    elseif (file_exists($page_file_global)){
        $page = file_get_contents($page_file_global);
    }
    elseif (file_exists($dynamic_page_file)){
        $page = renderDynamicPage($dynamic_page_file);
    }
    elseif (file_exists($page_file)){
        $page = file_get_contents($page_file);
    }
    else{
        $page = file_get_contents($routerConfig["template_dir"] . "404.html");
    }
    $navpages = generateNavigation();

    $nav = str_replace("__NAV_PAGES__", $navpages, $nav);

    $out = $skeleton;
    $out = str_replace("__TEMPLATE__NAV__", $nav, $out);
    $out = str_replace("__TEMPLATE__PAGE__", $page, $out);
    return str_replace("__TEMPLATE_PAGE_NAME__", $page_name, $out);
}