Extension:Configure

The Configure extension allows bureaucrats (by default) to modify configuration settings of the wiki.

Installation

 * Download a snapshot and extract it to your extensions directory, see to select the good version.
 * Edit LocalSettings.php and add the following lines:

as mentioned, you have to call  function in LocalSettings.php because you may want to customize some settings of the extension and to prevent an attack, the settings have to be always defined (this is done by including the Configure.php file), even if they won't be changed because they can arbitrary be set if the register_globals feature of PHP is turned on.

By default, only some settings are editable, if you want to be able to edit all of them (like in version < 0.10.10), add the following line in LocalSettings.php:

Optimisation
The definition file for Special:Extensions (i.e. configurable extensions) is in a plain text format and will need to be parsed when accessing e.g. Special:Extensions or Special:ViewConfig. To speed up this operation, a PHP extension is provided in the load_txt_def subdirectory. If you want to install it, please read load_txt_def/INSTALL for instructions. Once installed, Configure will automatically use it.

Versions
For MediaWiki 1.7 to 1.12, either:
 * Download the 1.13 branch from Special:ExtensionDistributor/Configure (version 0.6.3)
 * Checkout the 0.8.12 version from subversion (revision 42961)

For MediaWiki 1.13:
 * Download the 1.13 branch from Special:ExtensionDistributor/Configure (version 0.6.3)
 * Checkout the 0.10.5 version from subversion (revision 43878)

For MediaWiki 1.14 and 1.15:
 * Download the 1.15 branch from Special:ExtensionDistributor/Configure (version 0.13.7)
 * Checkout the 0.13.20 version from subversion (revision 51319)

For MediaWiki 1.16 and greater:
 * Download the trunk version from Special:ExtensionDistributor/Configure

Configuration settings
This extension add some configuration settings. They are not editable through Special:Configure or Special:Extensions. You need to change them in LocalSettings.php.

$wgConfigureHandler
Configuration handler, either "files" or "db". See to choose your handler.

$wgConfigureFilesPath
The extension will require a directory to store the configuration and this directory have to be writable by the web server. The default path is the directory. You can use this setting to change it. Don't forget to override this variable between the time you include the Configure.php file and the time you call efConfigureSetup, otherwise your changes won't be used.

serialized directory may be publicly viewable (if using MediaWiki < 1.13 or a web server other than Apache), and users will be able to see the whole configuration, so please make it unreadable by web interface or change it to a directory that isn't accessible via the web.

$wgConfigureDatabase
Database used to store the configuration, if  is 'db'.

To use the local database's name and tables' prefix (or schema when using PostgreSQL) set it to

$wgConfigureAllowDeferSetup
Whether to allow to defer a part of efConfigureSetup until the cache objects are set by MediaWiki instead of doing it in efConfigureSetup. It is only used if $wgConfigureHandler is 'db'.

If you want to use $wgConfigureExtensionsVar (see below), you may need to set it to false, otherwise the variables won't be set in efConfigureSetup but later.

$wgConfigureFileSystemCache
Path for file-system cache, only works when $wgConfigureHandler is 'db'.

$wgConfigureFileSystemCacheExpiry
Expiry for the file-system cache, note that it is not purged when saving a new version of the configuration, so let this to a low value.

$wgConfigureWikis
Allows foreign wiki configuration. Can be either:
 * : allow any wiki
 * : don't allow any wiki (default)
 * an array: array of allowed wikis (e.g. $wgConfigureWikis = $wgLocalDatabases)

Users will need *-interwiki right to edit foreign wiki configuration (configure-interwiki, extensions-interwiki, viewconfig-interwiki)

$wgConfigureExtDir
Base directory for extensions files, only change it if you need to.

$wgConfigureAdditionalExtensions
Array of custom extensions (keys have no importance, it has the same format as $extensions in Configure.settings-ext.php)

