Rationale: some services thought that images linked from /posts/upload
are hotlinked. This is because they were receiving referrer set to a
host that is unknown for them. By using proxying, referrer is blank,
which increases thumbnail coverage at the expense of increased
server-side traffic.
- Jobs specify main privilege and sub privileges separately
Rationale: increase maintenance, restrict what can be done runtime
- Renamed ChangeUser* to EditUser* (consistency with EditPost*)
- Simplified enum names and configuration reading
- IJob interface members must be explicitly implemented
Rationale: reduce chances of forgetting something, or typos in
inherited method names
- Invalid privileges names in configuration yield exceptions
- Moved thumbs folder to public_html/
- Users can supply custom thumbs of any size and the system will treat
them like normal image
- Removed distinction between various thumb sizes in file system
- Introduced custom rewrite rule, which isn't exactly good-looking, but
its benefits far outweigh its shortcomings
- Loading up to 75 times faster (was: 100-300ms, is: 4-10ms on my
machine) thanks to removal of PHP proxying
Instead of showing comments chronologically, group them into posts, then sort
the posts by last comment date. Reason: improved comment context delivery
makes discussion bumping possible (no matter how old it is) and discussion is
what comments are about.
Comment count is limited to 5 per post.
Following privileges for post actions can now understand different settings for
everyone and for uploader:
* Scoring posts
* Featuring posts
* Flagging posts
* Favoriting posts
Additionally, privilege for flagging users can now understand different
settings for everyone and for the user that is currently logged in.
In other words: with this update admin can configure privileges so that scoring
own posts or flagging oneself will be prohibited, while scoring other people's
posts or flagging others will be okay.
"help" text was used twice in two navigation menus: once in top navigation and
once in tab bar (along with "prrivacy policy" and "rules"). The "help" in tab
bar was changed to "general help" to avoid potential confusion.
- Most of model-related code moved from controllers to model classes, much
fewer calls to R::whatever() in controllers
- Post editing and uploading shares the same code, thus making implementing
stuff easier in the future
- Added support for default bean wiring, no more calls to R::preload() all over
the place
- More robust concurrent post editing detection