widget/sitemap: move find code to global PageSearch class
[minimedit.git] / widget / sitemap.php
index a7dbfddf9fe78bc4ea6af91e648ec95eff590d92..461690361aec77a64ff9fdea49aff65bda1107ac 100644 (file)
@@ -1,42 +1,10 @@
 <?php
-# find **/*.html
-$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());
-       }
-);
-
-# order alphabetically by link
-$dir = iterator_to_array(new RecursiveIteratorIterator($search));
-array_walk($dir, function (&$row, $name) {
-       # prepare values for sorting (directory index first)
-       $row = preg_replace('{/index\.html$}', '', $name);
-});
-asort($dir);
-
 # list article details
+$search = new PageSearch(ltrim($Args, '/') ?: '.');
 print '<ul class="replies">'."\n";
-foreach ($dir as $filename => $sorted) {
-       $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";
+foreach ($search->files() as $Args => $sorted) {
+       print '<li>';
+       include 'linkref.php';
+       print "<li>\n";
 }
 print "</ul>\n";