Each value of this array should be an array with the following keys:
 * name: name of the extension (required)
 * dir: dir name of the extension, if different than extension's name
 * file: main file name, if different that name.php
 * settings: array of settings mapping setting's name to its type (see for the list of allowed types)
 * array: array types for settings defined as  above
 * view-restricted: list of settings that can only be viewed by users with extensions-all right
 * edit-restricted: list of settings that can only be modified by users with extensions-all right
 * schema: set it to true if the extension requires a database schema change
 * url: url to the documentation page

Example: In this case, the file to include is

$wgConfigureExtensionsVar
Allows to enable an extension by setting a variable instead of directly include the file.

You'll need to handle the variable and include yourself the extension's file. Format is

If you use database handler, you may need to set  to use it correctly.

$wgConfigureOnlyUseVarForExt
If this true, extensions will be considered as installed only if they are defined in $wgConfigureExtensionsVar, Configure won't check anymore for extensions in the file system.

$wgConfigureViewRestrictions
Array of supplementary view restrictions. Format is if multiple rights are given, the user must have all of them to see the setting.

$wgConfigureEditRestrictions
Array of supplementary edit restrictions. Format is if multiple rights are given, the user must have all of them to edit the setting.

$wgConfigureNotEditableSettings
Array of not editable settings, by anyone. They won't be saved in files or database.

$wgConfigureEditableSettings
Array of editable settings. If this is a non-empty array only the settings in this array will be allowed to be modified.

$wgConfigureAPI
Whether to use the API module.

$wgConfigureUpdateCacheEpoch
Whether to update $wgCacheEpoch when saving changes in Special:Configure.

$wgConfigureStyleVersion
Like $wgStyleVersion but for Configure itself. You shouldn't change it.

Special pages
This extension adds three special pages:

Special:Configure

 * Right needed to access this page: configure (given by default to bureaucrats)

It allows to configure settings of MediaWiki itself. That page shows all settings available for MediaWiki, they are groupped by function, like Manual:Configuration settings. Each setting has a link to its description page on this wiki. The list of old versions is displayed at the top of the page, by clicking on a version, it will show the configuration as it was at that time, so that the configuration can be reverted to any version.

Some settings are restricted and can only be changed by users with configure-all right. This include the following settings:
 * paths/files (because they require also "external" changes, i.e. server rewrite rules, squid configuration, ...)
 * database
 * settings containing password such as $wgSMTP
 * groups (to not allow users with only configure right to grant themself configure-all right)
 * $wgSecretKey and $wgProxyKey (they contain sensitive data)

Unsupported settings
Some settings are still uneditable because of their format. List of unsupported settings:
 * $wgDBservers
 * $wgLBFactoryConf
 * $wgExternalServers
 * $wgFileStore
 * $wgForeignFileRepos
 * $wgAntivirusSetup
 * $wgGrammarForms

Special:Extensions

 * Right needed to access this page: extensions (given by default to bureaucrats)

Same as Special:Configure, but for extensions. You need to put extensions in the extensions directory of your MediaWiki install or this extension won't detect them.

Some extensions requires a schema change. This extension cannot apply these patches, you'll need to do it by yourself.

