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 .= " ORDER BY m.created DESC LIMIT $limit";
$query = $Db->query($sql);
$rows = $query->fetchall();
$msgformat = [
'{(.*)(
]+>
)\s*}s' => "$2$1",
"{(?=\n).+}s" => ' ',
'{(?<=
';
$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";