Extension:GroupPermissionsManager

What can this extension do?
This extension allows modifying the underlying Group Permissions via a special page interface. It accomplishes this by writing a PHP file in a /config subdirectory of the extension. It's easy-to-use User Interface gives a grouped alphabetical listing of all rights that can be assigned with radio button toggles, as well as being aware of whether it is modifying an existing group or adding a new one. Deletion of groups is also possible, but this extension will not remove users from the deleted groups (see Special:RemoveUnusedGroups for that). Also, implicit groups are unable to be deleted via this interface. Modifications made via this extension are logged publicly on-wiki.

Two more special pages this extension adds are Special:SortPermissions and Special:RemoveUnusedGroups. SortPermissions allows you to add/delete sort types and permissions, as well as sort them (permissions can only be deleted from the sorting, thus putting them into the "Miscellaneous" category, it is currently impossible to totally remove a permission). SortPermissions requires the grouppermissions right. RemoveUnusedGroups removes users from unused (deleted) groups that Special:UserRights cannot detect (aka they cannot be removed via the normal interface). It currently is a one-shot process, you cannot choose which groups to remove or which users to remove it from; it does everything at once. RemoveUnusedGroups requires the userrights right.

In addition to the Special Page, the extension has the ability to be expanded upon via plugins.

Usage
Special:GroupPermissions: Browse to Special:GroupPermissions (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Wiki data and tools" in 1.13+ wikis), and enter in a group name. If the group doesn't exist, an alphabetical listing of all assignable rights is given, each set by default at 'false'. If the group does exist, an alphabetical listing of all assignable rights is given with each set at the current value of that right (so if 'sysop' could 'delete', that would be shown as 'true'). If the group exists and it is deletable (see above section), then a group deletion form is displayed as well. Change the values you want, enter a comment, and click the confirm button. An explanation of the three toggle options is below:
 * True: Any user in that group has that right.
 * False: The group does not have the right (overrides previous trues of that right, e.g. in DefaultSettings.php and LocalSettings.php). Any other "True" defined in other group will override this setting
 * Never: Anyone belonging to this group loses the right irregardless of any other "True" or "False" declarations. This will not work unless the ExtendedPermissions plugin is installed

Special:SortPermissions: Browse to Special:SortPermissions (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Wiki data and tools" in 1.13+ wikis). You will be presented with a list of every permission and it's current sort status. Choose one of the options to sort it. If you have javascript enabled on your browser, you can add new groups and new sort types via two other forms at the bottom, as well as delete sort types and remove permissions from the sorting matrix (again, javascript must be enabled on your browser for that to work and removing permissions does not delete the permission, it only removes the current sort type set on it). Please note that if you add a sort type, it does not add the relevant MediaWiki message for you. You must edit MediaWiki:Grouppermissions-sort-sorttype, replacing "sorttype" with the type that you added. Added permissions do not do anything unless there is an extension or something else that uses it.

Special:RemoveUnusedGroups: Browse to Special:RemoveUnusedGroups (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Users and groups" in 1.13+ wikis). Then, click the button. Simple as that.

Plugins
This extension has the ability to be expanded upon non-intrusively via plugins. These plugins are all optional and will usually not break anything if disabled. Plugins may be found in the /plugins directory of this extension. All .php files inside of that directory will get automatically loaded by this extension as a plugin. Moving plugins you do not wish to enable to the /disabled sub-directory of /plugins will prevent them from being loaded.

A list of all available plugins is below. Note that not all of these plugins may be "official". Please check the author field in the extension infobox on each page to see who wrote it. Do not ask Skizzerz about bugs with plugins unless he is the author of them. It is recommended that you do not disable plugins marked with (core).
 * ExtendedPermissions (core)
 * CustomTabs (core)
 * CustomToolbox (core)

Plugin Developers
Everyone is welcome to develop plugins for this extension. However, please note the following:
 * Create a sub-page of this page, such as Extension:GroupPermissionsManager/MyPlugin and put the documentation there (look at existing ones for examples)
 * Be sure to have  in the  template call
 * Try to keep it simple, such as one file. Everything in the /plugins directory gets loaded automatically, so if you need multiple files, only put the main access point in the /plugins directory and the rest in a sub-directory.
 * Make it clear that people wishing to install the plugin should put all internationalization/localization files (i18n) in the /plugins/messages directory, where they will be automatically included with the main extension messages.  will then load all the default messages as well as your own ones.
 * Add your plugin to the list in the above section.
 * If your plugin only works for a specific version or above (such as 1.13), yet this extension supports a lower version, you may use the  function to check. The documentation for this function is located in the GroupPermissionsManager.php file.
 * As of now, this extension does not define any custom hooks. Future versions, however, may add in custom hooks for plugins to use (please leave feedback as to what sort of hooks you would like to see).

Download instructions
For version 2.0 of this extension, which works with MediaWiki versions 1.9.0 and above, please see this revision. For the latest version, download a snapshot or follow the instructions below.

If you wish to grab a specific plugin packaged with the core files, please see this page to download them.

Installation
If you are running MediaWiki version 1.12, you will need to follow the directions here if you want right descriptions to display properly!

To install this extension, add the following to LocalSettings.php:

Then, create the directory  and make sure that it is writable by the webserver. If you do not do this, the extension will not work. Afterwards, browse to your wiki's Special:Version to confirm installation of the extension.

User rights
The grouppermissions right is required to use Special:GroupPermissions and Special:SortPermissions. It is given to bureaucrats by default, but you may wish to change this.

The userrights right is required to use Special:RemoveUnusedGroups, also given to bureaucrats by default.

Patch
If you are running MediaWiki version 1.12.x or a 1.13.0 revision lower than r37292, you will need to follow the directions below if you want some right descriptions to display properly!

Edit, and add the following in the beginning of the wfMsgGetKey function from: to the following:

Requirements
This extension requires at least version 1.12.0 of MediaWiki. To check what version of MediaWiki you are running, visit the Special:Version page on your wiki.

If you are running MediaWiki version 1.12.x or a 1.13.0 revision lower than r37292, you will need to follow the directions below if you want some right descriptions to display properly!

For version 2.0 of this extension, which works with MediaWiki versions 1.9.0 and above, please see this revision.

Feedback and Bug Reports
You may either use the |talk page or Bugzilla to leave bug reports and feature requests. Please leave all other kinds of feedback on the talk page only.

'''Do not contact me or file a bug regarding a third-party plugin. Only contact me or file bugs for the extension itself and core plugins!'''

File a new bug on Bugzilla