TherAPI
This release focuses on huge changes behind the scenes, that were needed to add consistent API. It adds, however, some nice features as well.
- [Added] API
- [Added] Automatic generating of API documentation
- [Added] Support for video files (WEBM, MP4, OGV, FLV, 3GP)
- [Added] Unit tests. Lots of them!
- [Added] A few options regarding entity validation to config (tag min/max length, post source max length etc.)
- [Added] Option to disallow anonymous uploads in config
- [Added] Arbitrary-size thumbnails support (they no longer need to be exactly 150x150)
- [Added] Protection against two users having the same e-mail address
- [Added]
sort:
search keyword, which is an alias toorder:
keyword - [Added]
name:
search keyword, for searching posts by their names/hashes - [Added] Imagick support for thumbnail generating
- [Added] Support for custom avatars
- [Fixed] Blurry avatars in post sidebar
- [Fixed] MySQL support
- [Fixed] Backticks in
PostSearchParser
, making every request spam line in error log 😓 - [Fixed] Login errors when authentication cookie is corrupt
- [Fixed] Hardcoded post permalink syntax in post views
- [Fixed] Improved support for no Javascript
- [Fixed] Ancient scripts in
/scripts
folder - [Fixed] Privacy policy text containing outdated information regarding cookie contents
- [Fixed] Double slash in some URLs
- [Changed] The way some forms show errors
- [Changed] Erroneous pages return proper HTTP response codes
- [Changed] Removed requirement to have
gd
installed (thumbnails will be empty, but site will work) - [Changed] Improved web browser caching of JS scripts and CSS stylesheets
- [Changed] Background of inputs set to white (some Windows themes set it to weird colors)
- [Changed] Default access rank set to nobody (instead of admin)
- [Changed] Renamed some access ranks
- [Changed] Routes distinguish between POST and GET
- [Changed] Improved compact layout, ever so little
- [Changed] Footer appearance
- [Changed] Versioning system (no more separate "upgrade to vX.Y.Z" commits)
- [Changed] Changed EBC to CBC in authentication (arguably improving security; changed cookie so that it contains IV)
- [Changed] Logger path names accepts simple templates
- [Changed] Renamed some setup keys
Changes behind the scenes:
- [Refactored] Split long lines in source code
- [Refactored] Grouped views into file hierarchy
- [Refactored] Rendering forms
- [Refactored]
core.php
is now object-oriented - [Refactored]
dispatch.php
is now object-oriented - [Refactored]
dispatch.php
logic moved toDispatcher.php
- [Refactored] Controllers business logic moved to API. They now act just as a proxy between API and views
- [Refactored] Merged mass tag and post search redirection code
- [Refactored]
AuthController
logic moved toAuth.php
- [Refactored]
PrivilegesHelper
renamed toAccess
- [Refactored]
LogHelper
renamed toLogger
- [Refactored] Privilege strings replaced to objects
- [Refactored] Enums
- [Refactored] Simplified authentication
- [Refactored] Simplified AJAX queries (they don't rely on
status
in JSON and don't append?json
anymore) - [Refactored] Common paging code moved to common class
- [Refactored] Models save methods
- [Refactored] Entity fields - all of them are private now, and can be accessed via setters and getters
- [Refactored] Entity field are no longer just strings
- [Refactored] Entities are validated just before saving
- [Refactored] Removed
StatusHelper
in favor of simplerMessenger
- [Refactored] Removed
InputHelper::get('submit')
as well as HTML counterparts in favor of specialized routes - [Refactored] Thumbnail generating
- [Refactored] Methods in controllers renamed to
...View
if they're used for views only, and left as...Action
if they actually do something - [Refactored] Used shorthand PHP echo (
<?=
instead of<?php echo
) - [Refactored] Text case conversion code moved to external gist
- [Refactored] Bunch of other stuff