place['n'] ?? 50; $cols = 'm.*, i.subject, i.updated, i.closed'; $sql = "SELECT $cols FROM messages m JOIN issues i ON i.id = issue"; $sql .= " WHERE message IS NOT NULL"; $sql .= " AND i.page <> 'spam'"; $sql .= " AND m.announced"; $sql .= " ORDER BY m.created DESC LIMIT $limit"; $query = $Db->query($sql); $rows = $query->fetchall(); $msgformat = [ '{(.*)(

]+>

)\s*}s' => "$2$1", "{(

\n).{20,}}s" => ' (Meer op de site)$1', '{(?<='; $prev = NULL; foreach ($rows as $i => $row) { $next = $rows[$i + 1] ?? NULL; if ($next and $next->issue === $row->issue and preg_match('/\A(?:

]*><\/p>)+\z/', $row->message)) { # postpone related image to the following message $next->message = $row->message . $next->message; continue; } if (!$prev or $prev->issue !== $row->issue or $prev->author !== $row->author or !preg_match('/\A

message)) { print '

'; if (!$prev or $prev->issue !== $row->issue) { printf('%s', $row->page, $row->subject); if ($row->closed) { print ' (opgelost)'; } } print ''; if ($row->author and $rowuser = new User("profile/{$row->author}")) { printf('%s ', $rowuser->html); } printf('%s', showdate(preg_split('/\D/', $row->created)) ); print ""; print '
'; } print '
'; print preg_replace(array_keys($msgformat), array_values($msgformat), $row->message); print "\n"; $prev = $row; } print "\n";