* Properties required for all repos:
* - class The class name for the repository. May come from the core or an extension.
* The core repository classes are FileRepo, LocalRepo, ForeignDBRepo.
- * FSRepo is also supported for backwards compatibility.
*
* - name A unique name for the repository (but $wgLocalFileRepo should be 'local').
* The name should consist of alpha-numeric characters.
*/
];
+/**
+ * Verify and enforce WAN cache purges using reliable DB sources as streams.
+ *
+ * These secondary cache purges are de-duplicated via simple cache mutexes.
+ * This improves consistency when cache purges are lost, which becomes more likely
+ * as more cache servers are added or if there are multiple datacenters. Only keys
+ * related to important mutable content will be checked.
+ *
+ * @var bool
+ * @since 1.29
+ */
+$wgEnableWANCacheReaper = false;
+
/**
* Main object stash type. This should be a fast storage system for storing
* lightweight data like hit counters and user activity. Sites with multiple
*/
$wgDefaultUserOptions = [
'ccmeonemails' => 0,
- 'cols' => 80,
+ 'cols' => 80, // @deprecated since 1.29 No longer used in core
'date' => 'default',
'diffonly' => 0,
'disablemail' => 0,
'rcdays' => 7,
'rcenhancedfilters' => 0,
'rclimit' => 50,
- 'rows' => 25,
+ 'rows' => 25, // @deprecated since 1.29 No longer used in core
'showhiddencats' => 0,
'shownumberswatching' => 1,
'showtoolbar' => 1,
$wgAutoConfirmCount = 0;
/**
- * Automatically add a usergroup to any user who matches certain conditions.
- *
- * @todo Redocument $wgAutopromote
- *
- * The format is
- * [ '&' or '|' or '^' or '!', cond1, cond2, ... ]
- * where cond1, cond2, ... are themselves conditions; *OR*
- * APCOND_EMAILCONFIRMED, *OR*
- * [ APCOND_EMAILCONFIRMED ], *OR*
- * [ APCOND_EDITCOUNT, number of edits ], *OR*
- * [ APCOND_AGE, seconds since registration ], *OR*
- * [ APCOND_INGROUPS, group1, group2, ... ], *OR*
- * [ APCOND_ISIP, ip ], *OR*
- * [ APCOND_IPINRANGE, range ], *OR*
- * [ APCOND_AGE_FROM_EDIT, seconds since first edit ], *OR*
- * [ APCOND_BLOCKED ], *OR*
- * [ APCOND_ISBOT ], *OR*
- * similar constructs defined by extensions.
- *
- * If $wgEmailAuthentication is off, APCOND_EMAILCONFIRMED will be true for any
+ * Array containing the conditions of automatic promotion of a user to specific groups.
+ *
+ * The basic syntax for `$wgAutopromote` is:
+ *
+ * $wgAutopromote = array(
+ * 'groupname' => cond,
+ * 'group2' => cond2,
+ * );
+ *
+ * A `cond` may be:
+ * - a single condition without arguments:
+ * Note that Autopromote wraps a single non-array value into an array
+ * e.g. `APCOND_EMAILCONFIRMED` OR
+ * array( `APCOND_EMAILCONFIRMED` )
+ * - a single condition with arguments:
+ * e.g. `array( APCOND_EDITCOUNT, 100 )`
+ * - a set of conditions:
+ * e.g. `array( 'operand', cond1, cond2, ... )`
+ *
+ * When constructing a set of conditions, the following conditions are available:
+ * - `&` (**AND**):
+ * promote if user matches **ALL** conditions
+ * - `|` (**OR**):
+ * promote if user matches **ANY** condition
+ * - `^` (**XOR**):
+ * promote if user matches **ONLY ONE OF THE CONDITIONS**
+ * - `!` (**NOT**):
+ * promote if user matces **NO** condition
+ * - array( APCOND_EMAILCONFIRMED ):
+ * true if user has a confirmed e-mail
+ * - array( APCOND_EDITCOUNT, number of edits ):
+ * true if user has the at least the number of edits as the passed parameter
+ * - array( APCOND_AGE, seconds since registration ):
+ * true if the length of time since the user created his/her account
+ * is at least the same length of time as the passed parameter
+ * - array( APCOND_AGE_FROM_EDIT, seconds since first edit ):
+ * true if the length of time since the user made his/her first edit
+ * is at least the same length of time as the passed parameter
+ * - array( APCOND_INGROUPS, group1, group2, ... ):
+ * true if the user is a member of each of the passed groups
+ * - array( APCOND_ISIP, ip ):
+ * true if the user has the passed IP address
+ * - array( APCOND_IPINRANGE, range ):
+ * true if the user has an IP address in the range of the passed parameter
+ * - array( APCOND_BLOCKED ):
+ * true if the user is blocked
+ * - array( APCOND_ISBOT ):
+ * true if the user is a bot
+ * - similar constructs can be defined by extensions
+ *
+ * The sets of conditions are evaluated recursively, so you can use nested sets of conditions
+ * linked by operands.
+ *
+ * Note that if $wgEmailAuthentication is disabled, APCOND_EMAILCONFIRMED will be true for any
* user who has provided an e-mail address.
*/
$wgAutopromote = [
*/
$wgBotPasswordsDatabase = false;
+/**
+ * Whether to disable user group expiry. This is a transitional feature flag
+ * in accordance with WMF schema change policy, and will be removed later
+ * (hopefully before MW 1.29 release).
+ *
+ * @since 1.29
+ */
+$wgDisableUserGroupExpiry = false;
+
/** @} */ # end of user rights settings
/************************************************************************//**
/**
* Whether to set a cookie when a user is autoblocked. Doing so means that a blocked user, even
- * after logging out and moving to a new IP address, will still be blocked.
+ * after logging out and moving to a new IP address, will still be blocked. This cookie will contain
+ * an authentication code if $wgSecretKey is set, or otherwise will just be the block ID (in
+ * which case there is a possibility of an attacker discovering the names of revdeleted users, so
+ * it is best to use this in conjunction with $wgSecretKey being set).
*/
$wgCookieSetOnAutoblock = false;
$wgRCLinkDays = [ 1, 3, 7, 14, 30 ];
/**
- * Destinations to which notifications about recent changes
- * should be sent.
+ * Configuration for feeds to which notifications about recent changes will be sent.
*
- * 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 following feed classes are available by default:
+ * - 'UDPRCFeedEngine' - sends recent changes over UDP to the specified server.
+ * - 'RedisPubSubFeedEngine' - 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. 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
+ * Only 'class' or 'uri' is required. If 'uri' is set instead of 'class', then
+ * RecentChange::getEngine() is used to determine the class. All options are
+ * passed to the constructor.
*
- * The IRC-specific options are:
- * * 'add_interwiki_prefix' -- whether the titles should be prefixed with
- * the first entry in the $wgLocalInterwikis array (or the value of
- * $wgLocalInterwiki, if set)
+ * Common options:
+ * - 'class' -- The class to use for this feed (must implement RCFeed).
+ * - 'omit_bots' -- Exclude bot edits from the feed. (default: false)
+ * - 'omit_anon' -- Exclude anonymous edits from the feed. (default: false)
+ * - 'omit_user' -- Exclude edits by registered users from the feed. (default: false)
+ * - 'omit_minor' -- Exclude minor edits from the feed. (default: false)
+ * - 'omit_patrolled' -- Exclude patrolled edits from the feed. (default: false)
*
- * The JSON-specific options are:
- * * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
+ * FormattedRCFeed-specific options:
+ * - 'uri' -- [required] The address to which the messages are sent.
+ * The uri scheme of this string will be looked up in $wgRCEngines
+ * to determine which RCFeedEngine class to use.
+ * - 'formatter' -- [required] The class (implementing RCFeedFormatter) which will
+ * produce the text to send. This can also be an object of the class.
+ * Formatters available by default: JSONRCFeedFormatter, XMLRCFeedFormatter,
+ * IRCColourfulRCFeedFormatter.
+ *
+ * IRCColourfulRCFeedFormatter-specific options:
+ * - 'add_interwiki_prefix' -- whether the titles should be prefixed with
+ * the first entry in the $wgLocalInterwikis array (or the value of
+ * $wgLocalInterwiki, if set)
+ *
+ * JSONRCFeedFormatter-specific options:
+ * - 'channel' -- if set, the 'channel' parameter is also set in JSON values.
*
* @example $wgRCFeeds['example'] = [
+ * 'uri' => 'udp://localhost:1336',
* 'formatter' => 'JSONRCFeedFormatter',
- * 'uri' => "udp://localhost:1336",
* 'add_interwiki_prefix' => false,
* 'omit_bots' => true,
* ];
- * @example $wgRCFeeds['exampleirc'] = [
+ * @example $wgRCFeeds['example'] = [
+ * 'uri' => 'udp://localhost:1338',
* 'formatter' => 'IRCColourfulRCFeedFormatter',
- * 'uri' => "udp://localhost:1338",
* 'add_interwiki_prefix' => false,
* 'omit_bots' => true,
* ];
+ * @example $wgRCFeeds['example'] = [
+ * 'class' => 'ExampleRCFeed',
+ * ];
* @since 1.22
*/
$wgRCFeeds = [];
/**
- * Used by RecentChange::getEngine to find the correct engine to use for a given URI scheme.
- * Keys are scheme names, values are names of engine classes.
+ * Used by RecentChange::getEngine to find the correct engine for a given URI scheme.
+ * Keys are scheme names, values are names of FormattedRCFeed sub classes.
+ * @since 1.22
*/
$wgRCEngines = [
'redis' => 'RedisPubSubFeedEngine',
* The remaining elements are passed through to the class as constructor
* parameters.
*
- * @par Example:
+ * @par Example using local redis instance:
+ * @code
+ * $wgPoolCounterConf = [ 'ArticleView' => [
+ * 'class' => 'PoolCounterRedis',
+ * 'timeout' => 15, // wait timeout in seconds
+ * 'workers' => 1, // maximum number of active threads in each pool
+ * 'maxqueue' => 5, // maximum number of total threads in each pool
+ * 'servers' => [ '127.0.0.1' ],
+ * 'redisConfig' => []
+ * ] ];
+ * @endcode
+ *
+ * @par Example using C daemon from https://www.mediawiki.org/wiki/Extension:PoolCounter:
* @code
* $wgPoolCounterConf = [ 'ArticleView' => [
* 'class' => 'PoolCounter_Client',
* 'workers' => 5, // maximum number of active threads in each pool
* 'maxqueue' => 50, // maximum number of total threads in each pool
* ... any extension-specific options...
- * ];
+ * ] ];
* @endcode
*/
$wgPoolCounterConf = null;
$wgExperiencedUserEdits = 500;
$wgExperiencedUserMemberSince = 30; # days
+/**
+ * Mapping of interwiki index prefixes to descriptors that
+ * can be used to change the display of interwiki search results.
+ *
+ * Descriptors are appended to CSS classes of interwiki results
+ * which using InterwikiSearchResultWidget.
+ *
+ * Predefined descriptors include the following words:
+ * definition, textbook, news, quotation, book, travel, course
+ *
+ * @par Example:
+ * @code
+ * $wgInterwikiPrefixDisplayTypes = [
+ * 'iwprefix' => 'definition'
+ *];
+ * @endcode
+ */
+$wgInterwikiPrefixDisplayTypes = [];
+
/**
* For really cool vim folding this needs to be at the end:
* vim: foldmarker=@{,@} foldmethod=marker