page: search results as article objects
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 12 Dec 2020 14:41:39 +0000 (15:41 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 21 Dec 2020 16:46:33 +0000 (17:46 +0100)
Wanted to determine page link, but also afterwards in sitemap
and likely most other uses.

article.inc.php
foto/index.php
nieuws/index.php
widget/linkref.php
widget/sitemap.php

index a9c6ce41195307f44c01d4e7d8ad6b0a67c6b686..7f8e622cde5297f5d71523a42b106a14983f09eb 100644 (file)
@@ -276,12 +276,12 @@ class PageSearch
        function files()
        {
                # order alphabetically by link
-               $dir = iterator_to_array(new RecursiveIteratorIterator($this->iterator));
-               array_walk($dir, function (&$row, $name) {
-                       # prepare values for sorting (directory index first)
-                       $row = preg_replace('{/index\.html$}', '', $name);
-               });
-               asort($dir);
+               $dir = [];
+               foreach (new RecursiveIteratorIterator($this->iterator) as $name) {
+                       $article = new ArchiveArticle($name);
+                       $dir[$article->link] = $article;
+               }
+               ksort($dir);
                return $dir;
        }
 }
index 1e973c786c14855a2c56b998de5db72f4b9359b0..7df1d5c26daa1c27ed9efda43531f6997fe96d4e 100644 (file)
@@ -13,7 +13,9 @@ if (!$User) {
                $Page->image = "/$img";
        }
        if (!$Page->path) {
-               return glob("$rootdir/*", GLOB_ONLYDIR); #TODO: recurse
+               return array_map(function ($dir) {
+                       return new ArchiveArticle($dir . '/index.html');
+               }, glob("$rootdir/*", GLOB_ONLYDIR)); #TODO: recurse
        }
        return;
 }
index 507f493d32f4c5659fdcfcbd3c495f92ca38ca22..6ea68dc43a7fc130805a9a1ffcac7b288c905fb0 100644 (file)
@@ -4,7 +4,7 @@ $replyform = $Page->handler == 'melding' && $User->login;
 
 if (!$User) {
        if ($Page->path) return;
-       return array_keys((new PageSearch($Page->link))->files());
+       return (new PageSearch($Page->link))->files();
 }
 
 if ($User->admin("edit {$Page->handler}")) {
index 7f0264ae142600113d54bda5eeab8c73671a4e04..3769ca5bf8dbd470ea3b13b0b313e537ca3a0a72 100644 (file)
@@ -1,5 +1,7 @@
 <?php
+if (empty($article)) {
        $article = new ArchiveArticle($Page->place[0]);
+}
        $article->index; # apply handler metadata
        printf('<a href="%s">%s</a>', $article->link, $article->name);
        if ($article->image) {
index 42bf7dfe3e0ce3c787088d302748fce5789eb702..4d0fa6ef1b9b5c4774419fb8da3a3466f0a0d5b0 100644 (file)
@@ -2,8 +2,7 @@
 # list article details
 $search = new PageSearch($Page->place[0] ?? '.');
 print '<ul class="replies">'."\n";
-foreach ($search->files() as $ref => $sorted) {
-       $Page->place[0] = $ref;
+foreach ($search->files() as $ref => $article) {
        print '<li>';
        include 'linkref.php';
        print "</li>\n";