X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/e02706eef130529aac80bb58cf9755c850e316a7..218c239a4dc23c0dbe3878109c2f844d978ec626:/widget/issue/activity.php diff --git a/widget/issue/activity.php b/widget/issue/activity.php index 153034e..1d1a37a 100644 --- a/widget/issue/activity.php +++ b/widget/issue/activity.php @@ -6,39 +6,54 @@ $limit = $Page->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 = [ - "{(?=

\n).+}s" => ' (Meer op de site)', - '{(.*)(

]+>

)\s*}' => "$2\n$1", - '{(?<=\n).{20,}}s" => ' (Meer op de site)$1', + '{(?<='; -$group = NULL; -while ($row = $query->fetch()) { - print '
'; - if ($group !== $row->issue) { - $group = $row->issue; - printf('%s', $row->page, $row->subject); - if ($row->closed) { - print ' (opgelost)'; - } +$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; } - print ''; - if ($row->author and $rowuser = new User("profile/{$row->author}")) { - printf('%s ', $rowuser->html); + + 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 '
'; } - printf('%s', - showdate(preg_split('/\D/', $row->created)) - ); - print ""; - print ''; print '
'; print preg_replace(array_keys($msgformat), array_values($msgformat), $row->message); - print "
\n"; + print "\n"; + $prev = $row; } print "\n";