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

221 Commits

Author SHA1 Message Date
Toby Zerner
220190cc53 Add NotificationWillBeSent event 2015-06-01 08:52:04 +09:30
Toby Zerner
6b7632cda3 Move theme config to database 2015-05-31 11:18:19 +09:30
Toby Zerner
731b00571c Eager load notification relationships 2015-05-30 13:57:39 +09:30
Toby Zerner
87f84f0614 Improvements to change/forgot password 2015-05-27 16:25:44 +09:30
Toby Zerner
b6a8416daf Improve email changing/confirmation stuff 2015-05-27 16:24:54 +09:30
Toby Zerner
86603a1399 Update email address confirmation subject 2015-05-26 18:07:27 +09:30
Toby Zerner
b6be2cddab Roughly implement change password/email, delete account modals 2015-05-26 18:03:02 +09:30
Toby Zerner
95e5a2d69d Improve appearance/behaviour of login/signup/forgot modals 2015-05-26 16:25:25 +09:30
Toby Zerner
e47678f403 Very rough implementation of forgot password 2015-05-26 11:14:06 +09:30
Toby Zerner
35b362e393 Old code, don't need these! 2015-05-23 08:36:14 +09:30
Toby Zerner
089dafa93d Fix bad logic in edit permission that was allowing guests to edit posts. Closes #88 2015-05-21 15:53:59 +09:30
Toby Zerner
ec65a15767 PSR-2: Remove empty lines 2015-05-20 12:33:26 +09:30
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
fe8763c3d0 Fix broken DeleteAction 2015-05-20 11:13:32 +09:30
Toby Zerner
26fad11f6f Limit notifications to one per user when dispatching events 2015-05-19 11:24:43 +09:30
Toby Zerner
53357ad56f Experimenting with some new ways to handle config
For now I’ve chucked it on Flarum\Core as a static method, but
ultimately I think we will need a ConfigRepository abstraction (whether
it replaces or sits underneath the Flarum\Core static method I’m not
sure).

Also starting to think about multisite scenarios, I think this is
important. The Forum model could actually end up with a database table
behind it, and each forum would have its own config settings? Haven’t
really thought about it too hard yet…
2015-05-19 10:59:57 +09:30
Toby Zerner
1adfe5d867 Fix broken notification emailer 2015-05-19 10:53:17 +09:30
Toby Zerner
48a8beea52 Fix notification preferences not being enabled by default 2015-05-19 10:12:19 +09:30
Toby Zerner
1e5a3d5ea5 Give all users guest permissions as well 2015-05-19 09:36:20 +09:30
Toby Zerner
927f6e3c9b Fix errors in DeleteAvatarAction/Command 2015-05-19 09:27:04 +09:30
Franz Liedke
eb403d7bae Fix the config table seeder
It should include the "extensions_enabled" key which is read
when initializing all extensions.
2015-05-19 01:53:37 +02:00
Franz Liedke
803d446bbb Fix remaining PSR-2 issues. 2015-05-19 01:07:22 +02:00
Franz Liedke
0ca4e1ab7b Fix coding standards to conform to PSR-2 2015-05-19 01:03:12 +02:00
Franz Liedke
5b5a213143 Fix code error, static methods can not be abstract. 2015-05-18 17:17:10 +02:00
Toby Zerner
6bdf36253c Rename ActivityPost to EventPost 2015-05-18 18:47:34 +09:30
Toby Zerner
00be36ad16 Better API error handling 2015-05-18 18:13:16 +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
9004aff630 Make discussion edit permission specific to renaming 2015-05-18 12:34:03 +09:30
Toby Zerner
8aea1d1051 Update permissions table seeder with new structure 2015-05-18 12:31:38 +09:30
Toby Zerner
a545dda64f Fix permission query error for Guest model. Fixes #84 2015-05-18 12:29:31 +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
Toby Zerner
cd25c631db Expose serializer/actor to extensions 2015-05-15 17:06:09 +09:30
Toby Zerner
20fbad77e8 Simplify permissions and add API to register configurable ones
Lots of thought has gone into this; it will show up later when I do the
admin permissions interface / category permissions :)
2015-05-15 17:05:46 +09:30
Toby Zerner
36be2e9317 GitHub for Mac is silly, this should've been in the last commit 2015-05-14 22:41:08 +09:30
Toby Zerner
470f99ca8d Rework notifications architecture
- The recipient(s) are the concern of the notifier/sender, not the
notification itself
- Allow “retraction” of notifications (e.g. if a discussion is
stickied, but then it is unstickied)
- Misc. cleanup
2015-05-14 22:41:08 +09:30
Toby Zerner
d2bbb69a3a Fix user searching 2015-05-14 22:41:08 +09:30
Toby Zerner
6c0f694354 Make MappedMorphTo available on all models
In case extensions want to add that kind of relationship to an existing
model (there’s no way to include traits at runtime)
2015-05-14 22:41:08 +09:30
Toby Zerner
a849bdaa50 Properly include to-many relations 2015-05-14 22:41:07 +09:30
Toby Zerner
827d6ca0e0 Include user in post creation response 2015-05-14 22:41:07 +09:30
Toby Zerner
fbc63df63c Allow finding a post by discussion ID and number 2015-05-14 22:41:07 +09:30
Toby Zerner
4a7bd67199 New component for post excerpts, which will be shown in search results
Perhaps also in user activity stream. They are used in the mentions
extension.

In order to generate the excerpt, each formatter can implement a
“strip” method which basically converts block formatting into inline
formatting.
2015-05-14 22:41:05 +09:30
Toby Zerner
0ccba3e480 Fix incorrect attribute name 2015-05-11 12:12:00 +09:30
Toby Zerner
2d04a7a100 Add API for adding a formatter 2015-05-11 12:11:26 +09:30
Toby Zerner
d3845ed1c0 Remove BasicFormatter; add LinkifyFormatter 2015-05-11 12:11:19 +09:30
Toby Zerner
c25ee7035a Post can't be abstract because it needs to be instantiable for querying 2015-05-11 10:40:41 +09:30
Toby Zerner
3b61ecaa1c Extract mappedMorphTo function into a trait
Not sure if this is the best thing to do, it could also just be put on
the base Model class
2015-05-11 10:39:54 +09:30
Franz Liedke
97bab21c1d Copy the config.php file upon installation.
This allows us to know whether Flarum is already installed, so that
we can disable certain service providers when it isn't.

This should fix #67.
2015-05-08 20:44:53 +02:00
Franz Liedke
00bf235809 Fix discussion seeder not using the correct post subtypes.
Related to #67.
2015-05-08 18:12:02 +02:00