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