forked from Public/pics
Aaron van Geffen
ab0e4efbcb
This is to be the new HashRU website based on the Aaronweb.net/Kabuki CMS.
116 lines
3.2 KiB
PHP
116 lines
3.2 KiB
PHP
<?php
|
|
/*****************************************************************************
|
|
* MainTemplate.php
|
|
* Defines the key template MainTemplate.
|
|
*
|
|
* Kabuki CMS (C) 2013-2015, Aaron van Geffen
|
|
*****************************************************************************/
|
|
|
|
class MainTemplate extends Template
|
|
{
|
|
private $title = '';
|
|
private $classes = [];
|
|
private $area;
|
|
private $css = '';
|
|
private $header_html = '';
|
|
private $canonical_url = '';
|
|
|
|
public function __construct($title = '')
|
|
{
|
|
$this->title = $title;
|
|
}
|
|
|
|
public function html_main()
|
|
{
|
|
echo '<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title>', $this->title, '</title>', !empty($this->canonical_url) ? '
|
|
<link rel="canonical" href="' . $this->canonical_url . '">' : '', '
|
|
<link type="text/css" rel="stylesheet" href="', BASEURL, '/css/default.css">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">', !empty($this->css) ? '
|
|
<style type="text/css">' . $this->css . '
|
|
</style>' : '', $this->header_html, '
|
|
</head>
|
|
<body', !empty($this->classes) ? ' class="' . implode(' ', $this->classes) . '"' : '', '>
|
|
<header>
|
|
<h1 id="logo"><a href="', BASEURL, '/">#pics</a></h1>
|
|
<ul id="nav">
|
|
<li><a href="', BASEURL, '/">albums</a></li>
|
|
<li><a href="', BASEURL, '/people/">people</a></li>
|
|
<li><a href="', BASEURL, '/timeline/">timeline</a></li>
|
|
</ul>
|
|
</header>
|
|
<div id="wrapper">';
|
|
|
|
foreach ($this->_subtemplates as $template)
|
|
$template->html_main();
|
|
|
|
echo '
|
|
<footer>';
|
|
|
|
if (Registry::has('user') && Registry::get('user')->isAdmin())
|
|
{
|
|
if (class_exists('Cache'))
|
|
echo '
|
|
<span class="cache-info">Cache info: ', Cache::$hits, ' hits, ', Cache::$misses, ' misses, ', Cache::$puts, ' puts, ', Cache::$removals, ' removals</span>';
|
|
|
|
if (Registry::has('start'))
|
|
echo '<br>
|
|
<span class="creation-time">Page creation time: ', sprintf('%1.4f', microtime(true) - Registry::get('start')), ' seconds</span>';
|
|
|
|
if (Registry::has('db'))
|
|
echo '<br>
|
|
<span class="query-count">Database interaction: ', Registry::get('db')->getQueryCount(), ' queries</span>';
|
|
}
|
|
else
|
|
echo '
|
|
<span class="vanity">Powered by <a href="https://aaronweb.net/projects/kabuki/">Kabuki CMS</a> | <a href="', BASEURL, '/login/">Admin</a></span>';
|
|
|
|
echo '
|
|
</footer>
|
|
</div>';
|
|
|
|
if (Registry::has('db') && defined("DB_LOG_QUERIES") && DB_LOG_QUERIES)
|
|
foreach (Registry::get('db')->getLoggedQueries() as $query)
|
|
echo '<pre>', strtr($query, "\t", " "), '</pre>';
|
|
|
|
echo '
|
|
</body>
|
|
</html>';
|
|
}
|
|
|
|
public function appendCss($css)
|
|
{
|
|
$this->css .= $css;
|
|
}
|
|
|
|
public function appendHeaderHtml($html)
|
|
{
|
|
$this->header_html .= "\n\t\t" . $html;
|
|
}
|
|
|
|
public function appendStylesheet($uri)
|
|
{
|
|
$this->appendHeaderHtml('<link text="text/css" rel="stylesheet" href="'. $uri . '">');
|
|
}
|
|
|
|
public function setCanonicalUrl($url)
|
|
{
|
|
$this->canonical_url = $url;
|
|
}
|
|
|
|
public function addClass($class)
|
|
{
|
|
if (!in_array($class, $this->classes))
|
|
$this->classes[] = $class;
|
|
}
|
|
|
|
public function removeClass($class)
|
|
{
|
|
if ($key = array_search($class, $this->classes) !== false)
|
|
unset($this->classes[$key]);
|
|
}
|
|
}
|