<?php /* Copyright (c) 2024 Freya Murphy */

session_start();

$lang = array();
$__vars = array();
$webroot = dirname(__FILE__);

function error_page($code, $msg) {
	$root = $GLOBALS['webroot'];
	error_reporting(E_ERROR | E_PARSE);
	http_response_code($code);
	require($root . '/core/error.php');
	die();
}

function lang($key, $default = NULL, $sub = NULL) {
	$lang = $GLOBALS['lang'];
	if(array_key_exists($key, $lang)) {
		if ($sub) {
			return sprintf($lang[$key], ...$sub);
		} else {
			return $lang[$key];
		}
	} else if ($default !== NULL) {
		return $default;
	} else {
		return $key;
	}
}

function ilang($key,
	$class = NULL,
	$id = NULL,
	$href = NULL,
	$click = NULL,
	$attrs = array(),
	$sub = NULL,
	$button = FALSE,
) {
	$text = lang($key . "_text", FALSE, sub: $sub);
	$tip = lang($key . "_tip", FALSE);
	$icon = lang($key . "_icon", FALSE);
	$content = lang($key . "_content", FALSE);

	if ($click || $button) {
		echo '<button ';
	} else {
		echo '<a ';
	}
	if ($tip) {
		echo 'title="' . $tip . '" ';
		echo 'aria-label="' . $tip . '" ';
	}
	if ($class) {
		echo 'class="' . $class . '" ';
	}
	if ($id) {
		echo 'id="' . $id . '" ';
	}
	if ($click) {
		echo 'onclick="' . $click . '" ';
	}
	if ($href) {
		echo 'href="' . $href . '" ';
	}
	foreach ($attrs as $key => $attr) {
		echo $key . '="' . $attr . '" ';
	}
	echo '> ';
	if ($icon) {
		echo '<i class="' . $icon . '">';
		if ($content) {
			echo $content;
		}
		echo '</i>';
	}
	if ($text) {
		echo '<span';
		if ($icon) {
			echo ' class="ml-sm"';
		}
		echo '>' . $text . '</span>';
	}
	if ($click) {
		echo '</button>';
	} else {
		echo '</a>';
	}
}

function __init() {

	$root = $GLOBALS['webroot'];

	// load all core files
	require($root . '/core/database.php');
	require($root . '/core/aesthetic.php');
	require($root . '/core/controller.php');
	require($root . '/core/model.php');
	require($root . '/core/loader.php');
	require($root . '/core/main.php');
	require($root . '/core/router.php');

	$main = new MainModel();
	$load = new Loader();
	$router = new Router($main, $load);

	$GLOBALS['__vars']['main'] = $main;
	$GLOBALS['__vars']['load'] = $load;
	$GLOBALS['__vars']['router'] = $router;

	$router->handle_request();
};

if (!file_exists('/status/ready')) {
	error_page(503, 'Service Unavailable');
}

__init();

?>