Extension:MediaUploader/Configuration

There are two ways to configure MediaUploader's behavior:
 * 1) Via the global config (set in LocalSettings.php) – which influences the entire wiki.
 * 2) Via campaign configs, which modify the uploader only for some uploads (for example, when you want to organize a contest which requires the uploaders to add some extra info or limits their licensing choices). You can learn more about campaigns here.

Some configuration settings can only be changed in the global config.

Each configuration setting in this documentation has a set of helpful symbols on the right. Here is what they mean:
 * – this setting can be used in the global config.
 * – this setting can be used in campaign configs.
 * – this setting's value is fully parsed before being displayed. It means that you can use whatever wAcK y wikitext you want in it, including templates.

Config settings
See the subpages:
 * Upload form appearance
 * Licensing
 * Adding information to uploads and formatting it
 * Other config settings

Help! It's too complicated!
Don't worry, you can always just copy one of our prepared, ready-to-use configuration sets. They cover a few popular cases for wikis of different shapes and sizes.

Default settings and overriding them
MediaUploader comes with a set of default settings – you can find them here, in the source code, along with extra explanations.

You can override any part of the config both globally and in campaigns. In both cases, the configs are merged using the following algorithm:
 * Maps (associative arrays) are merged. If config B has the same key as config A, the value is recursively merged using these rules. If not, config A's value is used.
 * This means that to "unset" a value in a map you actually need to set to something – a null value, for example.
 * All other types of values (scalars, integer-indexed arrays) are simply replaced. If config B has the same key as config A, B's value is used. If not, config A's value is used.
 * The configs are merged in the following order: default MediaUploader config, global config set by the user, campaign config. That means that the campaign config is the most "important" one (it's applied last).

Technical notes
If you know what is a "hypergranular quantum cache eviction mesmerizer", read on. Just kidding. This stuff may be useful to sysadmins and wiki powerusers.
 * MediaUploader parses parts of its config, so it relies on caching to maintain snappy performance. It automatically purges caches after an edit to a campaign page or any template that it relies upon. However, it cannot detect changes in the global config (LocalSettings.php). If you make changes to the global config, go to the  page and perform a null edit (just open the editor and save). It will help.
 * What is the  page? I'm glad you ask. It's a "magic" page that serves as an "anchor" for the global config. When templates are used somewhere, MediaWiki must know what transcludes them, so that it can update those dependent pages appropriately. This page is exactly that – you will see it appear in "what transcludes this page" reports, if you use a template in the global config somewhere.
 * This page cannot be deleted or moved. If it's missing for whatever mysterious reason, it will just resurrect itself. It's got superpowers, don't mess with it.
 * You can do an identical null edit trick with campaign configs, if their cache is stuck for some reason.
 * Parsing configs and cache-splitting is not an exact science. MediaUploader splits the cache by campaign (obviously), target language, and user's gender setting. This should be enough for localizing messages and not being mean to people by using an improper pronoun. Other things will break, so for example, don't use custom parser functions that rely on the knowledge of the user's name (Extension:UserFunctions).
 * In campaigns the parser is told that it's parsing the corresponding campaign page (so,  will yield something like Campaign:WikiLovesPHP). Outside campaigns, it's told that it's parsing Special:MediaUploader.

todo
template:


 * Default

copyMetadataFeature
Whether to enable the feature for copying metadata across a batch of uploads.


 * Default

defaultCampaign
Default campaign to load when no other campaign was specified. Usually should be left empty.


 * Default

enableLicensePreference
TODO: remove, should be handled by hidden prefs core functionality

maxSimultaneousConnections
Maximum number of simultaneous upload requests.


 * Default

maxUploads
Maximum number of uploads for a given form.

Keys:
 * * – everyone
 * mass-upload – users with the  user right


 * Default

Loading messages
MediaUploader will automatically load all messages used in the global config. See also:.

Fields/inputs
Include here: fields, defaults, limits

Reorganize all this mess into something readable.

File description formatting
include here: autoAdd, missingCategoriesWikiText, trackingCategory

additionalMessages
An array of additional system messages to be loaded with MediaUploader. This is only useful if your campaigns define custom licenses or license groups. MediaUploader has no way of knowing about them when loading the global config, so you will have to list them manually in this setting.


 * Example

campaignSquidMaxAge
TODO: rename

campaignStatsMaxAge
Number of seconds to cache Campaign stats. Affects: uploaded media list and contributors count.


 * Default

chunkSize
When uploading large files, what size, in bytes, should each chunk be.


 * Default

languages
A list of languages and codes, for use in the description step, if you use multilingual inputs. By default initialized to a list of all available languages that have corresponding templates (in ISO 646 language codes).


 * Example

languageTemplateFixups
todo