Reason: until now, PostSearchService was using magic to get around the biggest
limitation of SqlQuery.php: it didn't support arbitrary order of operations.
You couldn't join with something and tell then to select something from it.
Additionally, forging UPDATE queries was a joke. The new Sql* classes replace
SqlQuery completely and address these issues. Using Sql* classes might be
tedious and ugly at times, but it is necessary step to improve model layer
maintainability.
It is by no menas complete implementation of SQL grammar, but for current needs
it's enough, and, what's most important, it is easily extensible.
Additional changes:
* Added sorting style aliases
- fav_count
- tag_count
- comment_count
* Sorting by multiple tokens in post search is now possible
* Searching for disliked posts with "special:disliked" always yields results
(even if user has disabled showing disliked posts by default)
* More maintainable next/prev post support
Pages load 1.5-2x faster
Exception trace in JSON is now represented as an array
Fixed pagination of default favorites page in user pages
Fixed thumbnail size validation for non-square thumbnails
- Fixed broken negative searches
- Faster search by tag / comment / submit / favorites (useless nested joins
replaced to entity prefetch). Side effect: searching for nonexistent tags,
users etc yields informative errors instead of "no posts to show")
- Fixed duplicated column in order clause ("ORDER BY id DESC, id DESC")
- No random chdir() calls
- No more exceptions when executing scripts from dirs other than root
- find-posts.php prints absolute paths making piping more useful
- 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