List of supported extensions

 * AbsenteeLandlord
 * AbuseFilter
 * Admin Links
 * AjaxQueryPages
 * AjaxShowEditors
 * AntiBot
 * AntiSpoof
 * APC
 * Asksql
 * Assert Edit
 * AuthorProtect
 * Autoincrement
 * Babel
 * Back-and-Forth
 * Bad Image List
 * Blahtex
 * BlockTitles
 * BoardVote
 * BookInformation
 * BreadCrumbs
 * Call
 * CategoryIntersection
 * CategoryStepper
 * CategoryTree
 * catfeed
 * CentralAuth
 * CentralNotice
 * ChangeAuthor
 * CharInsert
 * CheckUser
 * Chemistry
 * Citation
 * Cite
 * SpecialCite
 * CleanChanges
 * Click
 * Collection
 * CommentPages
 * CommentSpammer
 * ConfirmAccount
 * ConfirmEdit
 * FancyCaptcha
 * MathCaptcha
 * ContactPage
 * Contribution Scores
 * Contributionseditcount
 * Contributors
 * ContributorsAddon
 * CountEdits
 * CreateBox
 * CrossNamespaceLinks
 * Crosswiki Blocking
 * CSS
 * DeleteBatch
 * DeletedContributions
 * DeleteQueue
 * DidYouMean
 * DisableSpecialPages
 * DismissableSiteNotice
 * Drafts
 * Duplicator
 * EasyTimeline
 * Editcount
 * EditOwn
 * EditSubpages
 * EditUser
 * ErrorHandler
 * ExpandTemplates
 * External Data
 * FileSearch
 * Find Spam
 * FlaggedRevs
 * ForcePreview
 * FormPreloadPostCache
 * Gadgets
 * GlobalBlocking
 * Gnuplot
 * Google AdSense
 * GoToCategory
 * GroupPortal
 * ImageMap
 * Inputbox
 * Intersection
 * InterwikiList
 * LinkSearch
 * Maintenance
 * MakeBot
 * Makesysop
 * MooTools 1.2 Core
 * NewUserMessage
 * Newuserlog
 * Nuke
 * OggHandler
 * OnlineStatus
 * OpenID
 * OpenSearchXml
 * Oversight
 * ParserFunctions
 * Password Reset
 * Poem
 * PovWatch
 * Purge
 * Redirect
 * Renameuser
 * Replace Text
 * Semantic Drilldown
 * Semantic Forms
 * Semantic MediaWiki
 * Semantic Result Formats
 * SkinPerNamespace
 * SkinPerPage
 * SocialProfile
 * SpamRegex
 * SpecialInterwiki
 * Stale Pages
 * SyntaxHighlight GeSHi
 * Title Blacklist
 * TitleKey
 * TorBlock
 * Translate
 * Uniwiki Authors
 * Uniwiki Auto Create Category Pages
 * Uniwiki Category Box at Top
 * Uniwiki CreatePage
 * Uniwiki CSS Hooks
 * Uniwiki Format Changes
 * Uniwiki Format FormatSearch
 * Uniwiki Generic Edit Page
 * Uniwiki Javascript
 * Uniwiki Layouts
 * Uniwiki Toolbar
 * User Merge and Delete
 * Username Blacklist
 * WikiHiero

Special:ViewConfig

 * Right needed to access this page: viewconfig (given by default to sysops)

This special page allows sysop (by default) to see the current configuration of the wiki.

The main view lists all configurations by date. You can see or edit any version of the configuration by clinking on the links.
 * Users with configure or extensions rights will have links to Special:Configure and/or Special:Extensions if they can access these pages.
 * Users with configure-interwiki, extensions-interwiki or viewconfig-interwiki rights will also have links to each wiki present in that version.

By selecting the versions with radio button and then selecting Compare selected versions, you'll see the diff between versions.

Maintenance scripts
This extension has some maintenance scripts. They assume that the extension is installed in the extensions directory of the MediaWiki software (i.e. files are in the extensions/Configure directory), if this is not the case, you can set the  environment variable to the path of your MediaWiki installation and the scripts will use it.

findSettings.php
This script helps to develop the extension and maintain Manual:Configuration settings. If the  option is passed, then it searches for extensions settings instead of MediaWiki settings, otherwise it searches for settings in   and compares them with the ones registred in the extension, Manual:Configuration settings (if the   option is passed to the script) or Manual:Configuration settings (alphabetical) (if the   options are passed to the script). May have some false positives if not using the latest development version.

manage.php
This script helps to manage configuration files. It should work even if the current version is broken. You can:
 * list all versions with the  option
 * delete a specific version with the  option (warning: you cannot undelete that version anymore).
 * revert to a specific version with the  option (i.e. set that version as working version)

migrateFiles.php
This scripts reads all versions stored in serialized files and save them in plain PHP files, this is required for people updating from a version older that 0.10.11 and using files handler.

migrateToDB.php
This scripts reads all versions stored in files and save in the database.

