summaryrefslogtreecommitdiff
path: root/includes/DefaultSettings.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/DefaultSettings.php')
-rw-r--r--includes/DefaultSettings.php1382
1 files changed, 895 insertions, 487 deletions
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 78568107..71268932 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -15,7 +15,7 @@
* performed in LocalSettings.php.
*
* Documentation is in the source and on:
- * http://www.mediawiki.org/wiki/Manual:Configuration_settings
+ * https://www.mediawiki.org/wiki/Manual:Configuration_settings
*
* @warning Note: this (and other things) will break if the autoloader is not
* enabled. Please include includes/AutoLoader.php before including this file.
@@ -60,10 +60,22 @@ if ( !defined( 'MEDIAWIKI' ) ) {
$wgConf = new SiteConfiguration;
/**
+ * Registry of factory functions to create config objects:
+ * The 'main' key must be set, and the value should be a valid
+ * callable.
+ * @since 1.23
+ */
+$wgConfigRegistry = array(
+ 'main' => 'GlobalVarConfig::newInstance'
+);
+
+/**
* MediaWiki version number
+ * Note that MediaWikiVersionFetcher::fetchVersion() uses a regex to check this.
+ * Using single quotes is, therefore, important here.
* @since 1.2
*/
-$wgVersion = '1.22.15';
+$wgVersion = '1.24.1';
/**
* Name of the site. It must be changed in LocalSettings.php
@@ -97,6 +109,13 @@ $wgServer = WebRequest::detectServer();
*/
$wgCanonicalServer = false;
+/**
+ * Server name. This is automatically computed by parsing the bare
+ * hostname out of $wgCanonicalServer. It should not be customized.
+ * @since 1.24
+ */
+$wgServerName = false;
+
/************************************************************************//**
* @name Script path settings
* @{
@@ -236,7 +255,7 @@ $wgFileCacheDirectory = false;
/**
* The URL path of the wiki logo. The logo size should be 135x135 pixels.
- * Defaults to "{$wgStylePath}/common/images/wiki.png".
+ * Defaults to "$wgResourceBasePath/resources/assets/wiki.png".
*/
$wgLogo = false;
@@ -339,11 +358,6 @@ $wgEnableAsyncUploads = false;
$wgIllegalFileChars = ":";
/**
- * @deprecated since 1.17 use $wgDeletedDirectory
- */
-$wgFileStore = array();
-
-/**
* What directory to place deleted uploads in.
* Defaults to "{$wgUploadDirectory}/deleted".
*/
@@ -355,11 +369,20 @@ $wgDeletedDirectory = false;
$wgImgAuthDetails = false;
/**
- * If this is enabled, img_auth.php will not allow image access unless the wiki
- * is private. This improves security when image uploads are hosted on a
- * separate domain.
+ * Map of relative URL directories to match to internal mwstore:// base storage paths.
+ * For img_auth.php requests, everything after "img_auth.php/" is checked to see
+ * if starts with any of the prefixes defined here. The prefixes should not overlap.
+ * The prefix that matches has a corresponding storage path, which the rest of the URL
+ * is assumed to be relative to. The file at that path (or a 404) is send to the client.
+ *
+ * Example:
+ * $wgImgAuthUrlPathMap['/timeline/'] = 'mwstore://local-fs/timeline-render/';
+ * The above maps ".../img_auth.php/timeline/X" to "mwstore://local-fs/timeline-render/".
+ * The name "local-fs" should correspond by name to an entry in $wgFileBackends.
+ *
+ * @see $wgFileBackends
*/
-$wgImgAuthPublicTest = true;
+$wgImgAuthUrlPathMap = array();
/**
* File repository structures
@@ -384,8 +407,6 @@ $wgImgAuthPublicTest = true;
* url : base URL to the root of the zone
* urlsByExt : map of file extension types to base URLs
* (useful for using a different cache for videos)
- * handlerUrl : base script-handled URL to the root of the zone
- * (see FileRepo::getZoneHandlerUrl() function)
* Zones default to using "<repo name>-<zone name>" as the container name
* and default to using the container root as the zone's root directory.
* Nesting of zone locations within other zones should be avoided.
@@ -574,7 +595,7 @@ $wgCacheSharedUploads = true;
/**
* Allow for upload to be copied from an URL.
- * The timeout for copy uploads is set by $wgHTTPTimeout.
+ * The timeout for copy uploads is set by $wgCopyUploadTimeout.
* You have to assign the user right 'upload_by_url' to a user group, to use this.
*/
$wgAllowCopyUploads = false;
@@ -739,7 +760,7 @@ $wgFileBlacklist = array(
'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );
/**
- * Files with these mime types will never be allowed as uploads
+ * Files with these MIME types will never be allowed as uploads
* if $wgVerifyMimeType is enabled.
*/
$wgMimeTypeBlacklist = array(
@@ -791,7 +812,7 @@ $wgDisableUploadScriptChecks = false;
$wgUploadSizeWarning = false;
/**
- * list of trusted media-types and mime types.
+ * list of trusted media-types and MIME types.
* Use the MEDIATYPE_xxx constants to represent media types.
* This list is used by File::isSafeFile
*
@@ -839,13 +860,22 @@ $wgContentHandlers = array(
CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler',
// dumb version, no syntax highlighting
CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler',
+ // simple implementation, for use by extensions, etc.
+ CONTENT_MODEL_JSON => 'JsonContentHandler',
// dumb version, no syntax highlighting
CONTENT_MODEL_CSS => 'CssContentHandler',
- // plain text, for use by extensions etc
+ // plain text, for use by extensions, etc.
CONTENT_MODEL_TEXT => 'TextContentHandler',
);
/**
+ * Whether to enable server-side image thumbnailing. If false, images will
+ * always be sent to the client in full resolution, with appropriate width= and
+ * height= attributes on the <img> tag for the client to do its own scaling.
+ */
+$wgUseImageResize = true;
+
+/**
* Resizing can be done using PHP's internal image libraries or using
* ImageMagick or another third-party converter, e.g. GraphicMagick.
* These support more file formats than PHP, which only supports PNG,
@@ -861,11 +891,6 @@ $wgUseImageMagick = false;
$wgImageMagickConvertCommand = '/usr/bin/convert';
/**
- * The identify command shipped with ImageMagick
- */
-$wgImageMagickIdentifyCommand = '/usr/bin/identify';
-
-/**
* Sharpening parameter to ImageMagick
*/
$wgSharpenParameter = '0x0.4';
@@ -921,7 +946,8 @@ $wgSVGConverters = array(
'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output',
'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output',
'inkscape' => '$path/inkscape -z -w $width -f $input -e $output',
- 'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input',
+ 'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d '
+ . '$output $input',
'rsvg' => '$path/rsvg -w $width -h $height $input $output',
'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
@@ -1008,6 +1034,14 @@ $wgTiffThumbnailType = false;
$wgThumbnailEpoch = '20030516000000';
/**
+ * Certain operations are avoided if there were too many recent failures,
+ * for example, thumbnail generation. Bump this value to invalidate all
+ * memory of failed operations and thus allow further attempts to resume.
+ * This is useful when a cause for the failures has been found and fixed.
+ */
+$wgAttemptFailureEpoch = 1;
+
+/**
* If set, inline scaled images will still produce "<img>" tags ready for
* output instead of showing an error message.
*
@@ -1035,11 +1069,6 @@ $wgGenerateThumbnailOnParse = true;
$wgShowArchiveThumbnails = true;
/**
- * Obsolete, always true, kept for compatibility with extensions
- */
-$wgUseImageResize = true;
-
-/**
* If set to true, images that contain certain the exif orientation tag will
* be rotated accordingly. If set to null, try to auto-detect whether a scaler
* is available that can rotate.
@@ -1108,45 +1137,45 @@ $wgAntivirusSetup = array(
$wgAntivirusRequired = true;
/**
- * Determines if the mime type of uploaded files should be checked
+ * Determines if the MIME type of uploaded files should be checked
*/
$wgVerifyMimeType = true;
/**
- * Sets the mime type definition file to use by MimeMagic.php.
+ * Sets the MIME type definition file to use by MimeMagic.php.
* Set to null, to use built-in defaults only.
* example: $wgMimeTypeFile = '/etc/mime.types';
*/
$wgMimeTypeFile = 'includes/mime.types';
/**
- * Sets the mime type info file to use by MimeMagic.php.
+ * Sets the MIME type info file to use by MimeMagic.php.
* Set to null, to use built-in defaults only.
*/
$wgMimeInfoFile = 'includes/mime.info';
/**
- * Sets an external mime detector program. The command must print only
- * the mime type to standard output.
+ * Sets an external MIME detector program. The command must print only
+ * the MIME type to standard output.
* The name of the file to process will be appended to the command given here.
- * If not set or NULL, mime_content_type will be used if available.
+ * If not set or NULL, PHP's fileinfo extension will be used if available.
*
* @par Example:
* @code
- * #$wgMimeDetectorCommand = "file -bi"; # use external mime detector (Linux)
+ * #$wgMimeDetectorCommand = "file -bi"; # use external MIME detector (Linux)
* @endcode
*/
$wgMimeDetectorCommand = null;
/**
- * Switch for trivial mime detection. Used by thumb.php to disable all fancy
+ * Switch for trivial MIME detection. Used by thumb.php to disable all fancy
* things, because only a few types of images are needed and file extensions
* can be trusted.
*/
$wgTrivialMimeDetection = false;
/**
- * Additional XML types we can allow via mime-detection.
+ * Additional XML types we can allow via MIME-detection.
* array = ( 'rootElement' => 'associatedMimeType' )
*/
$wgXMLMimeTypes = array(
@@ -1188,6 +1217,34 @@ $wgThumbLimits = array(
);
/**
+ * When defined, is an array of image widths used as buckets for thumbnail generation.
+ * The goal is to save resources by generating thumbnails based on reference buckets instead of
+ * always using the original. This will incur a speed gain but cause a quality loss.
+ *
+ * The buckets generation is chained, with each bucket generated based on the above bucket
+ * when possible. File handlers have to opt into using that feature. For now only BitmapHandler
+ * supports it.
+ */
+$wgThumbnailBuckets = null;
+
+/**
+ * When using thumbnail buckets as defined above, this sets the minimum distance to the bucket
+ * above the requested size. The distance represents how many extra pixels of width the bucket
+ * needs in order to be used as the reference for a given thumbnail. For example, with the
+ * following buckets:
+ *
+ * $wgThumbnailBuckets = array ( 128, 256, 512 );
+ *
+ * and a distance of 50:
+ *
+ * $wgThumbnailMinimumBucketDistance = 50;
+ *
+ * If we want to render a thumbnail of width 220px, the 512px bucket will be used,
+ * because 220 + 50 = 270 and the closest bucket bigger than 270px is 512.
+ */
+$wgThumbnailMinimumBucketDistance = 50;
+
+/**
* Default parameters for the "<gallery>" tag
*/
$wgGalleryOptions = array(
@@ -1251,7 +1308,7 @@ $wgDjvuTxt = null;
* Path of the djvutoxml executable
* This works like djvudump except much, much slower as of version 3.5.
*
- * For now we recommend you use djvudump instead. The djvuxml output is
+ * For now we recommend you use djvudump instead. The djvuxml output is
* probably more stable, so we'll switch back to it as soon as they fix
* the efficiency problem.
* http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
@@ -1265,7 +1322,7 @@ $wgDjvuToXML = null;
/**
* Shell command for the DJVU post processor
- * Default: pnmtopng, since ddjvu generates ppm output
+ * Default: pnmtojpeg, since ddjvu generates ppm output
* Set this to false to output the ppm file directly.
*/
$wgDjvuPostProcessor = 'pnmtojpeg';
@@ -1284,24 +1341,27 @@ $wgDjvuOutputExtension = 'jpg';
* @{
*/
-$serverName = substr( $wgServer, strrpos( $wgServer, '/' ) + 1 );
/**
* Site admin email address.
+ *
+ * Defaults to "wikiadmin@{$wgServerName}".
*/
-$wgEmergencyContact = 'wikiadmin@' . $serverName;
+$wgEmergencyContact = false;
/**
* Password reminder email address.
*
* The address we should use as sender when a user is requesting his password.
+ *
+ * Defaults to "apache@{$wgServerName}".
*/
-$wgPasswordSender = 'apache@' . $serverName;
-
-unset( $serverName ); # Don't leak local variables to global scope
+$wgPasswordSender = false;
/**
* Password reminder name
+ *
+ * @deprecated since 1.23; use the system message 'emailsender' instead.
*/
$wgPasswordSenderName = 'MediaWiki Mail';
@@ -1352,6 +1412,18 @@ $wgNewPasswordExpiry = 3600 * 24 * 7;
$wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60;
/**
+ * The number of days that a user's password is good for. After this number of days, the
+ * user will be asked to reset their password. Set to false to disable password expiration.
+ */
+$wgPasswordExpirationDays = false;
+
+/**
+ * If a user's password is expired, the number of seconds when they can still login,
+ * and cancel their password change, but are sent to the password change form on each login.
+ */
+$wgPasswordExpireGrace = 3600 * 24 * 7; // 7 days
+
+/**
* SMTP Mode.
*
* For using a direct (authenticated) SMTP server connection.
@@ -1469,7 +1541,7 @@ $wgUsersNotifiedOnAllChanges = array();
$wgDBserver = 'localhost';
/**
- * Database port number (for PostgreSQL)
+ * Database port number (for PostgreSQL and Microsoft SQL Server).
*/
$wgDBport = 5432;
@@ -1495,11 +1567,21 @@ $wgDBtype = 'mysql';
/**
* Whether to use SSL in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_SSL flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
*/
$wgDBssl = false;
/**
* Whether to use compression in DB connection.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_COMPRESS flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
*/
$wgDBcompress = false;
@@ -1551,7 +1633,7 @@ $wgSQLMode = '';
/**
* Mediawiki schema
*/
-$wgDBmwschema = 'mediawiki';
+$wgDBmwschema = null;
/**
* To override default SQLite data directory ($docroot/../data)
@@ -1582,10 +1664,10 @@ $wgAllDBsAreLocalhost = false;
* $wgSharedPrefix is the table prefix for the shared database. It defaults to
* $wgDBprefix.
*
- * @deprecated In new code, use the $wiki parameter to wfGetLB() to access
- * remote databases. Using wfGetLB() allows the shared database to reside on
- * separate servers to the wiki's own database, with suitable configuration
- * of $wgLBFactoryConf.
+ * @deprecated since 1.21 In new code, use the $wiki parameter to wfGetLB() to
+ * access remote databases. Using wfGetLB() allows the shared database to
+ * reside on separate servers to the wiki's own database, with suitable
+ * configuration of $wgLBFactoryConf.
*/
$wgSharedDB = null;
@@ -1607,8 +1689,13 @@ $wgSharedTables = array( 'user', 'user_properties' );
* - dbname: Default database name
* - user: DB user
* - password: DB password
- * - type: "mysql" or "postgres"
- * - load: ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0
+ * - type: DB type
+ *
+ * - load: Ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0.
+ * If this is zero for any given server, no normal query traffic will be
+ * sent to it. It will be excluded from lag checks in maintenance scripts.
+ * The only way it can receive traffic is if groupLoads is used.
+ *
* - groupLoads: array of load ratios, the key is the query group name. A query may belong
* to several groups, the most specific group defined here is used.
*
@@ -1623,7 +1710,6 @@ $wgSharedTables = array( 'user', 'user_properties' );
* if available
*
* - max lag: (optional) Maximum replication lag before a slave will taken out of rotation
- * - max threads: (optional) Maximum number of running threads
*
* These and any other user-defined properties will be assigned to the mLBInfo member
* variable of the Database object.
@@ -1654,13 +1740,14 @@ $wgDBservers = false;
* The class identified here is responsible for reading $wgDBservers,
* $wgDBserver, etc., so overriding it may cause those globals to be ignored.
*
- * The LBFactory_Multi class is provided for this purpose, please see
- * includes/db/LBFactory_Multi.php for configuration information.
+ * The LBFactoryMulti class is provided for this purpose, please see
+ * includes/db/LBFactoryMulti.php for configuration information.
*/
-$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
+$wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
/**
* How long to wait for a slave to catch up to the master
+ * @deprecated since 1.24
*/
$wgMasterWaitTimeout = 10;
@@ -1690,11 +1777,6 @@ $wgDBerrorLog = false;
$wgDBerrorLogTZ = false;
/**
- * When to give an error message
- */
-$wgDBClusterTimeout = 10;
-
-/**
* Scale load balancer polling time so that under overload conditions, the
* database server receives a SHOW STATUS query at an average interval of this
* many microseconds
@@ -1767,6 +1849,11 @@ $wgSlaveLagWarning = 10;
*/
$wgSlaveLagCritical = 30;
+/**
+ * Use Windows Authentication instead of $wgDBuser / $wgDBpassword for MS SQL Server
+ */
+$wgDBWindowsAuthentication = false;
+
/**@}*/ # End of DB settings }
/************************************************************************//**
@@ -1793,7 +1880,7 @@ $wgCompressRevisions = false;
*
* CAUTION: Access to database might lead to code execution
*/
-$wgExternalStores = false;
+$wgExternalStores = array();
/**
* An array of external MySQL servers.
@@ -1806,7 +1893,7 @@ $wgExternalStores = false;
* );
* @endcode
*
- * Used by LBFactory_Simple, may be ignored if $wgLBFactoryConf is set to
+ * Used by LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
* another class.
*/
$wgExternalServers = array();
@@ -1921,9 +2008,6 @@ $wgCacheDirectory = false;
* - CACHE_DB: Store cache objects in the DB
* - CACHE_MEMCACHED: MemCached, must specify servers in $wgMemCachedServers
* - CACHE_ACCEL: APC, XCache or WinCache
- * - CACHE_DBA: Use PHP's DBA extension to store in a DBM-style
- * database. This is slow, and is not recommended for
- * anything other than debugging.
* - (other): A string may be used which identifies a cache
* configuration in $wgObjectCaches.
*
@@ -1976,15 +2060,10 @@ $wgLanguageConverterCacheType = CACHE_ANYTHING;
* the value is an associative array of parameters. The "class" parameter is the
* class name which will be used. Alternatively, a "factory" parameter may be
* given, giving a callable function which will generate a suitable cache object.
- *
- * The other parameters are dependent on the class used.
- * - CACHE_DBA uses $wgTmpDirectory by default. The 'dir' parameter let you
- * overrides that.
*/
$wgObjectCaches = array(
CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
- CACHE_DBA => array( 'class' => 'DBABagOStuff' ),
CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
@@ -1999,16 +2078,32 @@ $wgObjectCaches = array(
);
/**
- * The expiry time for the parser cache, in seconds.
- * The default is 86400 (one day).
+ * Map of bloom filter store names to configuration arrays.
+ *
+ * Example:
+ * $wgBloomFilterStores['main'] = array(
+ * 'cacheId' => 'main-v1',
+ * 'class' => 'BloomCacheRedis',
+ * 'redisServers' => array( '127.0.0.1:6379' ),
+ * 'redisConfig' => array( 'connectTimeout' => 2 )
+ * );
+ *
+ * A primary bloom filter must be created manually.
+ * Example in eval.php:
+ * <code>
+ * BloomCache::get( 'main' )->init( 'shared', 1000000000, .001 );
+ * </code>
+ * The size should be as large as practical given wiki size and resources.
+ *
+ * @since 1.24
*/
-$wgParserCacheExpireTime = 86400;
+$wgBloomFilterStores = array();
/**
- * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php>
- * to use as CACHE_DBA backend.
+ * The expiry time for the parser cache, in seconds.
+ * The default is 86400 (one day).
*/
-$wgDBAhandler = 'db3';
+$wgParserCacheExpireTime = 86400;
/**
* Deprecated alias for $wgSessionsInObjectCache.
@@ -2118,6 +2213,12 @@ $wgCachePages = true;
$wgCacheEpoch = '20030516000000';
/**
+ * Directory where GitInfo will look for pre-computed cache files. If false,
+ * $wgCacheDirectory/gitinfo will be used.
+ */
+$wgGitInfoCacheDirectory = false;
+
+/**
* Bump this number when changing the global style sheets and JavaScript.
*
* It should be appended in the query string of static CSS and JS includes,
@@ -2129,7 +2230,7 @@ $wgStyleVersion = '303';
/**
* This will cache static pages for non-logged-in users to reduce
* database traffic on public sites.
- * Must set $wgShowIPinHeader = false
+ * Automatically sets $wgShowIPinHeader = false
* ResourceLoader requests to default language and skins are cached
* as well as single module requests.
*/
@@ -2218,7 +2319,7 @@ $wgInvalidateCacheOnLocalSettingsChange = true;
* although they are referred to as Squid settings for historical reasons.
*
* Achieving a high hit ratio with an HTTP proxy requires special
- * configuration. See http://www.mediawiki.org/wiki/Manual:Squid_caching for
+ * configuration. See https://www.mediawiki.org/wiki/Manual:Squid_caching for
* more details.
*
* @{
@@ -2226,7 +2327,7 @@ $wgInvalidateCacheOnLocalSettingsChange = true;
/**
* Enable/disable Squid.
- * See http://www.mediawiki.org/wiki/Manual:Squid_caching
+ * See https://www.mediawiki.org/wiki/Manual:Squid_caching
*/
$wgUseSquid = false;
@@ -2285,7 +2386,9 @@ $wgSquidServers = array();
/**
* As above, except these servers aren't purged on page changes; use to set a
- * list of trusted proxies, etc.
+ * list of trusted proxies, etc. Supports both individual IP addresses and
+ * CIDR blocks.
+ * @since 1.23 Supports CIDR ranges
*/
$wgSquidServersNoPurge = array();
@@ -2369,42 +2472,6 @@ $wgSquidPurgeUseHostHeader = true;
$wgHTCPRouting = array();
/**
- * @deprecated since 1.22, please use $wgHTCPRouting instead.
- *
- * Whenever this is set and $wgHTCPRouting evaluates to false, $wgHTCPRouting
- * will be set to this value.
- * This is merely for back compatibility.
- *
- * @since 1.20
- */
-$wgHTCPMulticastRouting = null;
-
-/**
- * HTCP multicast address. Set this to a multicast IP address to enable HTCP.
- *
- * Note that MediaWiki uses the old non-RFC compliant HTCP format, which was
- * present in the earliest Squid implementations of the protocol.
- *
- * This setting is DEPRECATED in favor of $wgHTCPRouting , and kept for
- * backwards compatibility only. If $wgHTCPRouting is set, this setting is
- * ignored. If $wgHTCPRouting is not set and this setting is, it is used to
- * populate $wgHTCPRouting.
- *
- * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting and since 1.22 in
- * favor of $wgHTCPRouting.
- */
-$wgHTCPMulticastAddress = false;
-
-/**
- * HTCP multicast port.
- * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting and since 1.22 in
- * favor of $wgHTCPRouting.
- *
- * @see $wgHTCPMulticastAddress
- */
-$wgHTCPPort = 4827;
-
-/**
* HTCP multicast TTL.
* @see $wgHTCPRouting
*/
@@ -2467,6 +2534,21 @@ $wgInterwikiMagic = true;
$wgHideInterlanguageLinks = false;
/**
+ * List of additional interwiki prefixes that should be treated as
+ * interlanguage links (i.e. placed in the sidebar).
+ * Notes:
+ * - This will not do anything unless the prefixes are defined in the interwiki
+ * map.
+ * - The display text for these custom interlanguage links will be fetched from
+ * the system message "interlanguage-link-xyz" where xyz is the prefix in
+ * this array.
+ * - A friendly name for each site, used for tooltip text, may optionally be
+ * placed in the system message "interlanguage-link-sitename-xyz" where xyz is
+ * the prefix in this array.
+ */
+$wgExtraInterlanguageLinkPrefixes = array();
+
+/**
* List of language names or overrides for default names in Names.php
*/
$wgExtraLanguageNames = array();
@@ -2642,11 +2724,6 @@ $wgDisableLangConversion = false;
$wgDisableTitleConversion = false;
/**
- * Whether to enable canonical language links in meta data.
- */
-$wgCanonicalLanguageLinks = true;
-
-/**
* Default variant code, if false, the default will be the language code
*/
$wgDefaultLanguageVariant = false;
@@ -2794,6 +2871,23 @@ $wgHtml5 = true;
$wgHtml5Version = null;
/**
+ * Temporary variable that allows HTMLForms to be rendered as tables.
+ * Table based layouts cause various issues when designing for mobile.
+ * This global allows skins or extensions a means to force non-table based rendering.
+ * Setting to false forces form components to always render as div elements.
+ * @since 1.24
+ */
+$wgHTMLFormAllowTableFormat = true;
+
+/**
+ * Temporary variable that applies MediaWiki UI wherever it can be supported.
+ * Temporary variable that should be removed when mediawiki ui is more
+ * stable and change has been communicated.
+ * @since 1.24
+ */
+$wgUseMediaWikiUIEverywhere = false;
+
+/**
* Enabled RDFa attributes for use in wikitext.
* NOTE: Interaction with HTML5 is somewhat underspecified.
*/
@@ -2834,7 +2928,7 @@ $wgWellFormedXml = true;
* Normally we wouldn't have to define this in the root "<html>"
* element, but IE needs it there in some circumstances.
*
- * This is ignored if $wgMimeType is set to a non-XML mimetype.
+ * This is ignored if $wgMimeType is set to a non-XML MIME type.
*/
$wgXhtmlNamespaces = array();
@@ -2855,11 +2949,6 @@ $wgShowIPinHeader = true;
$wgSiteNotice = '';
/**
- * A subtitle to add to the tagline, for skins that have it/
- */
-$wgExtraSubtitle = '';
-
-/**
* If this is set, a "donate" link will appear in the sidebar. Set it to a URL.
*/
$wgSiteSupportPage = '';
@@ -2873,24 +2962,29 @@ $wgValidateAllHtml = false;
/**
* Default skin, for new users and anonymous visitors. Registered users may
* change this to any one of the other available skins in their preferences.
- * This has to be completely lowercase; see the "skins" directory for the list
- * of available skins.
*/
$wgDefaultSkin = 'vector';
/**
- * Specify the name of a skin that should not be presented in the list of
- * available skins. Use for blacklisting a skin which you do not want to
- * remove from the .../skins/ directory
+ * Fallback skin used when the skin defined by $wgDefaultSkin can't be found.
+ *
+ * @since 1.24
*/
-$wgSkipSkin = '';
+$wgFallbackSkin = 'fallback';
/**
- * Array for more like $wgSkipSkin.
+ * Specify the names of skins that should not be presented in the list of
+ * available skins in user preferences. If you want to remove a skin entirely,
+ * remove it from the skins/ directory and its entry from LocalSettings.php.
*/
$wgSkipSkins = array();
/**
+ * @deprecated since 1.23; use $wgSkipSkins instead
+ */
+$wgSkipSkin = '';
+
+/**
* Allow user Javascript page?
* This enables a lot of neat customizations, but may
* increase security risk to users and server load.
@@ -3010,7 +3104,8 @@ $wgFooterIcons = array(
),
"poweredby" => array(
"mediawiki" => array(
- "src" => null, // Defaults to "$wgStylePath/common/images/poweredby_mediawiki_88x31.png"
+ // src defaults to "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png"
+ "src" => null,
"url" => "//www.mediawiki.org/",
"alt" => "Powered by MediaWiki",
)
@@ -3026,33 +3121,11 @@ $wgFooterIcons = array(
$wgUseCombinedLoginLink = false;
/**
- * Search form look for Vector skin only.
- * - true = use an icon search button
- * - false = use Go & Search buttons
- */
-$wgVectorUseSimpleSearch = true;
-
-/**
- * Watch and unwatch as an icon rather than a link for Vector skin only.
- * - true = use an icon watch/unwatch button
- * - false = use watch/unwatch text link
- */
-$wgVectorUseIconWatch = true;
-
-/**
* Display user edit counts in various prominent places.
*/
$wgEdititis = false;
/**
- * Better directionality support (bug 6100 and related).
- * Removed in 1.18, still kept here for LiquidThreads backwards compatibility.
- *
- * @deprecated since 1.18
- */
-$wgBetterDirectionality = true;
-
-/**
* Some web hosts attempt to rewrite all responses with a 404 (not found)
* status code, mangling or hiding MediaWiki's output. If you are using such a
* host, you should start looking for a better one. While you're doing that,
@@ -3083,6 +3156,14 @@ $wgShowRollbackEditCount = 10;
*/
$wgEnableCanonicalServerLink = false;
+/**
+ * When OutputHandler is used, mangle any output that contains
+ * <cross-domain-policy>. Without this, an attacker can send their own
+ * cross-domain policy unless it is prevented by the crossdomain.xml file at
+ * the domain root.
+ */
+$wgMangleFlashPolicy = true;
+
/** @} */ # End of output format settings }
/*************************************************************************//**
@@ -3110,16 +3191,118 @@ $wgEnableCanonicalServerLink = false;
$wgResourceModules = array();
/**
+ * Skin-specific styles for resource modules.
+ *
+ * These are later added to the 'skinStyles' list of the existing module. The 'styles' list can
+ * not be modified or disabled.
+ *
+ * For example, here is a module "bar" and how skin Foo would provide additional styles for it.
+ *
+ * @par Example:
+ * @code
+ * $wgResourceModules['bar'] = array(
+ * 'scripts' => 'resources/bar/bar.js',
+ * 'styles' => 'resources/bar/main.css',
+ * );
+ *
+ * $wgResourceModuleSkinStyles['foo'] = array(
+ * 'bar' => 'skins/Foo/bar.css',
+ * );
+ * @endcode
+ *
+ * This is mostly equivalent to:
+ *
+ * @par Equivalent:
+ * @code
+ * $wgResourceModules['bar'] = array(
+ * 'scripts' => 'resources/bar/bar.js',
+ * 'styles' => 'resources/bar/main.css',
+ * 'skinStyles' => array(
+ * 'foo' => skins/Foo/bar.css',
+ * ),
+ * );
+ * @endcode
+ *
+ * If the module already defines its own entry in `skinStyles` for a given skin, then
+ * $wgResourceModuleSkinStyles is ignored.
+ *
+ * If a module defines a `skinStyles['default']` the skin may want to extend that instead
+ * of replacing them. This can be done using the `+` prefix.
+ *
+ * @par Example:
+ * @code
+ * $wgResourceModules['bar'] = array(
+ * 'scripts' => 'resources/bar/bar.js',
+ * 'styles' => 'resources/bar/basic.css',
+ * 'skinStyles' => array(
+ * 'default' => 'resources/bar/additional.css',
+ * ),
+ * );
+ * // Note the '+' character:
+ * $wgResourceModuleSkinStyles['+foo'] = array(
+ * 'bar' => 'skins/Foo/bar.css',
+ * );
+ * @endcode
+ *
+ * This is mostly equivalent to:
+ *
+ * @par Equivalent:
+ * @code
+ * $wgResourceModules['bar'] = array(
+ * 'scripts' => 'resources/bar/bar.js',
+ * 'styles' => 'resources/bar/basic.css',
+ * 'skinStyles' => array(
+ * 'default' => 'resources/bar/additional.css',
+ * 'foo' => array(
+ * 'resources/bar/additional.css',
+ * 'skins/Foo/bar.css',
+ * ),
+ * ),
+ * );
+ * @endcode
+ *
+ * In other words, as a module author, use the `styles` list for stylesheets that may not be
+ * disabled by a skin. To provide default styles that may be extended or replaced,
+ * use `skinStyles['default']`.
+ *
+ * As with $wgResourceModules, paths default to being relative to the MediaWiki root.
+ * You should always provide a localBasePath and remoteBasePath (or remoteExtPath/remoteSkinPath).
+ * Either for all skin styles at once (first example below) or for each module separately (second
+ * example).
+ *
+ * @par Example:
+ * @code
+ * $wgResourceModuleSkinStyles['foo'] = array(
+ * 'bar' => 'bar.css',
+ * 'quux' => 'quux.css',
+ * 'remoteSkinPath' => 'Foo',
+ * 'localBasePath' => __DIR__,
+ * );
+ *
+ * $wgResourceModuleSkinStyles['foo'] = array(
+ * 'bar' => array(
+ * 'bar.css',
+ * 'remoteSkinPath' => 'Foo',
+ * 'localBasePath' => __DIR__,
+ * ),
+ * 'quux' => array(
+ * 'quux.css',
+ * 'remoteSkinPath' => 'Foo',
+ * 'localBasePath' => __DIR__,
+ * ),
+ * );
+ * @endcode
+ */
+$wgResourceModuleSkinStyles = array();
+
+/**
* Extensions should register foreign module sources here. 'local' is a
* built-in source that is not in this array, but defined by
* ResourceLoader::__construct() so that it cannot be unset.
*
* @par Example:
* @code
- * $wgResourceLoaderSources['foo'] = array(
- * 'loadScript' => 'http://example.org/w/load.php',
- * 'apiScript' => 'http://example.org/w/api.php'
- * );
+ * $wgResourceLoaderSources['foo'] = 'http://example.org/w/load.php';
* @endcode
*/
$wgResourceLoaderSources = array();
@@ -3132,14 +3315,23 @@ $wgResourceBasePath = null;
/**
* Maximum time in seconds to cache resources served by the resource loader.
+ * Used to set last modified headers (max-age/s-maxage).
+ *
+ * Following options to distinguish:
+ * - versioned: Used for modules with a version, because changing version
+ * numbers causes cache misses. This normally has a long expiry time.
+ * - unversioned: Used for modules without a version to propagate changes
+ * quickly to clients. Also used for modules with errors to recover quickly.
+ * This normally has a short expiry time.
*
- * @todo Document array structure
+ * Expiry time for the options to distinguish:
+ * - server: Squid/Varnish but also any other public proxy cache between the
+ * client and MediaWiki.
+ * - client: On the client side (e.g. in the browser cache).
*/
$wgResourceLoaderMaxage = array(
'versioned' => array(
- // Squid/Varnish but also any other public proxy cache between the client and MediaWiki
'server' => 30 * 24 * 60 * 60, // 30 days
- // On the client side (e.g. in the browser cache).
'client' => 30 * 24 * 60 * 60, // 30 days
),
'unversioned' => array(
@@ -3182,6 +3374,15 @@ $wgResourceLoaderMinifierMaxLineLength = 1000;
$wgIncludeLegacyJavaScript = true;
/**
+ * Whether to include the jQuery Migrate library, which lets legacy JS that
+ * requires jQuery 1.8.x to work and breaks with 1.9.x+.
+ *
+ * @since 1.24
+ * @deprecated since 1.24, to be removed in 1.25
+ */
+$wgIncludejQueryMigrate = false;
+
+/**
* Whether to preload the mediawiki.util module as blocking module in the top
* queue.
*
@@ -3270,12 +3471,14 @@ $wgResourceLoaderValidateStaticJS = false;
$wgResourceLoaderExperimentalAsyncLoading = false;
/**
- * Global LESS variables. An associative array binding variable names to CSS
- * string values.
+ * Global LESS variables. An associative array binding variable names to
+ * LESS code snippets representing their values.
*
- * Because the hashed contents of this array are used to construct the cache key
- * that ResourceLoader uses to look up LESS compilation results, updating this
- * array can be used to deliberately invalidate the set of cached results.
+ * Adding an item here is equivalent to writing `@variable: value;`
+ * at the beginning of all your .less files, with all the consequences.
+ * In particular, string values must be escaped and quoted.
+ *
+ * Changes to LESS variables do not trigger cache invalidation.
*
* @par Example:
* @code
@@ -3293,17 +3496,13 @@ $wgResourceLoaderLESSVars = array();
* Custom LESS functions. An associative array mapping function name to PHP
* callable.
*
- * Changes to LESS functions do not trigger cache invalidation. If you update
- * the behavior of a LESS function and need to invalidate stale compilation
- * results, you can touch one of values in $wgResourceLoaderLESSVars, as
- * documented above.
+ * Changes to LESS functions do not trigger cache invalidation.
*
* @since 1.22
+ * @deprecated since 1.24 Questionable usefulness and problematic to support,
+ * will be removed in the future.
*/
-$wgResourceLoaderLESSFunctions = array(
- 'embeddable' => 'ResourceLoaderLESSFunctions::embeddable',
- 'embed' => 'ResourceLoaderLESSFunctions::embed',
-);
+$wgResourceLoaderLESSFunctions = array();
/**
* Default import paths for LESS modules. LESS files referenced in @import
@@ -3319,10 +3518,26 @@ $wgResourceLoaderLESSFunctions = array(
* @since 1.22
*/
$wgResourceLoaderLESSImportPaths = array(
- "$IP/resources/mediawiki.less/",
+ "$IP/resources/src/mediawiki.less/",
);
/**
+ * Whether ResourceLoader should attempt to persist modules in localStorage on
+ * browsers that support the Web Storage API.
+ *
+ * @since 1.23 - Client-side module persistence is experimental. Exercise care.
+ */
+$wgResourceLoaderStorageEnabled = false;
+
+/**
+ * Cache version for client-side ResourceLoader module storage. You can trigger
+ * invalidation of the contents of the module store by incrementing this value.
+ *
+ * @since 1.23
+ */
+$wgResourceLoaderStorageVersion = 1;
+
+/**
* Whether to allow site-wide CSS (MediaWiki:Common.css and friends) on
* restricted pages like Special:UserLogin or Special:Preferences where
* JavaScript is disabled for security reasons. As it is possible to
@@ -3335,14 +3550,6 @@ $wgResourceLoaderLESSImportPaths = array(
*/
$wgAllowSiteCSSOnRestrictedPages = false;
-/**
- * When OutputHandler is used, mangle any output that contains
- * <cross-domain-policy>. Without this, an attacker can send their own
- * cross-domain policy unless it is prevented by the crossdomain.xml file at
- * the domain root.
- */
-$wgMangleFlashPolicy = true;
-
/** @} */ # End of resource loader settings }
/*************************************************************************//**
@@ -3452,10 +3659,22 @@ $wgLegalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+";
/**
* The interwiki prefix of the current wiki, or false if it doesn't have one.
+ *
+ * @deprecated since 1.23; use $wgLocalInterwikis instead
*/
$wgLocalInterwiki = false;
/**
+ * Array for multiple $wgLocalInterwiki values, in case there are several
+ * interwiki prefixes that point to the current wiki. If $wgLocalInterwiki is
+ * set, its value is prepended to this array, for backwards compatibility.
+ *
+ * Note, recent changes feeds use only the first entry in this array (or
+ * $wgLocalInterwiki, if it is set). See $wgRCFeeds
+ */
+$wgLocalInterwikis = array();
+
+/**
* Expiry time for cache of interwiki table
*/
$wgInterwikiExpiry = 10800;
@@ -3557,6 +3776,30 @@ $wgNamespacesWithSubpages = array(
);
/**
+ * Array holding default tracking category names.
+ *
+ * Array contains the system messages for each tracking category.
+ * Tracking categories allow pages with certain characteristics to be tracked.
+ * It works by adding any such page to a category automatically.
+ *
+ * A message with the suffix '-desc' should be added as a description message
+ * to have extra information on Special:TrackingCategories.
+ *
+ * @since 1.23
+ */
+$wgTrackingCategories = array(
+ 'index-category',
+ 'noindex-category',
+ 'expensive-parserfunction-category',
+ 'post-expand-template-argument-category',
+ 'post-expand-template-inclusion-category',
+ 'hidden-category-category',
+ 'broken-file-category',
+ 'node-count-exceeded-category',
+ 'expansion-depth-exceeded-category',
+);
+
+/**
* Array of namespaces which can be deemed to contain valid "content", as far
* as the site statistics are concerned. Useful if additional namespaces also
* contain "content" which should be considered when generating a count of the
@@ -3653,36 +3896,20 @@ $wgMaxTemplateDepth = 40;
$wgMaxPPExpandDepth = 40;
/**
- * The external URL protocols
+ * URL schemes that should be recognized as valid by wfParseUrl().
+ *
+ * WARNING: Do not add 'file:' to this or internal file links will be broken.
+ * Instead, if you want to support file links, add 'file://'. The same applies
+ * to any other protocols with the same name as a namespace. See bug #44011 for
+ * more information.
+ *
+ * @see wfParseUrl
*/
$wgUrlProtocols = array(
- 'http://',
- 'https://',
- 'ftp://',
- 'ftps://', // If we allow ftp:// we should allow the secure version.
- 'ssh://',
- 'sftp://', // SFTP > FTP
- 'irc://',
- 'ircs://', // @bug 28503
- 'xmpp:', // Another open communication protocol
- 'sip:',
- 'sips:',
- 'gopher://',
- 'telnet://', // Well if we're going to support the above.. -ævar
- 'nntp://', // @bug 3808 RFC 1738
- 'worldwind://',
- 'mailto:',
- 'tel:', // If we can make emails linkable, why not phone numbers?
- 'sms:', // Likewise this is standardized too
- 'news:',
- 'svn://',
- 'git://',
- 'mms://',
- 'bitcoin:', // Even registerProtocolHandler whitelists this along with mailto:
- 'magnet:', // No reason to reject torrents over magnet: when they're allowed over http://
- 'urn:', // Allow URNs to be used in Microdata/RDFa <link ... href="urn:...">s
- 'geo:', // urls define geo locations, they're useful in Microdata/RDFa and for coordinates
- '//', // for protocol-relative URLs
+ 'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://', 'http://',
+ 'https://', 'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
+ 'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
+ 'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:', '//'
);
/**
@@ -3809,13 +4036,16 @@ $wgNoFollowNsExceptions = array();
* (or any subdomains) will not be set to rel="nofollow" regardless of the
* value of $wgNoFollowLinks. For instance:
*
- * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org' );
+ * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org',
+ * 'mediawiki.org' );
*
* This would add rel="nofollow" to links to de.wikipedia.org, but not
* en.wikipedia.org, wiktionary.org, en.wiktionary.org, us.en.wikipedia.org,
* etc.
+ *
+ * Defaults to mediawiki.org for the links included in the software by default.
*/
-$wgNoFollowDomainExceptions = array();
+$wgNoFollowDomainExceptions = array( 'mediawiki.org' );
/**
* Allow DISPLAYTITLE to change title display
@@ -3869,23 +4099,14 @@ $wgTranscludeCacheExpiry = 3600;
* - 'any': all pages as considered as valid articles
* - 'comma': the page must contain a comma to be considered valid
* - 'link': the page must contain a [[wiki link]] to be considered valid
- * - null: the value will be set at run time depending on $wgUseCommaCount:
- * if $wgUseCommaCount is false, it will be 'link', if it is true
- * it will be 'comma'
*
- * See also See http://www.mediawiki.org/wiki/Manual:Article_count
+ * See also See https://www.mediawiki.org/wiki/Manual:Article_count
*
* Retroactively changing this variable will not affect the existing count,
* to update it, you will need to run the maintenance/updateArticleCount.php
* script.
*/
-$wgArticleCountMethod = null;
-
-/**
- * Backward compatibility setting, will set $wgArticleCountMethod if it is null.
- * @deprecated since 1.18; use $wgArticleCountMethod instead
- */
-$wgUseCommaCount = false;
+$wgArticleCountMethod = 'link';
/**
* wgHitcounterUpdateFreq sets how often page counters should be updated, higher
@@ -3914,6 +4135,7 @@ $wgActiveUserDays = 30;
/**
* For compatibility with old installations set to false
+ * @deprecated since 1.24 will be removed in future
*/
$wgPasswordSalt = true;
@@ -3924,6 +4146,72 @@ $wgPasswordSalt = true;
$wgMinimalPasswordLength = 1;
/**
+ * Specifies if users should be sent to a password-reset form on login, if their
+ * password doesn't meet the requirements of User::isValidPassword().
+ * @since 1.23
+ */
+$wgInvalidPasswordReset = true;
+
+/**
+ * Default password type to use when hashing user passwords
+ *
+ * @since 1.24
+ */
+$wgPasswordDefault = 'pbkdf2';
+
+/**
+ * Configuration for built-in password types. Maps the password type
+ * to an array of options. The 'class' option is the Password class to
+ * use. All other options are class-dependent.
+ *
+ * An advanced example:
+ * @code
+ * $wgPasswordConfig['bcrypt-peppered'] = array(
+ * 'class' => 'EncryptedPassword',
+ * 'underlying' => 'bcrypt',
+ * 'secrets' => array(),
+ * 'cipher' => MCRYPT_RIJNDAEL_256,
+ * 'mode' => MCRYPT_MODE_CBC,
+ * 'cost' => 5,
+ * );
+ * @endcode
+ *
+ * @since 1.24
+ */
+$wgPasswordConfig = array(
+ 'A' => array(
+ 'class' => 'MWOldPassword',
+ ),
+ 'B' => array(
+ 'class' => 'MWSaltedPassword',
+ ),
+ 'pbkdf2-legacyA' => array(
+ 'class' => 'LayeredParameterizedPassword',
+ 'types' => array(
+ 'A',
+ 'pbkdf2',
+ ),
+ ),
+ 'pbkdf2-legacyB' => array(
+ 'class' => 'LayeredParameterizedPassword',
+ 'types' => array(
+ 'B',
+ 'pbkdf2',
+ ),
+ ),
+ 'bcrypt' => array(
+ 'class' => 'BcryptPassword',
+ 'cost' => 9,
+ ),
+ 'pbkdf2' => array(
+ 'class' => 'Pbkdf2Password',
+ 'algo' => 'sha256',
+ 'cost' => '10000',
+ 'length' => '128',
+ ),
+);
+
+/**
* Whether to allow password resets ("enter some identifying data, and we'll send an email
* with a temporary password you can use to get back into the account") identified by
* various bits of data. Setting all of these to false (or the whole variable to false)
@@ -3963,8 +4251,8 @@ $wgReservedUsernames = array(
/**
* Settings added to this array will override the default globals for the user
* preferences used by anonymous visitors and newly created accounts.
- * For instance, to disable section editing links:
- * $wgDefaultUserOptions ['editsection'] = 0;
+ * For instance, to disable editing on double clicks:
+ * $wgDefaultUserOptions ['editondblclick'] = 0;
*/
$wgDefaultUserOptions = array(
'ccmeonemails' => 0,
@@ -3972,15 +4260,13 @@ $wgDefaultUserOptions = array(
'date' => 'default',
'diffonly' => 0,
'disablemail' => 0,
- 'disablesuggest' => 0,
'editfont' => 'default',
'editondblclick' => 0,
- 'editsection' => 1,
'editsectiononrightclick' => 0,
'enotifminoredits' => 0,
'enotifrevealaddr' => 0,
'enotifusertalkpages' => 1,
- 'enotifwatchlistpages' => 0,
+ 'enotifwatchlistpages' => 1,
'extendwatchlist' => 0,
'fancysig' => 0,
'forceeditsummary' => 0,
@@ -3988,34 +4274,28 @@ $wgDefaultUserOptions = array(
'hideminor' => 0,
'hidepatrolled' => 0,
'imagesize' => 2,
- 'justify' => 0,
'math' => 1,
'minordefault' => 0,
'newpageshidepatrolled' => 0,
- 'nocache' => 0,
- 'noconvertlink' => 0,
+ 'nickname' => '',
'norollbackdiff' => 0,
'numberheadings' => 0,
'previewonfirst' => 0,
'previewontop' => 1,
'rcdays' => 7,
'rclimit' => 50,
- 'rememberpassword' => 0,
'rows' => 25,
- 'searchlimit' => 20,
'showhiddencats' => 0,
'shownumberswatching' => 1,
- 'showtoc' => 1,
'showtoolbar' => 1,
'skin' => false,
'stubthreshold' => 0,
- 'thumbsize' => 2,
+ 'thumbsize' => 5,
'underline' => 2,
'uselivepreview' => 0,
'usenewrc' => 0,
- 'vector-simplesearch' => 1,
- 'watchcreations' => 0,
- 'watchdefault' => 0,
+ 'watchcreations' => 1,
+ 'watchdefault' => 1,
'watchdeletion' => 0,
'watchlistdays' => 3.0,
'watchlisthideanons' => 0,
@@ -4025,6 +4305,7 @@ $wgDefaultUserOptions = array(
'watchlisthideown' => 0,
'watchlisthidepatrolled' => 0,
'watchmoves' => 0,
+ 'watchrollback' => 0,
'wllimit' => 250,
'useeditwarning' => 1,
'prefershttps' => 1,
@@ -4126,7 +4407,7 @@ $wgBlockDisablesLogin = false;
*
* @note Also that this will only protect _pages in the wiki_. Uploaded files
* will remain readable. You can use img_auth.php to protect uploaded files,
- * see http://www.mediawiki.org/wiki/Manual:Image_Authorization
+ * see https://www.mediawiki.org/wiki/Manual:Image_Authorization
*/
$wgWhitelistRead = false;
@@ -4211,6 +4492,7 @@ $wgGroupPermissions['*']['editmyoptions'] = true;
$wgGroupPermissions['user']['move'] = true;
$wgGroupPermissions['user']['move-subpages'] = true;
$wgGroupPermissions['user']['move-rootuserpages'] = true; // can move root userpages
+$wgGroupPermissions['user']['move-categorypages'] = true;
$wgGroupPermissions['user']['movefile'] = true;
$wgGroupPermissions['user']['read'] = true;
$wgGroupPermissions['user']['edit'] = true;
@@ -4258,6 +4540,7 @@ $wgGroupPermissions['sysop']['importupload'] = true;
$wgGroupPermissions['sysop']['move'] = true;
$wgGroupPermissions['sysop']['move-subpages'] = true;
$wgGroupPermissions['sysop']['move-rootuserpages'] = true;
+$wgGroupPermissions['sysop']['move-categorypages'] = true;
$wgGroupPermissions['sysop']['patrol'] = true;
$wgGroupPermissions['sysop']['autopatrol'] = true;
$wgGroupPermissions['sysop']['protect'] = true;
@@ -4279,8 +4562,9 @@ $wgGroupPermissions['sysop']['noratelimit'] = true;
$wgGroupPermissions['sysop']['movefile'] = true;
$wgGroupPermissions['sysop']['unblockself'] = true;
$wgGroupPermissions['sysop']['suppressredirect'] = true;
+#$wgGroupPermissions['sysop']['pagelang'] = true;
#$wgGroupPermissions['sysop']['upload_by_url'] = true;
-#$wgGroupPermissions['sysop']['mergehistory'] = true;
+$wgGroupPermissions['sysop']['mergehistory'] = true;
// Permission to change users' group assignments
$wgGroupPermissions['bureaucrat']['userrights'] = true;
@@ -4296,6 +4580,8 @@ $wgGroupPermissions['bureaucrat']['noratelimit'] = true;
#$wgGroupPermissions['suppress']['hideuser'] = true;
// To hide revisions/log items from users and Sysops
#$wgGroupPermissions['suppress']['suppressrevision'] = true;
+// To view revisions/log items hidden from users and Sysops
+#$wgGroupPermissions['suppress']['viewsuppressed'] = true;
// For private suppression log access
#$wgGroupPermissions['suppress']['suppressionlog'] = true;
@@ -4555,6 +4841,15 @@ $wgAvailableRights = array();
$wgDeleteRevisionsLimit = 0;
/**
+ * The maximum number of edits a user can have and
+ * can still be hidden by users with the hideuser permission.
+ * This is limited for performance reason.
+ * Set to false to disable the limit.
+ * @since 1.23
+ */
+$wgHideUserContribLimit = 1000;
+
+/**
* Number of accounts each IP address may create, 0 to disable.
*
* @warning Requires memcached
@@ -4587,12 +4882,6 @@ $wgSummarySpamRegex = array();
$wgEnableDnsBlacklist = false;
/**
- * @deprecated since 1.17 Use $wgEnableDnsBlacklist instead, only kept for
- * backward compatibility.
- */
-$wgEnableSorbs = false;
-
-/**
* List of DNS blacklists to use, if $wgEnableDnsBlacklist is true.
*
* This is an array of either a URL or an array with the URL and a key (should
@@ -4618,12 +4907,6 @@ $wgEnableSorbs = false;
$wgDnsBlacklistUrls = array( 'http.dnsbl.sorbs.net.' );
/**
- * @deprecated since 1.17 Use $wgDnsBlacklistUrls instead, only kept for
- * backward compatibility.
- */
-$wgSorbsUrl = array();
-
-/**
* Proxy whitelist, list of addresses that are assumed to be non-proxy despite
* what the other methods might say.
*/
@@ -4690,10 +4973,19 @@ $wgRateLimits = array(
'ip' => null,
'subnet' => null,
),
+ 'renderfile-nonstandard' => array( // same as above but for non-standard thumbnails
+ 'anon' => null,
+ 'user' => null,
+ 'newbie' => null,
+ 'ip' => null,
+ 'subnet' => null,
+ ),
);
/**
* Set to a filename to log rate limiter hits.
+ *
+ * @deprecated since 1.23, use $wgDebugLogGroups['ratelimit'] instead
*/
$wgRateLimitLog = null;
@@ -4746,11 +5038,6 @@ $wgSecretKey = false;
*/
$wgProxyList = array();
-/**
- * @deprecated since 1.14
- */
-$wgProxyKey = false;
-
/** @} */ # end of proxy scanner settings
/************************************************************************//**
@@ -4759,7 +5046,7 @@ $wgProxyKey = false;
*/
/**
- * Default cookie expiration time. Setting to 0 makes all cookies session-only.
+ * Default cookie lifetime, in seconds. Setting to 0 makes all cookies session-only.
*/
$wgCookieExpiration = 180 * 86400;
@@ -4806,17 +5093,6 @@ $wgCookiePrefix = false;
$wgCookieHttpOnly = true;
/**
- * If the requesting browser matches a regex in this blacklist, we won't
- * send it cookies with HttpOnly mode, even if $wgCookieHttpOnly is on.
- */
-$wgHttpOnlyBlacklist = array(
- // Internet Explorer for Mac; sometimes the cookies work, sometimes
- // they don't. It's difficult to predict, as combinations of path
- // and expiration options affect its parsing.
- '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/',
-);
-
-/**
* A list of cookies that vary the cache (for use by extensions)
*/
$wgCacheVaryCookies = array();
@@ -4852,7 +5128,7 @@ $wgUseTeX = false;
*/
/**
- * Filename for debug logging. See http://www.mediawiki.org/wiki/How_to_debug
+ * Filename for debug logging. See https://www.mediawiki.org/wiki/How_to_debug
* The debug log file should be not be publicly accessible if it is used, as it
* may contain private data.
*/
@@ -4895,15 +5171,48 @@ $wgDebugComments = false;
$wgDebugDBTransactions = false;
/**
- * Write SQL queries to the debug log
+ * Write SQL queries to the debug log.
+ *
+ * This setting is only used $wgLBFactoryConf['class'] is set to
+ * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
+ * the DBO_DEBUG flag must be set in the 'flags' option of the database
+ * connection to achieve the same functionality.
*/
$wgDebugDumpSql = false;
/**
- * Set to an array of log group keys to filenames.
+ * Trim logged SQL queries to this many bytes. Set 0/false/null to do no
+ * trimming.
+ * @since 1.24
+ */
+$wgDebugDumpSqlLength = 500;
+
+/**
+ * Map of string log group names to log destinations.
+ *
* If set, wfDebugLog() output for that group will go to that file instead
* of the regular $wgDebugLogFile. Useful for enabling selective logging
* in production.
+ *
+ * Log destinations may be one of the following:
+ * - false to completely remove from the output, including from $wgDebugLogFile.
+ * - string values specifying a filename or URI.
+ * - associative array mapping 'destination' key to the desired filename or URI.
+ * The associative array may also contain a 'sample' key with an integer value,
+ * specifying a sampling factor.
+ *
+ * @par Example:
+ * @code
+ * $wgDebugLogGroups['redis'] = '/var/log/mediawiki/redis.log';
+ * @endcode
+ *
+ * @par Advanced example:
+ * @code
+ * $wgDebugLogGroups['memcached'] = (
+ * 'destination' => '/var/log/mediawiki/memcached.log',
+ * 'sample' => 1000, // log 1 message out of every 1,000.
+ * );
+ * @endcode
*/
$wgDebugLogGroups = array();
@@ -4947,6 +5256,11 @@ $wgShowExceptionDetails = false;
/**
* If true, show a backtrace for database errors
+ *
+ * @note This setting only applies when connection errors and query errors are
+ * reported in the normal manner. $wgShowExceptionDetails applies in other cases,
+ * including those in which an uncaught exception is thrown from within the
+ * exception handler.
*/
$wgShowDBErrorBacktrace = false;
@@ -4987,20 +5301,11 @@ $wgProfileLimit = 0.0;
/**
* Don't put non-profiling info into log file
- */
-$wgProfileOnly = false;
-
-/**
- * Log sums from profiling into "profiling" table in db.
*
- * You have to create a 'profiling' table in your database before using
- * this feature. Run set $wgProfileToDatabase to true in
- * LocalSettings.php and run maintenance/update.php or otherwise
- * manually add patch-profiling.sql to your database.
- *
- * To enable profiling, edit StartProfiler.php
+ * @deprecated since 1.23, set the log file in
+ * $wgDebugLogGroups['profileoutput'] instead.
*/
-$wgProfileToDatabase = false;
+$wgProfileOnly = false;
/**
* If true, print a raw call tree instead of per-function report
@@ -5016,7 +5321,8 @@ $wgProfilePerHost = false;
* Host for UDP profiler.
*
* The host should be running a daemon which can be obtained from MediaWiki
- * Subversion at: http://svn.wikimedia.org/svnroot/mediawiki/trunk/udpprofile
+ * Git at:
+ * http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile
*/
$wgUDPProfilerHost = '127.0.0.1';
@@ -5028,9 +5334,9 @@ $wgUDPProfilerPort = '3811';
/**
* Format string for the UDP profiler. The UDP profiler invokes sprintf() with
- * (profile id, count, cpu, cpu_sq, real, real_sq, entry name) as arguments.
- * You can use sprintf's argument numbering/swapping capability to repeat,
- * re-order or omit fields.
+ * (profile id, count, cpu, cpu_sq, real, real_sq, entry name, memory) as
+ * arguments. You can use sprintf's argument numbering/swapping capability to
+ * repeat, re-order or omit fields.
*
* @see $wgStatsFormatString
* @since 1.22
@@ -5038,11 +5344,6 @@ $wgUDPProfilerPort = '3811';
$wgUDPProfilerFormatString = "%s - %d %f %f %f %f %s\n";
/**
- * Detects non-matching wfProfileIn/wfProfileOut calls
- */
-$wgDebugProfiling = false;
-
-/**
* Output debug message on every wfProfileIn/wfProfileOut
*/
$wgDebugFunctionEntry = false;
@@ -5112,21 +5413,6 @@ $wgParserTestFiles = array(
);
/**
- * If configured, specifies target CodeReview installation to send test
- * result data from 'parserTests.php --upload'
- *
- * Something like this:
- * $wgParserTestRemote = array(
- * 'api-url' => 'http://www.mediawiki.org/w/api.php',
- * 'repo' => 'MediaWiki',
- * 'suite' => 'ParserTests',
- * 'path' => '/trunk/phase3', // not used client-side; for reference
- * 'secret' => 'qmoicj3mc4mcklmqw', // Shared secret used in HMAC validation
- * );
- */
-$wgParserTestRemote = false;
-
-/**
* Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).
*/
$wgEnableJavaScriptTest = false;
@@ -5190,18 +5476,6 @@ $wgAdvancedSearchHighlighting = false;
$wgSearchHighlightBoundaries = '[\p{Z}\p{P}\p{C}]';
/**
- * Set to true to have the search engine count total
- * search matches to present in the Special:Search UI.
- * Not supported by every search engine shipped with MW.
- *
- * This could however be slow on larger wikis, and is pretty flaky
- * with the current title vs content split. Recommend avoiding until
- * that's been worked out cleanly; but this may aid in testing the
- * search UI and API to confirm that the result count works.
- */
-$wgCountTotalSearchHits = false;
-
-/**
* Template for OpenSearch suggestions, defaults to API action=opensearch
*
* Sites with heavy load would typically have these point to a custom
@@ -5220,6 +5494,12 @@ $wgOpenSearchTemplate = false;
$wgEnableOpenSearchSuggest = true;
/**
+ * Integer defining default number of entries to show on
+ * OpenSearch call.
+ */
+$wgOpenSearchDefaultLimit = 10;
+
+/**
* Expiry time for search suggestion responses
*/
$wgSearchSuggestCacheExpiry = 1200;
@@ -5244,25 +5524,6 @@ $wgNamespacesToBeSearchedDefault = array(
);
/**
- * Namespaces to be searched when user clicks the "Help" tab
- * on Special:Search.
- *
- * Same format as $wgNamespacesToBeSearchedDefault.
- */
-$wgNamespacesToBeSearchedHelp = array(
- NS_PROJECT => true,
- NS_HELP => true,
-);
-
-/**
- * If set to true the 'searcheverything' preference will be effective only for
- * logged-in users.
- * Useful for big wikis to maintain different search profiles for anonymous and
- * logged-in users.
- */
-$wgSearchEverythingOnlyLoggedIn = false;
-
-/**
* Disable the internal MySQL-based search, to allow it to be
* implemented by an extension instead.
*/
@@ -5350,11 +5611,6 @@ $wgPreviewOnOpenNamespaces = array(
);
/**
- * Go button goes straight to the edit screen if the article doesn't exist.
- */
-$wgGoToEdit = false;
-
-/**
* Enable the UniversalEditButton for browsers that support it
* (currently only Firefox with an extension)
* See http://universaleditbutton.org for more background information
@@ -5391,13 +5647,6 @@ if ( !isset( $wgCommandLineMode ) ) {
$wgCommandLineDarkBg = false;
/**
- * Array for extensions to register their maintenance scripts with the
- * system. The key is the name of the class and the value is the full
- * path to the file
- */
-$wgMaintenanceScripts = array();
-
-/**
* Set this to a string to put the wiki into read-only mode. The text will be
* used as an explanation to users.
*
@@ -5445,9 +5694,10 @@ $wgGitBin = '/usr/bin/git';
* @since 1.20
*/
$wgGitRepositoryViewers = array(
- 'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
- 'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)'
- => 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
+ 'https://git.wikimedia.org/tree/%r/%H',
+ 'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
+ 'https://git.wikimedia.org/tree/%r/%H',
);
/** @} */ # End of maintenance }
@@ -5474,74 +5724,44 @@ $wgRCMaxAge = 13 * 7 * 24 * 3600;
$wgRCFilterByAge = false;
/**
- * List of Days and Limits options to list in the Special:Recentchanges and
+ * List of Limits options to list in the Special:Recentchanges and
* Special:Recentchangeslinked pages.
*/
$wgRCLinkLimits = array( 50, 100, 250, 500 );
-$wgRCLinkDays = array( 1, 3, 7, 14, 30 );
-
-/**
- * Send recent changes updates via UDP. The updates will be formatted for IRC.
- * Set this to the IP address of the receiver.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPAddress = false;
-
-/**
- * Port number for RC updates
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPPort = false;
-
-/**
- * Prefix to prepend to each UDP packet.
- * This can be used to identify the wiki. A script is available called
- * mxircecho.py which listens on a UDP port, and uses a prefix ending in a
- * tab to identify the IRC channel to send the log line to.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPPrefix = '';
-
-/**
- * If this is set to true, $wgLocalInterwiki will be prepended to links in the
- * IRC feed. If this is set to a string, that string will be used as the prefix.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPInterwikiPrefix = false;
/**
- * Set to true to omit "bot" edits (by users with the bot permission) from the
- * UDP feed.
- *
- * @deprecated since 1.22, use $wgRCFeeds
+ * List of Days options to list in the Special:Recentchanges and
+ * Special:Recentchangeslinked pages.
*/
-$wgRC2UDPOmitBots = false;
+$wgRCLinkDays = array( 1, 3, 7, 14, 30 );
/**
* Destinations to which notifications about recent changes
* should be sent.
*
- * As of MediaWiki 1.22, the only supported 'engine' parameter option in core
- * is 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
- * specified server.
+ * As of MediaWiki 1.22, there are 2 supported 'engine' parameter option in core:
+ * * 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
+ * specified server.
+ * * 'RedisPubSubFeedEngine', which is used to send recent changes to Redis.
+ *
* The common options are:
* * 'uri' -- the address to which the notices are to be sent.
* * 'formatter' -- the class name (implementing RCFeedFormatter) which will
- * produce the text to send.
+ * produce the text to send. This can also be an object of the class.
* * 'omit_bots' -- whether the bot edits should be in the feed
+ * * 'omit_anon' -- whether anonymous edits should be in the feed
+ * * 'omit_user' -- whether edits by registered users should be in the feed
+ * * 'omit_minor' -- whether minor edits should be in the feed
+ * * 'omit_patrolled' -- whether patrolled edits should be in the feed
+ *
* The IRC-specific options are:
* * 'add_interwiki_prefix' -- whether the titles should be prefixed with
- * $wgLocalInterwiki.
+ * the first entry in the $wgLocalInterwikis array (or the value of
+ * $wgLocalInterwiki, if set)
+ *
* The JSON-specific options are:
* * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
*
- * To ensure backwards-compatability, whenever $wgRC2UDPAddress is set, a
- * 'default' feed will be created reusing the deprecated $wgRC2UDP* variables.
- *
* @example $wgRCFeeds['example'] = array(
* 'formatter' => 'JSONRCFeedFormatter',
* 'uri' => "udp://localhost:1336",
@@ -5568,13 +5788,6 @@ $wgRCEngines = array(
);
/**
- * Enable user search in Special:Newpages
- * This is really a temporary hack around an index install bug on some Wikipedias.
- * Kill it once fixed.
- */
-$wgEnableNewpagesUserFilter = true;
-
-/**
* Use RC Patrolling to check for vandalism
*/
$wgUseRCPatrol = true;
@@ -5707,24 +5920,42 @@ $wgUnwatchedPageThreshold = false;
* To register a new one:
* @code
* $wgRecentChangesFlags['flag'] => array(
+ * // message for the letter displayed next to rows on changes lists
* 'letter' => 'letter-msg',
- * 'title' => 'tooltip-msg'
+ * // message for the tooltip of the letter
+ * 'title' => 'tooltip-msg',
+ * // optional (defaults to 'tooltip-msg'), message to use in the legend box
+ * 'legend' => 'legend-msg',
+ * // optional (defaults to 'flag'), CSS class to put on changes lists rows
+ * 'class' => 'css-class',
* );
* @endcode
*
- * Optional 'class' allows to set a css class different than the flag name.
- *
* @since 1.22
*/
$wgRecentChangesFlags = array(
- 'newpage' => array( 'letter' => 'newpageletter',
- 'title' => 'recentchanges-label-newpage' ),
- 'minor' => array( 'letter' => 'minoreditletter',
- 'title' => 'recentchanges-label-minor', 'class' => 'minoredit' ),
- 'bot' => array( 'letter' => 'boteditletter',
- 'title' => 'recentchanges-label-bot', 'class' => 'botedit' ),
- 'unpatrolled' => array( 'letter' => 'unpatrolledletter',
- 'title' => 'recentchanges-label-unpatrolled' ),
+ 'newpage' => array(
+ 'letter' => 'newpageletter',
+ 'title' => 'recentchanges-label-newpage',
+ 'legend' => 'recentchanges-legend-newpage',
+ ),
+ 'minor' => array(
+ 'letter' => 'minoreditletter',
+ 'title' => 'recentchanges-label-minor',
+ 'legend' => 'recentchanges-legend-minor',
+ 'class' => 'minoredit',
+ ),
+ 'bot' => array(
+ 'letter' => 'boteditletter',
+ 'title' => 'recentchanges-label-bot',
+ 'legend' => 'recentchanges-legend-bot',
+ 'class' => 'botedit',
+ ),
+ 'unpatrolled' => array(
+ 'letter' => 'unpatrolledletter',
+ 'title' => 'recentchanges-label-unpatrolled',
+ 'legend' => 'recentchanges-legend-unpatrolled',
+ ),
);
/** @} */ # end RC/watchlist }
@@ -5764,11 +5995,6 @@ $wgRightsText = null;
$wgRightsIcon = null;
/**
- * Set to an array of metadata terms. Else they will be loaded based on $wgRightsUrl
- */
-$wgLicenseTerms = false;
-
-/**
* Set this to some HTML to override the rights icon with an arbitrary logo
* @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
*/
@@ -5806,6 +6032,17 @@ $wgShowCreditsIfMax = true;
* Special:Import (for sysops). Since complete page history can be imported,
* these should be 'trusted'.
*
+ * This can either be a regular array, or an associative map specifying
+ * subprojects on the interwiki map of the target wiki, or a mix of the two,
+ * e.g.
+ * @code
+ * $wgImportSources = array(
+ * 'wikipedia' => array( 'cs', 'en', 'fr', 'zh' ),
+ * 'wikispecies',
+ * 'wikia' => array( 'animanga', 'brickipedia', 'desserts' ),
+ * );
+ * @endcode
+ *
* If a user has the 'import' permission but not the 'importupload' permission,
* they will only be able to run imports through this transwiki interface.
*/
@@ -5886,6 +6123,16 @@ $wgExtensionFunctions = array();
* Variables defined in extensions will override conflicting variables defined
* in the core.
*
+ * Since MediaWiki 1.23, use of this variable to define messages is discouraged; instead, store
+ * messages in JSON format and use $wgMessagesDirs. For setting other variables than
+ * $messages, $wgExtensionMessagesFiles should still be used. Use a DIFFERENT key because
+ * any entry having a key that also exists in $wgMessagesDirs will be ignored.
+ *
+ * Extensions using the JSON message format can preserve backward compatibility with
+ * earlier versions of MediaWiki by using a compatibility shim, such as one generated
+ * by the generateJsonI18n.php maintenance script, listing it under the SAME key
+ * as for the $wgMessagesDirs entry.
+ *
* @par Example:
* @code
* $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php';
@@ -5894,6 +6141,34 @@ $wgExtensionFunctions = array();
$wgExtensionMessagesFiles = array();
/**
+ * Extension messages directories.
+ *
+ * Associative array mapping extension name to the path of the directory where message files can
+ * be found. The message files are expected to be JSON files named for their language code, e.g.
+ * en.json, de.json, etc. Extensions with messages in multiple places may specify an array of
+ * message directories.
+ *
+ * @par Simple example:
+ * @code
+ * $wgMessagesDirs['Example'] = __DIR__ . '/i18n';
+ * @endcode
+ *
+ * @par Complex example:
+ * @code
+ * $wgMessagesDirs['Example'] = array(
+ * __DIR__ . '/lib/ve/i18n',
+ * __DIR__ . '/lib/oojs-ui/i18n',
+ * __DIR__ . '/i18n',
+ * )
+ * @endcode
+ * @since 1.23
+ */
+$wgMessagesDirs = array(
+ 'core' => "$IP/languages/i18n",
+ 'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n",
+);
+
+/**
* Array of files with list(s) of extension entry points to be used in
* maintenance/mergeMessageFileList.php
* @since 1.22
@@ -5922,19 +6197,20 @@ $wgParserOutputHooks = array();
$wgEnableParserLimitReporting = true;
/**
- * List of valid skin names.
+ * List of valid skin names
+ *
* The key should be the name in all lower case, the value should be a properly
- * cased name for the skin. This value will be prefixed with "Skin" to create the
- * class name of the skin to load, and if the skin's class cannot be found through
- * the autoloader it will be used to load a .php file by that name in the skins directory.
- * The default skins will be added later, by Skin::getSkinNames(). Use
- * Skin::getSkinNames() as an accessor if you wish to have access to the full list.
+ * cased name for the skin. This value will be prefixed with "Skin" to create
+ * the class name of the skin to load. Use Skin::getSkinNames() as an accessor
+ * if you wish to have access to the full list.
*/
$wgValidSkinNames = array();
/**
- * Special page list.
- * See the top of SpecialPage.php for documentation.
+ * Special page list. This is an associative array mapping the (canonical) names of
+ * special pages to either a class name to be instantiated, or a callback to use for
+ * creating the special page object. In both cases, the result must be an instance of
+ * SpecialPage.
*/
$wgSpecialPages = array();
@@ -5944,30 +6220,63 @@ $wgSpecialPages = array();
$wgAutoloadClasses = array();
/**
- * An array of extension types and inside that their names, versions, authors,
- * urls, descriptions and pointers to localized description msgs. Note that
- * the version, url, description and descriptionmsg key can be omitted.
+ * Switch controlling legacy case-insensitive classloading.
+ * Do not disable if your wiki must support data created by PHP4, or by
+ * MediaWiki 1.4 or earlier.
+ */
+$wgAutoloadAttemptLowercase = true;
+
+/**
+ * An array of information about installed extensions keyed by their type.
+ *
+ * All but 'name', 'path' and 'author' can be omitted.
*
* @code
* $wgExtensionCredits[$type][] = array(
- * 'name' => 'Example extension',
- * 'version' => 1.9,
* 'path' => __FILE__,
- * 'author' => 'Foo Barstein',
- * 'url' => 'http://www.example.com/Example%20Extension/',
- * 'description' => 'An example extension',
+ * 'name' => 'Example extension',
+ * 'namemsg' => 'exampleextension-name',
+ * 'author' => array(
+ * 'Foo Barstein',
+ * ),
+ * 'version' => '1.9.0',
+ * 'url' => 'http://example.org/example-extension/',
* 'descriptionmsg' => 'exampleextension-desc',
+ * 'license-name' => 'GPL-2.0',
* );
* @endcode
*
- * Where $type is 'specialpage', 'parserhook', 'variable', 'media' or 'other'.
- * Where 'descriptionmsg' can be an array with message key and parameters:
- * 'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),
+ * The extensions are listed on Special:Version. This page also looks for a file
+ * named COPYING or LICENSE (optional .txt extension) and provides a link to
+ * view said file. When the 'license-name' key is specified, this file is
+ * interpreted as wikitext.
+ *
+ * - $type: One of 'specialpage', 'parserhook', 'variable', 'media', 'antispam',
+ * 'skin', 'api', or 'other', or any additional types as specified through the
+ * ExtensionTypes hook as used in SpecialVersion::getExtensionTypes().
+ *
+ * - name: Name of extension as an inline string instead of localizable message.
+ * Do not omit this even if 'namemsg' is provided, as it is used to override
+ * the path Special:Version uses to find extension's license info, and is
+ * required for backwards-compatibility with MediaWiki 1.23 and older.
+ *
+ * - namemsg (since MW 1.24): A message key for a message containing the
+ * extension's name, if the name is localizable. (For example, skin names
+ * usually are.)
+ *
+ * - author: A string or an array of strings. Authors can be linked using
+ * the regular wikitext link syntax. To have an internationalized version of
+ * "and others" show, add an element "...". This element can also be linked,
+ * for instance "[http://example ...]".
+ *
+ * - descriptionmsg: A message key or an an array with message key and parameters:
+ * `'descriptionmsg' => 'exampleextension-desc',`
+ *
+ * - description: Description of extension as an inline string instead of
+ * localizable message (omit in favour of 'descriptionmsg').
*
- * author can be a string or an array of strings. Authors can be linked using
- * the regular wikitext link syntax. To have an internationalized version of
- * "and others" show, add an element "...". This element can also be linked,
- * for instance "[http://example ...]".
+ * - license-name: Short name of the license (used as label for the link), such
+ * as "GPL-2.0" or "MIT" (https://spdx.org/licenses/ for a list of identifiers).
*/
$wgExtensionCredits = array();
@@ -6019,7 +6328,7 @@ $wgHooks = array();
*/
$wgJobClasses = array(
'refreshLinks' => 'RefreshLinksJob',
- 'refreshLinks2' => 'RefreshLinksJob2',
+ 'refreshLinks2' => 'RefreshLinksJob2', // b/c
'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
'sendMail' => 'EmaillingJob',
'enotifNotify' => 'EnotifNotifyJob',
@@ -6039,10 +6348,22 @@ $wgJobClasses = array(
* - Jobs that you would never want to run as part of a page rendering request.
* - Jobs that you want to run on specialized machines ( like transcoding, or a particular
* machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
+ * These settings should be global to all wikis.
*/
$wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' );
/**
+ * Map of job types to how many job "work items" should be run per second
+ * on each job runner process. The meaning of "work items" varies per job,
+ * but typically would be something like "pages to update". A single job
+ * may have a variable number of work items, as is the case with batch jobs.
+ * This is used by runJobs.php and not jobs run via $wgJobRunRate.
+ * These settings should be global to all wikis.
+ * @var float[]
+ */
+$wgJobBackoffThrottling = array();
+
+/**
* Map of job types to configuration arrays.
* This determines which queue class and storage system is used for each job type.
* Job types that do not have explicit configuration will use the 'default' config.
@@ -6065,7 +6386,8 @@ $wgJobQueueAggregator = array(
* Expensive Querypages are already updated.
*/
$wgSpecialPageCacheUpdates = array(
- 'Statistics' => array( 'SiteStatsUpdate', 'cacheUpdate' )
+ 'Statistics' => array( 'SiteStatsUpdate', 'cacheUpdate' ),
+ 'Activeusers' => array( 'SpecialActiveUsers', 'cacheUpdate' ),
);
/**
@@ -6262,9 +6584,6 @@ $wgLogActions = array(
'protect/modify' => 'modifiedarticleprotection',
'protect/unprotect' => 'unprotectedarticle',
'protect/move_prot' => 'movedarticleprotection',
- 'upload/upload' => 'uploadedimage',
- 'upload/overwrite' => 'overwroteimage',
- 'upload/revert' => 'uploadedimage',
'import/upload' => 'import-logentry-upload',
'import/interwiki' => 'import-logentry-interwiki',
'merge/merge' => 'pagemerge-logentry',
@@ -6291,6 +6610,9 @@ $wgLogActionsHandlers = array(
'patrol/patrol' => 'PatrolLogFormatter',
'rights/rights' => 'RightsLogFormatter',
'rights/autopromote' => 'RightsLogFormatter',
+ 'upload/upload' => 'LogFormatter',
+ 'upload/overwrite' => 'LogFormatter',
+ 'upload/revert' => 'LogFormatter',
);
/**
@@ -6325,11 +6647,6 @@ $wgDisableQueryPageUpdate = false;
$wgSpecialPageGroups = array();
/**
- * Whether or not to sort special pages in Special:Specialpages
- */
-$wgSortSpecialPages = true;
-
-/**
* On Special:Unusedimages, consider images "used", if they are put
* into a category. Default (false) is not to count those as used.
*/
@@ -6379,12 +6696,6 @@ $wgActions = array(
'watch' => true,
);
-/**
- * Array of disabled article actions, e.g. view, edit, delete, etc.
- * @deprecated since 1.18; just set $wgActions['action'] = false instead
- */
-$wgDisabledActions = array();
-
/** @} */ # end actions }
/*************************************************************************//**
@@ -6470,7 +6781,7 @@ $wgExemptFromUserRobotsControl = null;
* Enable the MediaWiki API for convenient access to
* machine-readable data via api.php
*
- * See http://www.mediawiki.org/wiki/API
+ * See https://www.mediawiki.org/wiki/API
*/
$wgEnableAPI = true;
@@ -6499,13 +6810,76 @@ $wgDebugAPI = false;
/**
* API module extensions.
- * Associative array mapping module name to class name.
+ *
+ * Associative array mapping module name to modules specs;
+ * Each module spec is an associative array containing at least
+ * the 'class' key for the module's class, and optionally a
+ * 'factory' key for the factory function to use for the module.
+ *
+ * That factory function will be called with two parameters,
+ * the parent module (an instance of ApiBase, usually ApiMain)
+ * and the name the module was registered under. The return
+ * value must be an instance of the class given in the 'class'
+ * field.
+ *
+ * For backward compatibility, the module spec may also be a
+ * simple string containing the module's class name. In that
+ * case, the class' constructor will be called with the parent
+ * module and module name as parameters, as described above.
+ *
+ * Examples for registering API modules:
+ *
+ * @code
+ * $wgAPIModules['foo'] = 'ApiFoo';
+ * $wgAPIModules['bar'] = array(
+ * 'class' => 'ApiBar',
+ * 'factory' => function( $main, $name ) { ... }
+ * );
+ * $wgAPIModules['xyzzy'] = array(
+ * 'class' => 'ApiXyzzy',
+ * 'factory' => array( 'XyzzyFactory', 'newApiModule' )
+ * );
+ * @endcode
+ *
* Extension modules may override the core modules.
- * @todo Describe each of the variables, group them and add examples
+ * See ApiMain::$Modules for a list of the core modules.
*/
$wgAPIModules = array();
+
+/**
+ * API format module extensions.
+ * Associative array mapping format module name to module specs (see $wgAPIModules).
+ * Extension modules may override the core modules.
+ *
+ * See ApiMain::$Formats for a list of the core format modules.
+ */
+$wgAPIFormatModules = array();
+
+/**
+ * API Query meta module extensions.
+ * Associative array mapping meta module name to module specs (see $wgAPIModules).
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryMetaModules for a list of the core meta modules.
+ */
$wgAPIMetaModules = array();
+
+/**
+ * API Query prop module extensions.
+ * Associative array mapping prop module name to module specs (see $wgAPIModules).
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryPropModules for a list of the core prop modules.
+ */
$wgAPIPropModules = array();
+
+/**
+ * API Query list module extensions.
+ * Associative array mapping list module name to module specs (see $wgAPIModules).
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryListModules for a list of the core list modules.
+ */
$wgAPIListModules = array();
/**
@@ -6683,12 +7057,12 @@ $wgShellLocale = 'en_US.utf8';
*/
/**
- * Timeout for HTTP requests done internally
+ * Timeout for HTTP requests done internally, in seconds.
*/
$wgHTTPTimeout = 25;
/**
- * Timeout for Asynchronous (background) HTTP requests
+ * Timeout for Asynchronous (background) HTTP requests, in seconds.
*/
$wgAsyncHTTPTimeout = 25;
@@ -6720,6 +7094,14 @@ $wgHTTPConnectTimeout = 5e0;
$wgJobRunRate = 1;
/**
+ * When $wgJobRunRate > 0, try to run jobs asynchronously, spawning a new process
+ * to handle the job execution, instead of blocking the request until the job
+ * execution finishes.
+ * @since 1.23
+ */
+$wgRunJobsAsync = true;
+
+/**
* Number of rows to update per job
*/
$wgUpdateRowsPerJob = 500;
@@ -6729,15 +7111,6 @@ $wgUpdateRowsPerJob = 500;
*/
$wgUpdateRowsPerQuery = 100;
-/**
- * Do not purge all the pages that use a page when it is edited
- * if there are more than this many such pages. This is used to
- * avoid invalidating a large portion of the squid/parser cache.
- *
- * This setting should factor in any squid/parser cache expiry settings.
- */
-$wgMaxBacklinksInvalidate = false;
-
/** @} */ # End job queue }
/************************************************************************//**
@@ -6886,10 +7259,45 @@ $wgSiteTypes = array(
);
/**
- * Formerly a list of files for HipHop compilation
- * @deprecated since 1.22
+ * Whether the page_props table has a pp_sortkey column. Set to false in case
+ * the respective database schema change was not applied.
+ * @since 1.23
+ */
+$wgPagePropsHaveSortkey = true;
+
+/**
+ * Port where you have HTTPS running
+ * Supports HTTPS on non-standard ports
+ * @see bug 65184
+ * @since 1.24
+ */
+$wgHttpsPort = 443;
+
+/**
+ * Secret and algorithm for hmac-based key derivation function (fast,
+ * cryptographically secure random numbers).
+ * This should be set in LocalSettings.php, otherwise wgSecretKey will
+ * be used.
+ * @since 1.24
+ */
+$wgHKDFSecret = false;
+$wgHKDFAlgorithm = 'sha256';
+
+/**
+ * Enable page language feature
+ * Allows setting page language in database
+ * @var bool
+ * @since 1.24
+ */
+$wgPageLanguageUseDB = false;
+
+/**
+ * Enable use of the *_namespace fields of the pagelinks, redirect, and templatelinks tables.
+ * Set this only if the fields are fully populated. This may be removed in 1.25.
+ * @var bool
+ * @since 1.24
*/
-$wgCompiledFiles = array();
+$wgUseLinkNamespaceDBFields = true;
/**
* For really cool vim folding this needs to be at the end: