1
0
mirror of https://github.com/flarum/core.git synced 2025-07-24 18:21:33 +02:00
Commit Graph

19 Commits

Author SHA1 Message Date
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
e47678f403 Very rough implementation of forgot password 2015-05-26 11:14:06 +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
Franz Liedke
fc20c0dd09 Fix migrations to comply with PSR-2 2015-05-19 01:22:09 +02:00
Franz Liedke
dcd67b9d5c Primary key for access tokens table 2015-05-19 00:46:04 +02:00
Franz Liedke
0f8968ee63 Explicitly specify length for string columns.
The missing length attributes caused problems with too long indices.
2015-05-19 00:20:36 +02:00
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
7906bbd986 Add user group badges 2015-05-06 11:25:19 +09:30
Toby Zerner
37825f1849 Implement user preferences API
Preferences must be registered (optionally with a callback to transform
data, and a default value) on the User model.
2015-03-28 15:43:57 +10:30
Franz Liedke
e5973aa161 Change name of avatar field in users table. 2015-03-26 20:59:06 +01:00
Franz Liedke
755461f56f Add avatar handling to user model. 2015-03-25 14:21:50 +01:00
Toby Zerner
4a16b8ad32 Implement notifications 2015-03-24 15:07:38 +10:30
Toby Zerner
fe982aa587 Add user activity system 2015-03-17 17:06:12 +10:30
Toby Zerner
4395935cbe Implement user "bio" field
Perhaps this should be an extension, but it is pretty essential and I
can’t think of many instances where it wouldn’t be wanted. Would be
very easy to extract later on if need be.
2015-03-12 10:38:18 +10:30
Toby Zerner
96ce220c8d Rename user posts count to comments count 2015-03-12 10:34:59 +10:30
Toby Zerner
5d9332fc7b Add model validation back in 2015-02-26 12:44:39 +10:30
Toby Zerner
2733b5810d Upgrade to L5 + huge refactor + more. closes #2
New stuff:
- Signup + email confirmation.
- Updated authentication strategy with remember cookies. closes #5
- New search system with some example gambits! This is cool - check out
the source. Fulltext drivers will be implemented as decorators
overriding the EloquentPostRepository’s findByContent method.
- Lay down the foundation for bootstrapping the Ember app.
- Update Web layer’s asset manager to properly publish CSS/JS files.
- Console commands to run installation migrations and seeds.

Refactoring:
- New structure: move models, repositories, commands, and events into
their own namespaces, rather than grouping by entity.
- All events are classes.
- Use L5 middleware and command bus implementations.
- Clearer use of repositories and the Active Record pattern.
Repositories are used only for retrieval of ActiveRecord objects, and
then save/delete operations are called directly on those ActiveRecords.
This way, we don’t over-abstract at the cost of Eloquent magic, but
testing is still easy.
- Refactor of Web layer so that it uses the Actions routing
architecture.
- “Actor” concept instead of depending on Laravel’s Auth.
- General cleanup!
2015-02-24 20:33:18 +10:30