Commit Graph

796 Commits

Author SHA1 Message Date
8f7e563036 Performance improvements 2015-05-21 06:49:07 +09:30
ec65a15767 PSR-2: Remove empty lines 2015-05-20 12:33:26 +09:30
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
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
fe8763c3d0 Fix broken DeleteAction 2015-05-20 11:13:32 +09:30
de690fad16 Just being picky 2015-05-20 11:12:48 +09:30
26fad11f6f Limit notifications to one per user when dispatching events 2015-05-19 11:24:43 +09:30
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
1adfe5d867 Fix broken notification emailer 2015-05-19 10:53:17 +09:30
48a8beea52 Fix notification preferences not being enabled by default 2015-05-19 10:12:19 +09:30
8095809c3f Prevent moment deprecation warning 2015-05-19 10:12:18 +09:30
ce742e416b Travis: Send an email for the first failed build
This will notify the committer whenever a build starts failing,
but not on subsequent failures (in order not to annoy @tobscure).
2015-05-19 02:14:56 +02:00
48a65ab1a6 Let's not test migrations for code style.
PHPCS (on Travis, not locally?) is complaining about these classes
not being namespaced. Meh.
2015-05-19 02:08:47 +02:00
1e5a3d5ea5 Give all users guest permissions as well 2015-05-19 09:36:20 +09:30
9fd5995703 Actually implement persistent avatar removal in the front-end 2015-05-19 09:27:04 +09:30
927f6e3c9b Fix errors in DeleteAvatarAction/Command 2015-05-19 09:27:04 +09:30
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
9fdafcc014 Disable composer textarea before it has fully slid up
Prevents early focusing of the textarea while it is still off the edge
of the viewport, which was causing scroll position to jump
2015-05-19 09:17:48 +09:30
50ed24698d Travis: Only test against PHP 5.4
This is enough for now since we don't have any unit tests, only
code standard checks.
2015-05-19 01:24:11 +02:00
3200697489 Update PHPCS dependency 2015-05-19 01:22:52 +02:00
07e3556cab Also check code style in migrations folder. 2015-05-19 01:22:34 +02:00
fc20c0dd09 Fix migrations to comply with PSR-2 2015-05-19 01:22:09 +02:00
803d446bbb Fix remaining PSR-2 issues. 2015-05-19 01:07:22 +02:00
0ca4e1ab7b Fix coding standards to conform to PSR-2 2015-05-19 01:03:12 +02:00
dcd67b9d5c Primary key for access tokens table 2015-05-19 00:46:04 +02:00
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
5b5a213143 Fix code error, static methods can not be abstract. 2015-05-18 17:17:10 +02:00
e0401469dd Tweak notifications appearance 2015-05-18 18:56:11 +09:30
9befc68ea3 GitHub for Mac sucks, why does it leave out a file sometimes? 2015-05-18 18:50:43 +09:30
58adcfa3c4 Rename JS sub-components so that descriptors are before the noun, not after
To be consistent with the naming in PHP world.

e.g. ReplyComposer instead of ComposerReply
2015-05-18 18:50:24 +09:30
6bdf36253c Rename ActivityPost to EventPost 2015-05-18 18:47:34 +09:30
00be36ad16 Better API error handling 2015-05-18 18:13:16 +09:30
3441002a5b Make sure links never have an underline 2015-05-18 16:46:44 +09:30
7d67098374 Tweak codeblock styles 2015-05-18 16:46:13 +09:30
43e5d8a9b0 Stop emailing me, Travis! :)
Looks like the newlines were changed too?
2015-05-18 15:45:12 +09:30
96c3c2cc25 Show composer after discussion is reloaded following login 2015-05-18 15:38:19 +09:30
8b7e7c0afd Clicking on an index nav item should always refresh the discussion list 2015-05-18 15:27:39 +09:30
bfef59c172 Correct composer position when pane is pinned but screen is too small to actually show it 2015-05-18 15:17:33 +09:30
c811dd569e Fix select-input appearance on Firefox 35+. Closes #43 2015-05-18 15:11:31 +09:30
b11595de06 Refresh discussion after logging in. Fixes #68 2015-05-18 15:07:04 +09:30
a7ff92cbff Only allow user profile to be edited if user has permission. Fixes #72 2015-05-18 14:58:59 +09:30
3fcf8f3da5 Make avatar edit menu extensible 2015-05-18 14:58:23 +09:30
82dc0cdd7b Fix broken login/signup links
They’re still broken, hoping that
https://github.com/babel/babel/issues/1150#issuecomment-102881157 will
fix
2015-05-18 14:58:08 +09:30
c9b971bdf8 Don't affix the sidebar if it is taller than the viewport. fixes #79 2015-05-18 14:47:08 +09:30
d7facbd90a Set document.title on every page 2015-05-18 14:28:15 +09:30
39dd2f9b9b Actually fade out post when it is being edited 2015-05-18 14:27:29 +09:30
0ef4469849 Fade out post when it is being edited 2015-05-18 14:24:18 +09:30
c9cb6170f5 Update deps (including the addition of codesniffer, which should fix travis builds) 2015-05-18 14:09:05 +09:30
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
7a487793a0 Tweak discussion list badges positioning 2015-05-18 13:49:39 +09:30