{
public $raw, $title, $body; # file contents
public $meta = []; # head metadata properties
+ public $place = []; # template variables replaced in render()
function __construct($path)
{
$Page = clone $this;
$Page->handler = $Page->handler . $Page->path; // .= with explicit getter
$Page->path = '';
- $Place = $GLOBALS['Place'];
foreach ($params as $param) {
if ($set = strpos($param, '=')) {
- $Place[ substr($param, 0, $set) ] = substr($param, $set + 1);
+ $Page->place[ substr($param, 0, $set) ] = substr($param, $set + 1);
}
elseif (!empty($param)) {
$Page->path .= '/'.$param;
}
}
- function render($blocks = [])
+ function render()
{
$doc = ob_get_clean();
- if (!empty($blocks['warn'])) {
+ if (!empty($this->place['warn'])) {
$warn = '<p class="warn">[[warn]]</p>';
if ($offset = strpos($doc, '</h2>')) {
$doc = substr_replace($doc, "\n\n".$warn, $offset + 5, 0);
return preg_replace_callback(
'{ \[\[ ([^] ]+) ([^]]*) \]\] }x',
- function ($sub) use ($blocks) {
+ function ($sub) {
list ($placeholder, $name, $params) = $sub;
- $html = $blocks[$name] ??
+ $html = $this->place[$name] ??
$this->widget($name, explode(' ', $params));
if (empty($html) or $html[0] != '<') {
$html = "<span>$html</span>";
print "</a></div></li>\n";
}
print "</ul>\n";
-$Place['issuelist'] = ob_get_clean();
+$Page->place['issuelist'] = ob_get_clean();
ob_start();
require_once 'login/form.inc.php';
$Page->raw = ob_get_clean();
- $Place['warn'] = $message;
+ $Page->place['warn'] = $message;
return TRUE;
}
$user = $User;
}
-$Place['login/name'] = $user->name ?: 'bewoner';
-$Place['user'] = $user->login;
+$Page->place['login/name'] = $user->name ?: 'bewoner';
+$Page->place['user'] = $user->login;
if ( $password = trim(@file_get_contents("{$user->dir}/.passwd")) ) {
if (substr($password, 0, 1) == '$') {
$password = NULL; // hashed
}
- $Place['pass'] = htmlspecialchars($password) ?: '<em>zelf ingesteld</em>';
+ $Page->place['pass'] = htmlspecialchars($password) ?: '<em>zelf ingesteld</em>';
}
else {
- $Place['pass'] = '<em>onbekend</em>';
+ $Page->place['pass'] = '<em>onbekend</em>';
}
print '<aside class="nav"><a href="javascript:window.print()">Print</a></aside>'."\n";
if (!$User->admin('user')) {
http_response_code(403);
- $Place['warn'] = "Geen gebruikersrechten om e-mails in te zien.";
- $Place['maillist'] = '';
+ $Page->place['warn'] = "Geen gebruikersrechten om e-mails in te zien.";
+ $Page->place['maillist'] = '';
return TRUE;
}
print "</a></li>\n";
}
print "</ul>\n";
-$Place['maillist'] = ob_get_clean();
+$Page->place['maillist'] = ob_get_clean();
$Page->title = $edit;
}
if ($Page->dateparts) {
- $Place[1] = ' <small class="date">'.$Page->date.'</small>';
+ $Page->place[1] = ' <small class="date">'.$Page->date.'</small>';
}
else {
- $Place[1] = '';
+ $Page->place[1] = '';
}
print preg_replace('{(?<=<h2>)(.*?)(?=</h2>)}', ($edit ?: '\1').' [[1]]', $Page->raw);
if ($User->admin("edit {$Page->link}")) {
<?php
-$body = $Page->render(@$Place);
+$body = $Page->render();
include_once 'head.inc.php';
}
print "</p></div>\n";
}
-$nav = $menu->render(['login' => ob_get_clean()]);
+$menu->place['login'] = ob_get_clean();
+$nav = $menu->render();
$nav = preg_replace_callback('{<a href="([^"]+)">(.*?)</a>}', function ($m) {
$request = $_SERVER['REQUEST_URI'];
include_once 'page.inc.php';
ob_start();
require '500.inc.html';
- print $Page->render(['debug' => htmlspecialchars($error)]);
+ $Page->place['debug'] = htmlspecialchars($error);
+ print $Page->render();
}
set_exception_handler('fail');
])));
ob_start(); # page body
-$Place = [
+$Page->place += [
'user' => $User->login ?: '',
'url' => htmlspecialchars($_SERVER['REQUEST_URI']),
];
return;
}
-$pagesize = intval(@$Place['n'] ?: @$_GET['n']) ?: 20;
+$pagesize = intval(@$Page->place['n'] ?: @$_GET['n']) ?: 20;
$gitcmd = "git log -n $pagesize --pretty='%at\t%an\t%s'";
if ( $offset = intval(@$_GET['start']) ) {
$users[$col] = new User($userdir);
}
-if (isset($Place['order'])) {
- $ordercol = $Place['order'];
+if (isset($Page->place['order'])) {
+ $ordercol = $Page->place['order'];
$order = array_map(function ($row) use ($ordercol) {
return $row->$ordercol;
}, $users);
}
}
-if (isset($Place['n'])) {
- array_splice($users, $Place['n']); # limit number of results
+if (isset($Page->place['n'])) {
+ array_splice($users, $Page->place['n']); # limit number of results
}
print '<ul';
-if (@$Place['view'] == 'avatar') {
+if (@$Page->place['view'] == 'avatar') {
print ' class="gallery cat"';
}
elseif (count($users) > 5) {
$name = sprintf('<a href="%s">%s</a>', $link, $name);
}
- switch (@$Place['view']) {
+ switch (@$Page->place['view']) {
case 'avatar':
if (!file_exists("{$user->dir}/avatar.jpg")) {
break;
$articles = (ltrim($Page->path, '/') ?: 'nieuws');
if (strpos($articles, '/') === FALSE) {
- if (@$Place['view'] === 'toc') {
+ if (@$Page->place['view'] === 'toc') {
print "<div>\n";
foreach (array_reverse(glob("$articles/2???")) as $page) {
$year = basename($page, '.html');
$articles .= '/????';
}
-if (@$Place['view'] === 'toc') {
+if (@$Page->place['view'] === 'toc') {
printtoc($articles);
return;
}
ob_start();
-shownews($articles, @$Place['n'] ?: 5);
+shownews($articles, @$Page->place['n'] ?: 5);
print $Page->render();
<?php
-$limit = @$Place['limit'] ?: 10;
+$limit = @$Page->place['limit'] ?: 10;
$path = ' '.escapeshellarg('*.html');
$query = @$_REQUEST['q'] ?: $Page->path ?: $Page->handler;
if (!trim($query, '/')) return;
-if (!empty($Place['suggest'])) {
+if (!empty($Page->place['suggest'])) {
$cmd = "git ls-files -- $path";
exec($cmd, $ls);
if (!$ls) {
}
}
-if (isset($Place['verbose'])) {
+if (isset($Page->place['verbose'])) {
printf("<p>%s gevonden voor <q>%s</q>:</p>\n",
$results ? count($results).' resultaten' : 'Niets',
htmlspecialchars($query)