Extension:GlobalPreferences

The GlobalPreferences extension allows a user to set some or all of their preferences to be used globally on all wikis in a wiki family. For example, you can set your skin to be the same on all wikis, but have different watchlist settings on different wikis. It is also possible for global preferences to be given local exceptions on particular wikis.

Although it is possible to have global user preferences without any extension by setting up a shared database with a shared table, the GlobalPreferences extension is useful for more varied use cases such as:


 * A user wants to set the same language on all wikis, but wants to keep one wiki on its default.
 * One wiki has a preference hidden with, and another doesn't.
 * A user wants to set a different skin on each wiki.
 * Two wikis have two different gadgets named the same.
 * A wiki has an extension installed which sets a preference, but that extension is not enabled on another wiki in the farm.

Installation
Before GlobalPreferences can work, you need to set up. This can be done with the CentralAuth extension (or other CentralIdLookup provider) but for most wiki families can more easily be done with shared database tables. (This will mean that users' email addresses, passwords, and real names will be set across all wikis, and won't be able to be set on a per-wiki basis.)

If using the shared tables approach, set the following in :

Then GlobalPreferences can be installed in the usual manner:

If you also have the Echo extension installed then GlobalPreferences must be loaded after Echo in LocalSettings.php.

Configuration



 * Name of the database to store global preferences in. If no value is given, will be used, and if that is empty  will be used. This database does not have to be one that is used for anything else, but often is set to the same as wherever central user data is stored.

Marking a preference as non-globalizable
Non-globalizable preferences are ignored by GlobalPreferences. If you have programmatically defined a preference (via the GetPreferences hook), then you can mark it as non-globalizable by setting the  property to.

API
The extension provides APIs to get and set local and global preferences. They are documented in API subpage.