<?php
init();
?>

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- <link rel="shortcut icon" href="/favicon.ico" /> -->
    <title><?php echo get_page_title(); ?></title>
    <link rel="stylesheet" href="/css/style.css">
</head>

<body class="" style="background-color: #fafaf9;">

    <div class="w-full flex justify-center">
        <div class="flex h-12 p-3 w-[1080px] justify-center font-thin">

            <!-- <div class="flex text-xl">
                Logo
            </div> -->

            <div class="flex space-x-5 text-xl px-5">
                <div>
                    <a href="/" class="<?php if ($_SERVER["REQUEST_URI"] == "/index") echo "text-red-300"; ?>">Home</a>
                </div>
                <div>
                    <a href="/about" class="<?php if ($_SERVER["REQUEST_URI"] == "/about") echo "text-red-300"; ?>">About</a>
                </div>
            </div>

        </div>
    </div>

    <div class="w-full flex justify-center">
        <div class="flex justify-center w-[1080px]">

            <div class="p-2 md:p-3 w-full">
                <div class="md:h-[50px] h-[10px]"></div>
                <?php show_page(); ?>
                <div class="md:h-[100px] h-[20px]"></div>
            </div>
        </div>
    </div>


</body>

</html>


<?php
// page func start

function show_index()
{
    ob_start(); ?>


    <div class="">
        <p class="text-2xl">
            this is about
        </p>
    </div>

<?php
    $html = ob_get_contents();
    ob_clean();
    echo $html;
}

?>

<?php function show_about()
{
    ob_start(); ?>

    <div class="">
        <p class="text-2xl">
            this is about
        </p>
    </div>


<?php
    $html = ob_get_contents();
    ob_clean();
    echo $html;
}

?>

<?php function show_404()
{
    ob_start(); ?>

    <div class="">
        404 NOT FOUND
    </div>


<?php
    $html = ob_get_contents();
    ob_clean();
    echo $html;
}

// page func end
?>


<?php
// api func start
function check_api()
{
    $uri = $_SERVER["REQUEST_URI"];
    $func = ltrim(implode("_", explode("/", $uri)), "_");
    if (str_starts_with($uri, "/api")) {
        if (!function_exists($func)) echo_json([
            "code" => 1,
            "msg" => "uri错误",
            "data" => []
        ]);

        call_user_func($func);
    }
}

function echo_json($data)
{
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    die;
}

function api_test()
{
    echo_json([
        "code" => 0,
        "msg" => "test",
        "data" => []
    ]);
}

// api func end
?>


<?php
// common func start
function init()
{
    define("BASE_PATH", __DIR__ . "/../");
    define("CONFIG_PATH", BASE_PATH . "/./config/");
    define("PUBLIC_PATH", BASE_PATH . "/./public/");
    empty($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == "/" && $_SERVER['REQUEST_URI'] = "/index";

    check_api();
}

function get_page_title()
{
    $uri = $_SERVER['REQUEST_URI'];
    $pages = json_decode(file_get_contents(CONFIG_PATH . "page.json"), true);
    return $pages[$uri]["title"] ?? "404 NOT FOUND";
}

function show_page()
{
    $uri = $_SERVER["REQUEST_URI"];
    $func = ltrim(implode("_", explode("/", $uri)), "_");

    if (function_exists("show_{$func}")) {
        call_user_func("show_{$func}");
    } else {
        call_user_func("show_404");
    }
}

// common func end
?>