widget/sitemap: find and list all site pages
[minimedit.git] / widget / sitemap.php
1 <?php
2 $search = new RecursiveCallbackFilterIterator(
3         new RecursiveDirectoryIterator(ltrim($Args, '/') ?: '.'),
4         function ($current) {
5                 if ($current->getFilename()[0] === '.') {
6                         # skip hidden files and directories
7                         return FALSE;
8                 }
9                 if ($current->isLink()) {
10                         # ignore symlinks, original contents only
11                         return FALSE;
12                 }
13                 return $current->isDir()
14                         || preg_match('/\.html$/', $current->getFilename());
15         }
16 );
17
18 print '<ul class="replies">'."\n";
19 foreach (new RecursiveIteratorIterator($search) as $filename => $match) {
20         $article = new ArchiveArticle($filename);
21         printf('<li><a href="%s">%s</a>', $article->link, $article->name);
22         if ($article->image) {
23                 printf("\n\t".'<img class="right" src="/%s" />', $article->thumb('100x100'));
24         }
25         if ($article->teaser) {
26                 printf("\n\t<blockquote>%s</blockquote>",
27                         preg_replace('/\n(.*)/s', ' <small>\1</small>', $article->teaser)
28                 );
29         }
30         print "</li>\n";
31 }
32 print "</ul>\n";