23b95c6b9890d050c5bd282711d724df289e5ff5
[minimedit.git] / widget / issue / activity.php
1 <?php
2 global $Db;
3 require_once 'database.inc.php';
4
5 $limit = $Page->place['n'] ?? 50;
6 $cols = 'm.*, i.subject, i.updated, i.closed';
7 $sql = "SELECT $cols FROM messages m JOIN issues i ON i.id = issue";
8 $sql .= " WHERE message IS NOT NULL";
9 $sql .= " ORDER BY m.created DESC LIMIT $limit";
10 $query = $Db->query($sql);
11
12 $msgformat = [
13         "{(?=</p>\n).+}s" => ' <small class="footer">(Meer op de site)</small>',
14         '{(.*)(<p><img [^>]+></p>)\s*}' => "$2\n$1",
15         '{(?<=<img src=")(?=/)}' => '/thumb/300x',
16 ];
17
18 print '<dl class="replies">';
19
20 $prev = NULL;
21 while ($row = $query->fetch()) {
22         if (!$prev or $prev->issue !== $row->issue or $prev->author !== $row->author) {
23                 print '<dt>';
24                 if (!$prev or $prev->issue !== $row->issue) {
25                         printf('<a href="/%s">%s</a>', $row->page, $row->subject);
26                         if ($row->closed) {
27                                 print ' <em>(opgelost)</em>';
28                         }
29                 }
30                 print '<span class="right">';
31                 if ($row->author and $rowuser = new User("profile/{$row->author}")) {
32                         printf('<strong>%s</strong> ', $rowuser->html);
33                 }
34                 printf('<small class="date">%s</small>',
35                         showdate(preg_split('/\D/', $row->created))
36                 );
37                 print "</span>";
38                 print '</dt>';
39                 print '<dd>';
40         }
41         print preg_replace(array_keys($msgformat), array_values($msgformat), $row->message);
42         $prev = $row;
43 }
44
45 print "</dl>\n";