Fix conversation order when being removed from conversation
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 10 Feb 2022 11:28:20 +0000 (12:28 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 10 Feb 2022 11:28:20 +0000 (12:28 +0100)
commitc8e7c231643939c68b5ee5d3fac851d7fe2e0ba4
tree354059caf0def5909292f2f28f8144e30f290cea
parent37cfbddb5d0369b13c338738fc0032470ce095df
Fix conversation order when being removed from conversation

When one is removed from a conversation, UserConversationList will use the time
of removal as the conversation's `lastPostTime` when ordering, instead of the
actual time of the newest message to not leak information about new messages
after removal.

However this was not properly accounted for within `readObjectIDs()`. Now if a
conversation one was removed from receives new messages after a long-ish time -
with several conversations in between - the conversation will appear on the
*pageNo* where it would be if one would still be a participant. But within the
page it would be ordered based on the timestamp of removal (i.e. appear at the
very bottom of the page).

Fix this by also overriding `lastPostTime` in `readObjectIDs()`. This will move
the conversation to the proper `pageNo` based on the removal time.

This might still be slightly misleading, because the “last message” column in
the template shows the time of the actual last visible message, but this
confusion can be resolved by opening the conversation and seeing the removal
timestamp matching up, whereas without this fix the conversation can be all
over the place.
files/lib/data/conversation/UserConversationList.class.php