1
0
mirror of https://github.com/flarum/core.git synced 2025-07-25 18:51:40 +02:00
Commit Graph

6 Commits

Author SHA1 Message Date
Toby Zerner
500c279fb3 New user activity feed API.
Originally the user activity feed was implemented using UNIONs. I was
looking at make an API to add activity “sources”, or extra UNION
queries (select from posts, mentions, etc.) but quickly realised that
this is too slow and there’s no way to make it scale.

So I’ve implemented an API which is very similar to how notifications
work (see previous commit). The `activity` table is an aggregation of
stuff that happens, and it’s kept in sync by an ActivitySyncer which is
used whenever a post it created/edited/deleted, a user is
mentioned/unmentioned, etc.

Again, the API is very simple (see Core\Activity\PostedActivity +
Core\Handlers\Events\UserActivitySyncer)
2015-05-20 12:30:27 +09:30
Toby Zerner
8edb684ea9 Simplify and improve notifications API.
It turns out that the idea of “sending” a notification is flawed. (What
happens if the notification subject is deleted shortly after? The
notified user would end up with a dud notification which would be
confusing. What about if a post is edited to mention an extra user? If
you sent out notifications, the users who’ve already been mentioned
would get a duplicate notification.)

Instead, I’ve introduced the idea of notification “syncing”. Whenever a
change is made to a piece of data (e.g. a post is created, edited, or
deleted), you make a common notification and “sync” it to a set of
users. The users who’ve received this notification before won’t get it
again. It will be sent out to new users, and hidden from users who’ve
received it before but are no longer recipients (e.g. users who’ve been
“unmentioned” in a post).

To keep track of this, we use the existing notifications database
table, with an added `is_deleted` column. The syncing/diffing is
handled all behind the scenes; the API is extremely simple (see
Core\Notifications\DiscussionRenamedNotification +
Core\Events\Handlers\DiscussionRenamedNotifier)
2015-05-20 12:24:01 +09:30
Toby Zerner
48a8beea52 Fix notification preferences not being enabled by default 2015-05-19 10:12:19 +09:30
Toby Zerner
f70f602f09 Add some extra optional functionality to the Extend\Permission API
- Automatically serialise the attribute
- Apply Permissible grant callbacks

Need to consider splitting the $permission property into two arguments
(currently have to explode by ‘.’)
2015-05-18 13:51:30 +09:30
Toby Zerner
15658a7cbf Fix error on discussion page 2015-05-18 08:00:14 +09:30
Toby Zerner
2be90d1caf New object-based extension APIs 2015-05-17 10:19:54 +09:30