* Remove cl_type from paging in categorylinks - it's not
really needed there. Although cl_type is in WHERE but not
in ORDER BY clause the worst thing that can happen
is to have a filesort going again through <500 entries
selected by index. Or will FORCE INDEX work anyway?
* Revert schema change, as we don't need cl_type there
anyway (or even if we wanted to compare, it should
work as expected by using INT values against ENUM).
* (bug 27549) action=query&list=users&usprop=groups doesn't show implicit groups if a user doesn't have explicit groups
Also follows up r79556, where I'd done a couple of daft things... (accessing undefined objects)
* Move to SpecialBlock.php, and rename class appropriately
* Complete refactor
* Use HTMLForm in block form. This changes most of the ids and field names on the form, but allows proper validation, nicer formatting, clears up several fixmes, and is generally Better(TM).
* Spin various parts out into static functions, several of which properly belong in the backend (but Block.php is a worse mess still)
* Invert some of the block options so that every checkbox makes the block more severe (so "check to disable email" is fine, but "check to allow usertalk edit" (default true) is inverted to "check to disable usertalk edit" (default false).
* revert r40359 (move doMassUserBlock() to core). No one seems to be using this function, which has nothing to do with the frontend UI in SpecialBlock (it might perhaps belong in Block.php); it is pretty bespoke for CheckUser, doesn't seem to have very much utility elsewhere.
* Adds a condition fa_deleted=0 if the user does not have the suppressrevision rights. This field is unindexed. This should however not be a big problem as files with fa_deleted are rare. Unfortunately this hides files that do not have DELETED_RESTRICTED, but I don't know how bad fa_deleted & DELETED_RESTRICTED = 0 is for performance
* Added deletedfile, deletedcomment, deleteduser and deletedrestricted to the output for what I think are appropriate fa_deleted fields, but it's hard to tell what's corrent without a single line of documentation or even comment in the code. Perhaps somebody can dig up a commit message where the purpose of the constants is explained?
If the user is allowed to view hidden users, put a missing property on all users.
For list=users, do the same, but we can't easily distinguish to other people the difference between "hidden", or "missing", so no reason to do it
1. Fix - previously unresolved possible return value (ABORTED) added to switch
2. Allows a message to be returned when status "ABORTED" instead of just one of existing generic messages.
Further changes:
* Added Status::getErrorsByType() which returns the internal error array untouched
* Added ApiResult::convertStatusToArray() which converts a Status object to something useful for the Api