Merge "Special:Version: Link to tree instead of commit for git hashes"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 18 Aug 2014 18:26:55 +0000 (18:26 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 18 Aug 2014 18:26:55 +0000 (18:26 +0000)
1  2 
includes/DefaultSettings.php

@@@ -60,14 -60,11 +60,14 @@@ if ( !defined( 'MEDIAWIKI' ) ) 
  $wgConf = new SiteConfiguration;
  
  /**
 - * Class name to use for accessing Config.
 - * Currently only 'GlobalConfig' is available
 + * 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
   */
 -$wgConfigClass = 'GlobalConfig';
 +$wgConfigRegistry = array(
 +      'main' => 'GlobalVarConfig::newInstance'
 +);
  
  /**
   * MediaWiki version number
@@@ -355,6 -352,11 +355,6 @@@ $wgEnableAsyncUploads = false
   */
  $wgIllegalFileChars = ":";
  
 -/**
 - * @deprecated since 1.17 use $wgDeletedDirectory
 - */
 -$wgFileStore = array();
 -
  /**
   * What directory to place deleted uploads in.
   * Defaults to "{$wgUploadDirectory}/deleted".
@@@ -758,7 -760,7 +758,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(
@@@ -810,7 -812,7 +810,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
   *
@@@ -858,11 -860,9 +858,11 @@@ $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',
  );
  
@@@ -1135,45 -1135,45 +1135,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.
   *
   * @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(
@@@ -1214,34 -1214,6 +1214,34 @@@ $wgThumbLimits = array
        300
  );
  
 +/**
 + * 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
   */
@@@ -1306,7 -1278,7 +1306,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
@@@ -1320,7 -1292,7 +1320,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';
@@@ -1539,7 -1511,7 +1539,7 @@@ $wgUsersNotifiedOnAllChanges = array()
  $wgDBserver = 'localhost';
  
  /**
 - * Database port number (for PostgreSQL)
 + * Database port number (for PostgreSQL and Microsoft SQL Server).
   */
  $wgDBport = 5432;
  
@@@ -1565,21 -1537,11 +1565,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;
  
@@@ -1687,7 -1649,7 +1687,7 @@@ $wgSharedTables = array( 'user', 'user_
   *   - dbname:      Default database name
   *   - user:        DB user
   *   - password:    DB password
 - *   - type:        "mysql" or "postgres"
 + *   - 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
@@@ -1745,7 -1707,6 +1745,7 @@@ $wgLBFactoryConf = array( 'class' => 'L
  
  /**
   * How long to wait for a slave to catch up to the master
 + * @deprecated since 1.24
   */
  $wgMasterWaitTimeout = 10;
  
@@@ -1774,6 -1735,11 +1774,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
@@@ -2188,12 -2154,6 +2188,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.
   *
@@@ -2447,6 -2407,42 +2447,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
@@@ -2509,21 -2505,6 +2509,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
   */
@@@ -2851,23 -2832,6 +2851,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.
@@@ -2909,7 -2873,7 +2909,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();
  
@@@ -2943,28 -2907,25 +2943,28 @@@ $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.
   *
 - * @deprecated since 1.23; use $wgSkipSkins instead
 + * @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
@@@ -3100,6 -3061,20 +3100,6 @@@ $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.
   */
@@@ -3162,111 -3137,6 +3162,111 @@@ $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
@@@ -3348,15 -3218,6 +3348,15 @@@ $wgResourceLoaderMinifierMaxLineLength 
   */
  $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.
@@@ -3496,6 -3357,7 +3496,6 @@@ $wgResourceLoaderLESSFunctions = array
   */
  $wgResourceLoaderLESSImportPaths = array(
        "$IP/resources/src/mediawiki.less/",
 -      "$IP/skins/vector/",
  );
  
  /**
@@@ -4057,6 -3919,9 +4057,6 @@@ $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 https://www.mediawiki.org/wiki/Manual:Article_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
@@@ -4093,7 -3964,6 +4093,7 @@@ $wgActiveUserDays = 30
  
  /**
   * For compatibility with old installations set to false
 + * @deprecated since 1.24 will be removed in future
   */
  $wgPasswordSalt = true;
  
@@@ -4110,65 -3980,6 +4110,65 @@@ $wgMinimalPasswordLength = 1
   */
  $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
@@@ -4263,7 -4074,6 +4263,7 @@@ $wgDefaultUserOptions = array
        'watchlisthideown' => 0,
        'watchlisthidepatrolled' => 0,
        'watchmoves' => 0,
 +      'watchrollback' => 0,
        'wllimit' => 250,
        'useeditwarning' => 1,
        'prefershttps' => 1,
@@@ -4520,9 -4330,8 +4520,9 @@@ $wgGroupPermissions['sysop']['noratelim
  $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;
@@@ -4538,8 -4347,6 +4538,8 @@@ $wgGroupPermissions['bureaucrat']['nora
  #$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;
  
@@@ -4839,6 -4646,12 +4839,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.
   *
   */
  $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.
@@@ -4996,6 -4815,11 +4996,6 @@@ $wgSecretKey = false
   */
  $wgProxyList = array();
  
 -/**
 - * @deprecated since 1.14
 - */
 -$wgProxyKey = false;
 -
  /** @} */ # end of proxy scanner settings
  
  /************************************************************************//**
@@@ -5129,22 -4953,10 +5129,22 @@@ $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;
  
 +/**
 + * 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.
   *
@@@ -5292,9 -5104,9 +5292,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
@@@ -5370,6 -5182,21 +5370,6 @@@ $wgParserTestFiles = array
        "$IP/tests/parser/extraParserTests.txt"
  );
  
 -/**
 - * If configured, specifies target CodeReview installation to send test
 - * result data from 'parserTests.php --upload'
 - *
 - * Something like this:
 - * $wgParserTestRemote = array(
 - *     'api-url' => 'https://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).
   */
@@@ -5433,6 -5260,18 +5433,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
   *
@@@ -5481,6 -5320,25 +5481,6 @@@ $wgNamespacesToBeSearchedDefault = arra
        NS_MAIN => true,
  );
  
 -/**
 - * 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.
@@@ -5658,9 -5516,9 +5658,9 @@@ $wgGitBin = '/usr/bin/git'
   */
  $wgGitRepositoryViewers = array(
        'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
-               'https://git.wikimedia.org/commit/%r/%H',
+               'https://git.wikimedia.org/tree/%r/%H',
        'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
-               'https://git.wikimedia.org/commit/%r/%H',
+               'https://git.wikimedia.org/tree/%r/%H',
  );
  
  /** @} */ # End of maintenance }
@@@ -5698,33 -5556,74 +5698,33 @@@ $wgRCLinkLimits = array( 50, 100, 250, 
   */
  $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, the first entry in the $wgLocalInterwikis array (or
 - * the value of $wgLocalInterwiki, if set) 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
 - */
 -$wgRC2UDPOmitBots = false;
 -
  /**
   * 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
   *     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-compatibility, 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",
@@@ -5750,6 -5649,13 +5750,6 @@@ $wgRCEngines = array
        'udp' => 'UDPRCFeedEngine',
  );
  
 -/**
 - * 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
   */
@@@ -5883,42 -5789,24 +5883,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 }
@@@ -6149,12 -6037,13 +6149,12 @@@ $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();
  
@@@ -6185,7 -6074,6 +6185,7 @@@ $wgAutoloadAttemptLowercase = true
   * $wgExtensionCredits[$type][] = array(
   *     'path' => __FILE__,
   *     'name' => 'Example extension',
 + *     'namemsg' => 'exampleextension-name',
   *     'author' => array(
   *         'Foo Barstein',
   *     ),
   * view said file. When the 'license-name' key is specified, this file is
   * interpreted as wikitext.
   *
 - * - $type: One of 'specialpage', 'parserhook', 'variable', 'media' or 'other'.
 + * - $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
   *    for instance "[http://example ...]".
   *
   * - descriptionmsg: A message key or an an array with message key and parameters:
 - *    `'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),`
 + *    `'descriptionmsg' => 'exampleextension-desc',`
   *
 - * - description: Description of extension as inline string instead of
 + * - description: Description of extension as an inline string instead of
   *    localizable message (omit in favour of 'descriptionmsg').
   *
   * - license-name: Short name of the license (used as label for the link), such
@@@ -6534,6 -6411,9 +6534,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',
@@@ -6560,9 -6440,6 +6560,9 @@@ $wgLogActionsHandlers = array
        'patrol/patrol' => 'PatrolLogFormatter',
        'rights/rights' => 'RightsLogFormatter',
        'rights/autopromote' => 'RightsLogFormatter',
 +      'upload/upload' => 'LogFormatter',
 +      'upload/overwrite' => 'LogFormatter',
 +      'upload/revert' => 'LogFormatter',
  );
  
  /**
@@@ -6596,6 -6473,11 +6596,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.
@@@ -6760,45 -6642,16 +6760,45 @@@ $wgDebugAPI = false
  
  /**
   * API module extensions.
 - * Associative array mapping module name to class name.
 - * Extension modules may override the core modules.
   *
 + * 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.
   * See ApiMain::$Modules for a list of the core modules.
   */
  $wgAPIModules = array();
  
  /**
   * API format module extensions.
 - * Associative array mapping format module name to class name.
 + * 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.
@@@ -6807,7 -6660,7 +6807,7 @@@ $wgAPIFormatModules = array()
  
  /**
   * API Query meta module extensions.
 - * Associative array mapping meta module name to class name.
 + * 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.
@@@ -6816,7 -6669,7 +6816,7 @@@ $wgAPIMetaModules = array()
  
  /**
   * API Query prop module extensions.
 - * Associative array mapping properties module name to class name.
 + * 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.
@@@ -6825,7 -6678,7 +6825,7 @@@ $wgAPIPropModules = array()
  
  /**
   * API Query list module extensions.
 - * Associative array mapping list module name to class name.
 + * 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.
@@@ -7007,12 -6860,12 +7007,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;
  
@@@ -7208,6 -7061,12 +7208,6 @@@ $wgSiteTypes = array
        'mediawiki' => 'MediaWikiSite',
  );
  
 -/**
 - * Formerly a list of files for HipHop compilation
 - * @deprecated since 1.22
 - */
 -$wgCompiledFiles = array();
 -
  /**
   * Whether the page_props table has a pp_sortkey column. Set to false in case
   * the respective database schema change was not applied.
   */
  $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
 + */
 +$wgUseLinkNamespaceDBFields = true;
 +
  /**
   * For really cool vim folding this needs to be at the end:
   * vim: foldmarker=@{,@} foldmethod=marker