nieuws: article lists in left layout with images
[minimedit.git] / nieuws.inc.php
1 <?php
2 global $monthname;
3 $monthname = ['?',
4         'januari', 'februari', 'maart', 'april', 'mei', 'juni',
5         'juli', 'augustus', 'september', 'oktober', 'november', 'december',
6 ];
7
8 function shownewsdate($url)
9 {
10         if (!preg_match('</(\d{4})/(\d{2})-(\d{2})->', $url, $parts)) return;
11         global $monthname;
12         return implode(' ', array_filter([
13                 intval($parts[3]), $parts[2] > 0 ? $monthname[intval($parts[2])] : '', $parts[1],
14         ]));
15 }
16
17 function shownewsimage($url)
18 {
19         foreach (['jpg', 'png'] as $ext) {
20                 if (file_exists("$url.$ext")) {
21                         return "$url.$ext";
22                 }
23         }
24 }
25
26 function shownewsarticle($url, $link = TRUE, $title = NULL)
27 {
28         $html = ob_get_clean();
29         $date = shownewsdate($url);
30         ob_start();
31         print $title ?: '\1';
32         print '[[1]]';
33
34         $title = sprintf(
35                 $link ? '<h3><a href="/%2$s">%s</a></h3>' : '<h2>%s</h2>',
36                 getoutput([1 => ' <small class="date">'.$date.'</small>']),
37                 $url
38         );
39
40         if (!$link and $image = shownewsimage($url)) {
41                 global $Place;
42                 $Place['image'] = "https://lijtweg.nl/thumb/600x/".$image;
43                 ob_start();
44                 print '[[1]]';
45                 $html .= getoutput([
46                         1 => sprintf("\n".'<p><img src="%s" /></p>', "/thumb/640x/".$image),
47                 ]);
48         }
49
50         return preg_replace('{<h2>(.*?)</h2>}', $title, $html);
51 }
52
53 function shownews($input, $limit = 1000)
54 {
55         if (!is_array($input)) $input = glob("$input/*.html");
56         print '<ul class="left">'."\n\n";
57         foreach (array_reverse($input) as $filename) {
58                 $url = preg_replace('/\.html$/', '', $filename);
59                 print '<li>';
60                 if ($image = shownewsimage($url)) {
61                         printf('<img src="%s" class="left" />', "/thumb/300x/".$image);
62                 }
63                 print '<article>';
64                 ob_start();
65                 include $filename;
66                 print shownewsarticle($url);
67                 print "</article></li>\n\n";
68
69                 if (--$limit <= 0) break;
70         }
71         print "</ul>\n\n";
72 }
73
74 function printtoc($input)
75 {
76         if (!is_array($input)) $input = glob("$input/*.html");
77         print '<ul>';
78         foreach (array_reverse($input) as $page) {
79                 $title = fgets(fopen($page, 'r'));
80                 $title = strip_tags($title);
81                 $linkurl = preg_replace('/\.html$/', '', $page);
82                 printf('<li><a href="/%s">%s <small class="date">%s</small></a></li>',
83                         $linkurl, $title, shownewsdate($linkurl));
84         }
85         print "</ul>\n";
86 }