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