szurubooru/src/Bootstrap.php
Marcin Kurczewski 35cdc0cf3a Refactored scripts and stylesheets
Styles, scripts and page titles are no longer set from controllers level.
Changed because it was breaking MVC pattern and led to spaghetti code.

Also, optimized JS/CSS inclusions a bit.
2014-02-01 11:24:03 +01:00

63 lines
1.6 KiB
PHP

<?php
class Bootstrap
{
public function workWrapper($workCallback)
{
$this->config->chibi->baseUrl = 'http://' . rtrim($_SERVER['HTTP_HOST'], '/') . '/';
session_start();
$this->context->handleExceptions = false;
LayoutHelper::setTitle($this->config->main->title);
$this->context->json = isset($_GET['json']);
$this->context->layoutName = $this->context->json
? 'layout-json'
: 'layout-normal';
$this->context->transport = new StdClass;
StatusHelper::init();
AuthController::doLogIn();
if (empty($this->context->route))
{
$this->context->viewName = 'error-404';
(new \Chibi\View())->renderFile($this->context->layoutName);
return;
}
try
{
if ($this->context->layoutName == 'layout-normal')
{
ob_start(['LayoutHelper', 'transformHtml']);
$workCallback();
ob_end_flush();
}
else
$workCallback();
}
catch (\Chibi\MissingViewFileException $e)
{
$this->context->json = true;
$this->context->layoutName = 'layout-json';
(new \Chibi\View())->renderFile($this->context->layoutName);
}
catch (SimpleException $e)
{
StatusHelper::failure(rtrim($e->getMessage(), '.') . '.');
if (!$this->context->handleExceptions)
$this->context->viewName = 'message';
(new \Chibi\View())->renderFile($this->context->layoutName);
}
catch (Exception $e)
{
StatusHelper::failure(rtrim($e->getMessage(), '.') . '.');
$this->context->transport->exception = $e;
$this->context->transport->queries = Database::getLogs();
$this->context->viewName = 'error-exception';
(new \Chibi\View())->renderFile($this->context->layoutName);
}
AuthController::observeWorkFinish();
}
}