X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/1e6e0732eb889ea7f8ca17ba467bf2a9a2ff5cbd..refs/tags/v5.3:/widget/issue/activity.php
diff --git a/widget/issue/activity.php b/widget/issue/activity.php
index cd99e48..9ce6d53 100644
--- a/widget/issue/activity.php
+++ b/widget/issue/activity.php
@@ -7,29 +7,51 @@ $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";
-$sql = "SELECT * FROM ($sql) x ORDER BY updated DESC, created, id"; # grouped issues
$query = $Db->query($sql);
+$rows = $query->fetchall();
+
+$msgformat = [
+ '{(.*)(
]+>
)\s*}s' => "$2$1",
+ "{(\n).{20,}}s" => ' $1',
+ '{(?<=
';
-$group = NULL;
-while ($row = $query->fetch()) {
- $rowuser = new User("profile/{$row->author}");
- if ($group !== $row->issue) {
- $group = $row->issue;
+$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 '
';
- printf('%s', $row->page, $row->subject);
- if ($row->closed) {
- print ' (opgelost)';
+ 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 '';
- printf('%s %s',
- $rowuser->html, showdate(preg_split('/\D/', $row->created))
- );
- printf("\n\t%s
", $row->message);
- print "\n";
+ print preg_replace(array_keys($msgformat), array_values($msgformat), $row->message);
+ print "\n";
+ $prev = $row;
}
print "\n";