venom/src/Venom/Views/VenomRenderer.php

99 lines
2.5 KiB
PHP
Raw Normal View History

2020-03-28 20:11:51 +01:00
<?php
namespace Venom\Views;
use Venom\Core\ArgumentHandler;
use Venom\Core\Config;
use Venom\Helper\MetaGenerator;
2020-11-18 17:50:01 +01:00
use Venom\Helper\TemplateUtil;
2020-03-28 20:11:51 +01:00
use Venom\Venom;
class VenomRenderer
{
private Venom $venom;
private ?RenderController $controller;
private ?MetaGenerator $metaGenerator;
2020-03-28 20:11:51 +01:00
private string $templateData = '';
private array $vars = [];
2020-03-28 20:11:51 +01:00
private string $baseTemplate = '';
private string $templateDir = '';
public function __construct(Venom $venom)
{
$this->venom = $venom;
}
public function render(): void
{
$isAsync = false;
2020-03-28 20:11:51 +01:00
if ($this->controller) {
ob_start();
$this->controller->render($this);
$this->templateData = ob_get_clean();
$isAsync = $this->controller->getTemplate() === 'async';
}
if ($isAsync || ArgumentHandler::get()->getItem('async', 'false') === 'true') {
echo $this->templateData;
exit;
2020-03-28 20:11:51 +01:00
}
$this->loadBasicTemplate();
}
public function loadBasicTemplate(): void
{
if (file_exists($this->templateDir . $this->baseTemplate)) {
include_once $this->templateDir . $this->baseTemplate;
} else {
echo 'Base Template not found...';
2020-03-28 20:11:51 +01:00
}
}
public function renderTemplate($template): void
{
// random variable name... to remove it instantly
2020-11-18 17:50:01 +01:00
echo TemplateUtil::includeTemplate($template);
}
/**
* function will load a template (without extension!) into a variable and return the content
* @param $template
* @param string $varName
* @return false|string
*/
public function includeTemplate($template, $varName = '')
{
2020-11-18 17:50:01 +01:00
$data = TemplateUtil::includeTemplate($template);
$this->vars[$varName] = $data;
return $data;
}
public function addVar($name, $value): void
{
$this->vars[$name] = $value;
}
public function getVar($name)
{
return $this->vars[$name];
}
2020-09-25 21:33:54 +02:00
public function deleteVar($name): void
{
unset($this->vars[$name]);
}
2020-03-28 20:11:51 +01:00
public function init(?RenderController $controller): void
{
$this->controller = $controller;
2020-11-18 17:50:01 +01:00
if (!Config::getInstance()->isAdmin()) {
$this->metaGenerator = new MetaGenerator();
$this->metaGenerator->loadById();
2020-09-25 21:33:54 +02:00
}
2020-11-18 17:50:01 +01:00
$util = TemplateUtil::getInstance();
$this->templateDir = $util->getDir();
$this->baseTemplate = $util->getBase();
2020-03-28 20:11:51 +01:00
}
}