widget/sitemap: find and list all site pages
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 29 Jun 2019 00:21:02 +0000 (02:21 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Fri, 12 Jul 2019 02:18:16 +0000 (04:18 +0200)
widget/sitemap.php [new file with mode: 0644]

diff --git a/widget/sitemap.php b/widget/sitemap.php
new file mode 100644 (file)
index 0000000..9b03e2f
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+$search = new RecursiveCallbackFilterIterator(
+       new RecursiveDirectoryIterator(ltrim($Args, '/') ?: '.'),
+       function ($current) {
+               if ($current->getFilename()[0] === '.') {
+                       # skip hidden files and directories
+                       return FALSE;
+               }
+               if ($current->isLink()) {
+                       # ignore symlinks, original contents only
+                       return FALSE;
+               }
+               return $current->isDir()
+                       || preg_match('/\.html$/', $current->getFilename());
+       }
+);
+
+print '<ul class="replies">'."\n";
+foreach (new RecursiveIteratorIterator($search) as $filename => $match) {
+       $article = new ArchiveArticle($filename);
+       printf('<li><a href="%s">%s</a>', $article->link, $article->name);
+       if ($article->image) {
+               printf("\n\t".'<img class="right" src="/%s" />', $article->thumb('100x100'));
+       }
+       if ($article->teaser) {
+               printf("\n\t<blockquote>%s</blockquote>",
+                       preg_replace('/\n(.*)/s', ' <small>\1</small>', $article->teaser)
+               );
+       }
+       print "</li>\n";
+}
+print "</ul>\n";