widget/sitemap: order pages hierarchically and alphabetically
[minimedit.git] / widget / sitemap.php
index 9b03e2fbee6813d0d42596002276cd1730ae9b5d..a7dbfddf9fe78bc4ea6af91e648ec95eff590d92 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+# find **/*.html
 $search = new RecursiveCallbackFilterIterator(
        new RecursiveDirectoryIterator(ltrim($Args, '/') ?: '.'),
        function ($current) {
@@ -15,8 +16,17 @@ $search = new RecursiveCallbackFilterIterator(
        }
 );
 
+# 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
 print '<ul class="replies">'."\n";
-foreach (new RecursiveIteratorIterator($search) as $filename => $match) {
+foreach ($dir as $filename => $sorted) {
        $article = new ArchiveArticle($filename);
        printf('<li><a href="%s">%s</a>', $article->link, $article->name);
        if ($article->image) {