dragon-forks/kernel/renderer.php
2025-04-04 20:26:53 +02:00

60 lines
No EOL
1.7 KiB
PHP

<?php
/**
* Basic wrapper around twig
*/
class Renderer {
private $twig;
private $data = [];
public function __construct() {
$loader = new \Twig\Loader\FilesystemLoader(PATH_ROOT . '/theme/default/');
$this->twig = new \Twig\Environment($loader);
}
public function prepare($key, $value) {
$this->data[$key] = $value;
}
public function display($template) {
global $router;
try {
$this->render("{$router->namespace}/{$template}.twig");
} catch (\Twig\Error\LoaderError $e) {
$this->error(500);
}
}
public function error($errorCode) {
$errorTemplate = PATH_ROOT . "/theme/default/error/{$errorCode}.twig";
if (file_exists($errorTemplate)) {
echo $this->render("error/{$errorCode}.twig");
} else {
echo $this->render("error/generic.twig");
}
}
private function render($template) {
global $controlrow;
global $numqueries;
global $starttime;
global $messages;
$this->prepare("STYLE_FOLDER", '/theme/default/');
$this->prepare("dkgamename", $controlrow["gamename"]);
$this->prepare("totaltime", round(getmicrotime() - $starttime, 4));
$this->prepare("numqueries", $numqueries);
$this->prepare("version", DRAGONFORK_VERSION);
$this->prepare("build", DRAGONFORK_BUILD);
$this->prepare("messages", $messages->messageList());
echo $this->twig->render($template, $this->data);
die();
}
public function simple($title, $content) {
$this->prepare("title", $title);
$this->prepare("content", $content);
$this->render("simplepage.twig");
}
}