$sql = "SELECT $cols FROM messages m JOIN issues i ON i.id = issue";
$sql .= " WHERE message IS NOT NULL";
$sql .= " ORDER BY m.created DESC LIMIT $limit";
-$sql = "SELECT * FROM ($sql) x ORDER BY updated DESC, created, id"; # grouped issues
$query = $Db->query($sql);
+$msgformat = [
+ "{(?=</p>\n).+}s" => ' <small class="footer">(Meer op de site)</small>',
+ '{(.*)(<p><img [^>]+></p>)\s*}s' => "$2\n$1",
+ '{(?<=<img src=")(?=/)}' => '/thumb/300x',
+];
+
print '<dl class="replies">';
-$group = NULL;
+$prev = NULL;
while ($row = $query->fetch()) {
- $rowuser = new User("profile/{$row->author}");
- if ($group !== $row->issue) {
- $group = $row->issue;
+ if (!$prev or $prev->issue !== $row->issue or $prev->author !== $row->author
+ or !preg_match('/\A<p><img/', $prev->message)) {
print '<dt>';
- printf('<a href="/%s">%s</a>', $row->page, $row->subject);
- if ($row->closed) {
- print ' <em>(opgelost)</em>';
+ if (!$prev or $prev->issue !== $row->issue) {
+ printf('<a href="/%s">%s</a>', $row->page, $row->subject);
+ if ($row->closed) {
+ print ' <em>(opgelost)</em>';
+ }
+ }
+ print '<span class="right">';
+ if ($row->author and $rowuser = new User("profile/{$row->author}")) {
+ printf('<strong>%s</strong> ', $rowuser->html);
}
+ printf('<small class="date">%s</small>',
+ showdate(preg_split('/\D/', $row->created))
+ );
+ print "</span>";
print '</dt>';
+ print '<dd>';
}
- print '<dd>';
- printf('<strong>%s</strong> <small class="date">%s</small>',
- $rowuser->html, showdate(preg_split('/\D/', $row->created))
- );
- printf("\n\t<blockquote>%s</blockquote>", $row->message);
- print "</dd>\n";
+ print preg_replace(array_keys($msgformat), array_values($msgformat), $row->message);
+ $prev = $row;
}
print "</dl>\n";