If you run this script twice, you'll have duplicate entries since this script doesn't detect that it has already been run.

writePHP.php
This script writes settings stored in serialized format in PHP script. Options:
 * : write  for all wikis, if not passed it will write variables as in the default LocalSettings.php
 * : write settings of a specific wiki (not used if you pass )
 * : write settings taken from a specific version (default: current)
 * : file used to store the ouput of the script (default: STDOUT)

Handler comparison
This extension can store the configuration in two ways: database or files. You can select it in $wgConfigureHandler.

files
This the default handler (for compatibiliy with pre-0.9.0 versions). It saves configuration in files (one by version). You can change the path in $wgConfigureFilesPath.


 * [[Image:Symbol support vote.svg|15px]] simple to use
 * [[Image:Symbol support vote.svg|15px]] able to modify all settings


 * [[Image:Symbol oppose vote.svg|15px]] can cause problem when using multiple servers
 * [[Image:Symbol oppose vote.svg|15px]] files can become very huge if configuring multiple wikis

database
This handler was introduced in version 0.9.0. The database's name can be configured in $wgConfigureDatabase. You'll need to apply the  patch included with the extension in that database.


 * [[Image:Symbol support vote.svg|15px]] highly recommended for multiple wikis or multiple servers


 * [[Image:Symbol oppose vote.svg|15px]] might be difficult to configure properly for some users
 * [[Image:Symbol oppose vote.svg|15px]] cannot modify database and memcached settings

Troubleshooting
If an admin changed the settings in a way that the wiki can't work anymore, you can do either: since data are cached, to might take a while before it produces any effect.
 * use the manage.php command line script to revert the configuration to an older version. This script should work even if the configuration is broken.
 * directly update the configuration to fall back to the default configuration that is in LocalSettings.php:
 * if you have file-based storage: drop the conf-now.ser file you'll find in $wgConfigureFilesPath directory.
 * if you have database-based storage: set cv_is_latest field to 0 in the config_version table for the versions you don't want to be "active".

Bugs

 * Please report bugs on bugzilla, with Product=MediaWiki extensions and Component=Configure. Thank you.
 * Open issues

Read only mode
This extension has also a read only mode. To use this, install the extension as stated above, but don't call the  function.

In that mode, Special:Configure and Special:Extension will display an error, but Special:ViewConfig will show the current configuration without history or wiki selection.

Advanced use
This extension uses an extended class of SiteConfiguration that replaces $wgConf. For "normal" installation, it isn't useful, but for some wiki farms, it will allow to configure multiple wikis with only one copy of the software. To change the configuration you want to load, pass an argument to. A user with 'configure-interwiki' right will also be able to change any configuration.

By using this object to set your default values, settings which have the same value as the one set in  will not be saved in the configuration or for array settings defined with "+" (see Manual:$wgConf, requires MediaWiki 1.14+) will only saves values that are differents instead of the whole settings.

Settings types
List of allowed values for settings types (e.g.  key of $wgConfigureAdditionalExtensions):


 * : boolean
 * : string
 * : integer
 * : language code
 * An array: array of allowed values (will produce radio buttons). The format is  where value1 and value2 are the values to use if the radio is checked and desc1 and desc2 the description of the radion button, as displayed to th user.
 * : arrays (see below)

Arrays
Arrays need more a more specific type too. This is not declared at the same place than the type (e.g. in  for $wgConfigureAdditionalExtensions)
 * : array of strings where keys have no importance
 * : like simple, but values are array with 2 values (for $wgImageLimits).
 * : associative arrays, values are strings
 * : single dimension array with namespaces numbers in the key and a boolean value
 * : same as ns-bool but with a string in the value
 * : same as ns-text, but the value is an array of strings
 * : like simple, but values are restricted to namespaces index
 * two dimensions array with group name in first key, right name in the second and boolean value (for $wgGroupPermissions)
 * : two dimensions array with group name in first key and then a 'simple' array
 * : specific for $wgRateLimits
 * : specific for $wgAutopromote
 * : other types of arrays not currenty supported