+++ /dev/null
-<?php
-global $monthname;
-$monthname = ['?',
- 'januari', 'februari', 'maart', 'april', 'mei', 'juni',
- 'juli', 'augustus', 'september', 'oktober', 'november', 'december',
-];
-
-function showdate($parts)
-{
- global $monthname;
- return implode(' ', array_filter([
- intval($parts[3]), $parts[2] > 0 ? $monthname[intval($parts[2])] : '', $parts[1],
- count($parts) > 6 ? "$parts[4]:$parts[5]" : '',
- ]));
-}
-
-class ArchiveArticle
-{
- function __construct($path)
- {
- $this->page = $path;
- $this->link = preg_replace('/\.html$/', '', $path);
- }
-
- function __get($col)
- {
- return $this->$col = $this->$col(); # run method and cache
- }
-
- function file()
- {
- return fopen($this->page, 'r');
- }
-
- function title()
- {
- return preg_replace('{<h2>(.*)</h2>\s*}', '\1', fgets($this->file));
- }
-
- function safetitle()
- {
- return strip_tags($this->title);
- }
-
- function last()
- {
- return filemtime($this->page);
- }
-
- function lastiso()
- {
- return date(DATE_ATOM, $this->last);
- }
-
- function dateparts()
- {
- preg_match('</(\d{4})[/-](\d{2})-(\d{2})->', $this->page, $ymd);
- return $ymd;
- }
-
- function dateiso()
- {
- return implode('-', $this->dateparts());
- }
-
- function date()
- {
- return showdate($this->dateparts);
- }
-
- function body()
- {
- $this->title;
- $rest = fread($this->file, filesize($this->page));
- if ( preg_match('{\n<p>(<img [^>]*>)</p>\s*\z}', $rest, $img, PREG_OFFSET_CAPTURE) ) {
- $this->img = $img[1][0];
- return substr($rest, 0, $img[0][1]);
- }
- $this->img = NULL;
- return $rest;
- }
-
- function img()
- {
- $this->body;
- return $this->img;
- }
-
- function image()
- {
- if ( preg_match('/\bsrc="([^"]*)"/', $this->img, $src) ) {
- return $src[1];
- }
- }
-
- function thumb($size = '300x')
- {
- if (!$this->image or $this->image[0] !== '/') return;
- return preg_replace('{^(?:/thumb/[^/]*)?}', "thumb/$size", $this->image);
- }
-}
-
-function shownews($input, $limit = 1000)
-{
- if (!is_array($input)) $input = glob("$input/*.html");
- print '<ul class="left">'."\n\n";
- foreach (array_reverse($input) as $filename) {
- $article = new ArchiveArticle($filename);
- print '<li>';
- if ($article->thumb) {
- printf('<img src="/%s" class="left" />', $article->thumb);
- }
- print '<article>';
- printf(
- '<h3><a href="/%s">%s <small class="date">%s</small></a></h3>',
- $article->link, $article->title, $article->date
- );
- print $article->body;
- print "</article></li>\n\n";
-
- if (--$limit <= 0) break;
- }
- print "</ul>\n\n";
-}
-
-function printtoc($input)
-{
- if (!is_array($input)) $input = glob("$input/*.html");
- print '<ul>';
- foreach (array_reverse($input) as $page) {
- $article = new ArchiveArticle($page);
- printf('<li><a href="/%s">%s <small class="date">%s</small></a></li>',
- $article->link, $article->safetitle, $article->date);
- }
- print "</ul>\n";
-}