nieuws/feed: include domain part in article link
[minimedit.git] / search.php
1 <?php
2 $limit = @$Place['limit'] ?: 10;
3 $path = ' '.escapeshellarg('*.html');
4 $query = @$_REQUEST['q'] ?: $Args ?: $Page;
5
6 if (!trim($query, '/')) return;
7
8 if (!empty($Place['suggest'])) {
9         $cmd = "git ls-files -- $path";
10         exec($cmd, $ls);
11         if (!$ls) {
12                 die("fout bij zoeken van bestanden");
13         }
14
15         # order files by similarity to query
16         $ls = array_combine($ls, array_map(function ($row) use ($query) {
17                 $row = preg_replace('{(?:^|/)index\.html$}', '', $row);
18                 return similar_text($row, $query) - strlen($row) / 8;
19         }, $ls));
20         arsort($ls);
21         $results = array_keys($ls);
22 }
23 else {
24         $cmd = "git grep -li -- ".escapeshellarg($query).$path;
25         exec($cmd, $results);
26         if (count($results) > $limit) {
27                 shuffle($results); // avoid alphabetical top set
28         }
29 }
30
31 if (isset($Place['verbose'])) {
32         printf("<p>%s gevonden voor <q>%s</q>:</p>\n",
33                 $results ? count($results).' resultaten' : 'Niets',
34                 htmlspecialchars($query)
35         );
36 }
37
38 require_once('nieuws.inc.php');
39
40 if (!$results) {
41         print "Niets gevonden.";
42         return;
43 }
44 if (count($results) > $limit) {
45         array_splice($results, $limit);
46 }
47
48 if ($limit > 1) {
49         print '<ul>';
50 }
51 foreach ($results as $result) {
52         $page = new ArchiveArticle($result);
53         $name = sprintf('<a href="/%s">%s</a>', $page->link, $page->name);
54         print $limit > 1 ? "<li>$name</li>\n" : $name;
55 }
56 if ($limit > 1) {
57         print "</ul>\n";
58 }