[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/ -> DefaultSettings.php (source)

   1  <?php
   2  /**
   3   * Default values for MediaWiki configuration settings.
   4   *
   5   *
   6   *                 NEVER EDIT THIS FILE
   7   *
   8   *
   9   * To customize your installation, edit "LocalSettings.php". If you make
  10   * changes here, they will be lost on next upgrade of MediaWiki!
  11   *
  12   * In this file, variables whose default values depend on other
  13   * variables are set to false. The actual default value of these variables
  14   * will only be set in Setup.php, taking into account any custom settings
  15   * performed in LocalSettings.php.
  16   *
  17   * Documentation is in the source and on:
  18   * https://www.mediawiki.org/wiki/Manual:Configuration_settings
  19   *
  20   * @warning  Note: this (and other things) will break if the autoloader is not
  21   * enabled. Please include includes/AutoLoader.php before including this file.
  22   *
  23   * This program is free software; you can redistribute it and/or modify
  24   * it under the terms of the GNU General Public License as published by
  25   * the Free Software Foundation; either version 2 of the License, or
  26   * (at your option) any later version.
  27   *
  28   * This program is distributed in the hope that it will be useful,
  29   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  30   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  31   * GNU General Public License for more details.
  32   *
  33   * You should have received a copy of the GNU General Public License along
  34   * with this program; if not, write to the Free Software Foundation, Inc.,
  35   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  36   * http://www.gnu.org/copyleft/gpl.html
  37   *
  38   * @file
  39   */
  40  
  41  /**
  42   * @defgroup Globalsettings Global settings
  43   */
  44  
  45  /**
  46   * @cond file_level_code
  47   * This is not a valid entry point, perform no further processing unless
  48   * MEDIAWIKI is defined
  49   */
  50  if ( !defined( 'MEDIAWIKI' ) ) {
  51      echo "This file is part of MediaWiki and is not a valid entry point\n";
  52      die( 1 );
  53  }
  54  
  55  /**
  56   * wgConf hold the site configuration.
  57   * Not used for much in a default install.
  58   * @since 1.5
  59   */
  60  $wgConf = new SiteConfiguration;
  61  
  62  /**
  63   * Registry of factory functions to create config objects:
  64   * The 'main' key must be set, and the value should be a valid
  65   * callable.
  66   * @since 1.23
  67   */
  68  $wgConfigRegistry = array(
  69      'main' => 'GlobalVarConfig::newInstance'
  70  );
  71  
  72  /**
  73   * MediaWiki version number
  74   * Note that MediaWikiVersionFetcher::fetchVersion() uses a regex to check this.
  75   * Using single quotes is, therefore, important here.
  76   * @since 1.2
  77   */
  78  $wgVersion = '1.24.0';
  79  
  80  /**
  81   * Name of the site. It must be changed in LocalSettings.php
  82   */
  83  $wgSitename = 'MediaWiki';
  84  
  85  /**
  86   * URL of the server.
  87   *
  88   * @par Example:
  89   * @code
  90   * $wgServer = 'http://example.com';
  91   * @endcode
  92   *
  93   * This is usually detected correctly by MediaWiki. If MediaWiki detects the
  94   * wrong server, it will redirect incorrectly after you save a page. In that
  95   * case, set this variable to fix it.
  96   *
  97   * If you want to use protocol-relative URLs on your wiki, set this to a
  98   * protocol-relative URL like '//example.com' and set $wgCanonicalServer
  99   * to a fully qualified URL.
 100   */
 101  $wgServer = WebRequest::detectServer();
 102  
 103  /**
 104   * Canonical URL of the server, to use in IRC feeds and notification e-mails.
 105   * Must be fully qualified, even if $wgServer is protocol-relative.
 106   *
 107   * Defaults to $wgServer, expanded to a fully qualified http:// URL if needed.
 108   * @since 1.18
 109   */
 110  $wgCanonicalServer = false;
 111  
 112  /**
 113   * Server name. This is automatically computed by parsing the bare
 114   * hostname out of $wgCanonicalServer. It should not be customized.
 115   * @since 1.24
 116   */
 117  $wgServerName = false;
 118  
 119  /************************************************************************//**
 120   * @name   Script path settings
 121   * @{
 122   */
 123  
 124  /**
 125   * The path we should point to.
 126   * It might be a virtual path in case with use apache mod_rewrite for example.
 127   *
 128   * This *needs* to be set correctly.
 129   *
 130   * Other paths will be set to defaults based on it unless they are directly
 131   * set in LocalSettings.php
 132   */
 133  $wgScriptPath = '/wiki';
 134  
 135  /**
 136   * Whether to support URLs like index.php/Page_title These often break when PHP
 137   * is set up in CGI mode. PATH_INFO *may* be correct if cgi.fix_pathinfo is set,
 138   * but then again it may not; lighttpd converts incoming path data to lowercase
 139   * on systems with case-insensitive filesystems, and there have been reports of
 140   * problems on Apache as well.
 141   *
 142   * To be safe we'll continue to keep it off by default.
 143   *
 144   * Override this to false if $_SERVER['PATH_INFO'] contains unexpectedly
 145   * incorrect garbage, or to true if it is really correct.
 146   *
 147   * The default $wgArticlePath will be set based on this value at runtime, but if
 148   * you have customized it, having this incorrectly set to true can cause
 149   * redirect loops when "pretty URLs" are used.
 150   * @since 1.2.1
 151   */
 152  $wgUsePathInfo = ( strpos( PHP_SAPI, 'cgi' ) === false ) &&
 153      ( strpos( PHP_SAPI, 'apache2filter' ) === false ) &&
 154      ( strpos( PHP_SAPI, 'isapi' ) === false );
 155  
 156  /**
 157   * The extension to append to script names by default. This can either be .php
 158   * or .php5.
 159   *
 160   * Some hosting providers use PHP 4 for *.php files, and PHP 5 for *.php5. This
 161   * variable is provided to support those providers.
 162   * @since 1.11
 163   */
 164  $wgScriptExtension = '.php';
 165  
 166  /**@}*/
 167  
 168  /************************************************************************//**
 169   * @name   URLs and file paths
 170   *
 171   * These various web and file path variables are set to their defaults
 172   * in Setup.php if they are not explicitly set from LocalSettings.php.
 173   *
 174   * These will relatively rarely need to be set manually, unless you are
 175   * splitting style sheets or images outside the main document root.
 176   *
 177   * In this section, a "path" is usually a host-relative URL, i.e. a URL without
 178   * the host part, that starts with a slash. In most cases a full URL is also
 179   * acceptable. A "directory" is a local file path.
 180   *
 181   * In both paths and directories, trailing slashes should not be included.
 182   *
 183   * @{
 184   */
 185  
 186  /**
 187   * The URL path to index.php.
 188   *
 189   * Defaults to "{$wgScriptPath}/index{$wgScriptExtension}".
 190   */
 191  $wgScript = false;
 192  
 193  /**
 194   * The URL path to load.php.
 195   *
 196   * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}".
 197   * @since 1.17
 198   */
 199  $wgLoadScript = false;
 200  
 201  /**
 202   * The URL path of the skins directory.
 203   * Defaults to "{$wgScriptPath}/skins".
 204   * @since 1.3
 205   */
 206  $wgStylePath = false;
 207  $wgStyleSheetPath = &$wgStylePath;
 208  
 209  /**
 210   * The URL path of the skins directory. Should not point to an external domain.
 211   * Defaults to "{$wgScriptPath}/skins".
 212   * @since 1.17
 213   */
 214  $wgLocalStylePath = false;
 215  
 216  /**
 217   * The URL path of the extensions directory.
 218   * Defaults to "{$wgScriptPath}/extensions".
 219   * @since 1.16
 220   */
 221  $wgExtensionAssetsPath = false;
 222  
 223  /**
 224   * Filesystem stylesheets directory.
 225   * Defaults to "{$IP}/skins".
 226   * @since 1.3
 227   */
 228  $wgStyleDirectory = false;
 229  
 230  /**
 231   * The URL path for primary article page views. This path should contain $1,
 232   * which is replaced by the article title.
 233   *
 234   * Defaults to "{$wgScript}/$1" or "{$wgScript}?title=$1",
 235   * depending on $wgUsePathInfo.
 236   */
 237  $wgArticlePath = false;
 238  
 239  /**
 240   * The URL path for the images directory.
 241   * Defaults to "{$wgScriptPath}/images".
 242   */
 243  $wgUploadPath = false;
 244  
 245  /**
 246   * The filesystem path of the images directory. Defaults to "{$IP}/images".
 247   */
 248  $wgUploadDirectory = false;
 249  
 250  /**
 251   * Directory where the cached page will be saved.
 252   * Defaults to "{$wgUploadDirectory}/cache".
 253   */
 254  $wgFileCacheDirectory = false;
 255  
 256  /**
 257   * The URL path of the wiki logo. The logo size should be 135x135 pixels.
 258   * Defaults to "$wgResourceBasePath/resources/assets/wiki.png".
 259   */
 260  $wgLogo = false;
 261  
 262  /**
 263   * The URL path of the shortcut icon.
 264   * @since 1.6
 265   */
 266  $wgFavicon = '/favicon.ico';
 267  
 268  /**
 269   * The URL path of the icon for iPhone and iPod Touch web app bookmarks.
 270   * Defaults to no icon.
 271   * @since 1.12
 272   */
 273  $wgAppleTouchIcon = false;
 274  
 275  /**
 276   * The local filesystem path to a temporary directory. This is not required to
 277   * be web accessible.
 278   *
 279   * When this setting is set to false, its value will be set through a call
 280   * to wfTempDir(). See that methods implementation for the actual detection
 281   * logic.
 282   *
 283   * Developers should use the global function wfTempDir() instead of this
 284   * variable.
 285   *
 286   * @see wfTempDir()
 287   * @note Default changed to false in MediaWiki 1.20.
 288   */
 289  $wgTmpDirectory = false;
 290  
 291  /**
 292   * If set, this URL is added to the start of $wgUploadPath to form a complete
 293   * upload URL.
 294   * @since 1.4
 295   */
 296  $wgUploadBaseUrl = '';
 297  
 298  /**
 299   * To enable remote on-demand scaling, set this to the thumbnail base URL.
 300   * Full thumbnail URL will be like $wgUploadStashScalerBaseUrl/e/e6/Foo.jpg/123px-Foo.jpg
 301   * where 'e6' are the first two characters of the MD5 hash of the file name.
 302   * If $wgUploadStashScalerBaseUrl is set to false, thumbs are rendered locally as needed.
 303   * @since 1.17
 304   */
 305  $wgUploadStashScalerBaseUrl = false;
 306  
 307  /**
 308   * To set 'pretty' URL paths for actions other than
 309   * plain page views, add to this array.
 310   *
 311   * @par Example:
 312   * Set pretty URL for the edit action:
 313   * @code
 314   *   'edit' => "$wgScriptPath/edit/$1"
 315   * @endcode
 316   *
 317   * There must be an appropriate script or rewrite rule in place to handle these
 318   * URLs.
 319   * @since 1.5
 320   */
 321  $wgActionPaths = array();
 322  
 323  /**@}*/
 324  
 325  /************************************************************************//**
 326   * @name   Files and file uploads
 327   * @{
 328   */
 329  
 330  /**
 331   * Uploads have to be specially set up to be secure
 332   */
 333  $wgEnableUploads = false;
 334  
 335  /**
 336   * The maximum age of temporary (incomplete) uploaded files
 337   */
 338  $wgUploadStashMaxAge = 6 * 3600; // 6 hours
 339  
 340  /**
 341   * Allows to move images and other media files
 342   */
 343  $wgAllowImageMoving = true;
 344  
 345  /**
 346   * Enable deferred upload tasks that use the job queue.
 347   * Only enable this if job runners are set up for both the
 348   * 'AssembleUploadChunks' and 'PublishStashedFile' job types.
 349   *
 350   * @note If you use suhosin, this setting is incompatible with
 351   *   suhosin.session.encrypt.
 352   */
 353  $wgEnableAsyncUploads = false;
 354  
 355  /**
 356   * These are additional characters that should be replaced with '-' in filenames
 357   */
 358  $wgIllegalFileChars = ":";
 359  
 360  /**
 361   * What directory to place deleted uploads in.
 362   * Defaults to "{$wgUploadDirectory}/deleted".
 363   */
 364  $wgDeletedDirectory = false;
 365  
 366  /**
 367   * Set this to true if you use img_auth and want the user to see details on why access failed.
 368   */
 369  $wgImgAuthDetails = false;
 370  
 371  /**
 372   * Map of relative URL directories to match to internal mwstore:// base storage paths.
 373   * For img_auth.php requests, everything after "img_auth.php/" is checked to see
 374   * if starts with any of the prefixes defined here. The prefixes should not overlap.
 375   * The prefix that matches has a corresponding storage path, which the rest of the URL
 376   * is assumed to be relative to. The file at that path (or a 404) is send to the client.
 377   *
 378   * Example:
 379   * $wgImgAuthUrlPathMap['/timeline/'] = 'mwstore://local-fs/timeline-render/';
 380   * The above maps ".../img_auth.php/timeline/X" to "mwstore://local-fs/timeline-render/".
 381   * The name "local-fs" should correspond by name to an entry in $wgFileBackends.
 382   *
 383   * @see $wgFileBackends
 384   */
 385  $wgImgAuthUrlPathMap = array();
 386  
 387  /**
 388   * File repository structures
 389   *
 390   * $wgLocalFileRepo is a single repository structure, and $wgForeignFileRepos is
 391   * an array of such structures. Each repository structure is an associative
 392   * array of properties configuring the repository.
 393   *
 394   * Properties required for all repos:
 395   *   - class            The class name for the repository. May come from the core or an extension.
 396   *                      The core repository classes are FileRepo, LocalRepo, ForeignDBRepo.
 397   *                      FSRepo is also supported for backwards compatibility.
 398   *
 399   *   - name             A unique name for the repository (but $wgLocalFileRepo should be 'local').
 400   *                      The name should consist of alpha-numeric characters.
 401   *   - backend          A file backend name (see $wgFileBackends).
 402   *
 403   * For most core repos:
 404   *   - zones            Associative array of zone names that each map to an array with:
 405   *                          container  : backend container name the zone is in
 406   *                          directory  : root path within container for the zone
 407   *                          url        : base URL to the root of the zone
 408   *                          urlsByExt  : map of file extension types to base URLs
 409   *                                       (useful for using a different cache for videos)
 410   *                      Zones default to using "<repo name>-<zone name>" as the container name
 411   *                      and default to using the container root as the zone's root directory.
 412   *                      Nesting of zone locations within other zones should be avoided.
 413   *   - url              Public zone URL. The 'zones' settings take precedence.
 414   *   - hashLevels       The number of directory levels for hash-based division of files
 415   *   - thumbScriptUrl   The URL for thumb.php (optional, not recommended)
 416   *   - transformVia404  Whether to skip media file transformation on parse and rely on a 404
 417   *                      handler instead.
 418   *   - initialCapital   Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE],
 419   *                      determines whether filenames implicitly start with a capital letter.
 420   *                      The current implementation may give incorrect description page links
 421   *                      when the local $wgCapitalLinks and initialCapital are mismatched.
 422   *   - pathDisclosureProtection
 423   *                      May be 'paranoid' to remove all parameters from error messages, 'none' to
 424   *                      leave the paths in unchanged, or 'simple' to replace paths with
 425   *                      placeholders. Default for LocalRepo is 'simple'.
 426   *   - fileMode         This allows wikis to set the file mode when uploading/moving files. Default
 427   *                      is 0644.
 428   *   - directory        The local filesystem directory where public files are stored. Not used for
 429   *                      some remote repos.
 430   *   - thumbDir         The base thumbnail directory. Defaults to "<directory>/thumb".
 431   *   - thumbUrl         The base thumbnail URL. Defaults to "<url>/thumb".
 432   *   - isPrivate        Set this if measures should always be taken to keep the files private.
 433   *                      One should not trust this to assure that the files are not web readable;
 434   *                      the server configuration should be done manually depending on the backend.
 435   *
 436   * These settings describe a foreign MediaWiki installation. They are optional, and will be ignored
 437   * for local repositories:
 438   *   - descBaseUrl       URL of image description pages, e.g. http://en.wikipedia.org/wiki/File:
 439   *   - scriptDirUrl      URL of the MediaWiki installation, equivalent to $wgScriptPath, e.g.
 440   *                       http://en.wikipedia.org/w
 441   *   - scriptExtension   Script extension of the MediaWiki installation, equivalent to
 442   *                       $wgScriptExtension, e.g. .php5 defaults to .php
 443   *
 444   *   - articleUrl        Equivalent to $wgArticlePath, e.g. http://en.wikipedia.org/wiki/$1
 445   *   - fetchDescription  Fetch the text of the remote file description page. Equivalent to
 446   *                       $wgFetchCommonsDescriptions.
 447   *   - abbrvThreshold    File names over this size will use the short form of thumbnail names.
 448   *                       Short thumbnail names only have the width, parameters, and the extension.
 449   *
 450   * ForeignDBRepo:
 451   *   - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags
 452   *                       equivalent to the corresponding member of $wgDBservers
 453   *   - tablePrefix       Table prefix, the foreign wiki's $wgDBprefix
 454   *   - hasSharedCache    True if the wiki's shared cache is accessible via the local $wgMemc
 455   *
 456   * ForeignAPIRepo:
 457   *   - apibase              Use for the foreign API's URL
 458   *   - apiThumbCacheExpiry  How long to locally cache thumbs for
 459   *
 460   * If you leave $wgLocalFileRepo set to false, Setup will fill in appropriate values.
 461   * Otherwise, set $wgLocalFileRepo to a repository structure as described above.
 462   * If you set $wgUseInstantCommons to true, it will add an entry for Commons.
 463   * If you set $wgForeignFileRepos to an array of repository structures, those will
 464   * be searched after the local file repo.
 465   * Otherwise, you will only have access to local media files.
 466   *
 467   * @see Setup.php for an example usage and default initialization.
 468   */
 469  $wgLocalFileRepo = false;
 470  
 471  /**
 472   * @see $wgLocalFileRepo
 473   */
 474  $wgForeignFileRepos = array();
 475  
 476  /**
 477   * Use Commons as a remote file repository. Essentially a wrapper, when this
 478   * is enabled $wgForeignFileRepos will point at Commons with a set of default
 479   * settings
 480   */
 481  $wgUseInstantCommons = false;
 482  
 483  /**
 484   * File backend structure configuration.
 485   *
 486   * This is an array of file backend configuration arrays.
 487   * Each backend configuration has the following parameters:
 488   *  - 'name'         : A unique name for the backend
 489   *  - 'class'        : The file backend class to use
 490   *  - 'wikiId'       : A unique string that identifies the wiki (container prefix)
 491   *  - 'lockManager'  : The name of a lock manager (see $wgLockManagers)
 492   *
 493   * See FileBackend::__construct() for more details.
 494   * Additional parameters are specific to the file backend class used.
 495   * These settings should be global to all wikis when possible.
 496   *
 497   * There are two particularly important aspects about each backend:
 498   *   - a) Whether it is fully qualified or wiki-relative.
 499   *        By default, the paths of files are relative to the current wiki,
 500   *        which works via prefixing them with the current wiki ID when accessed.
 501   *        Setting 'wikiId' forces the backend to be fully qualified by prefixing
 502   *        all paths with the specified value instead. This can be useful if
 503   *        multiple wikis need to share the same data. Note that 'name' is *not*
 504   *        part of any prefix and thus should not be relied upon for namespacing.
 505   *   - b) Whether it is only defined for some wikis or is defined on all
 506   *        wikis in the wiki farm. Defining a backend globally is useful
 507   *        if multiple wikis need to share the same data.
 508   * One should be aware of these aspects when configuring a backend for use with
 509   * any basic feature or plugin. For example, suppose an extension stores data for
 510   * different wikis in different directories and sometimes needs to access data from
 511   * a foreign wiki's directory in order to render a page on given wiki. The extension
 512   * would need a fully qualified backend that is defined on all wikis in the wiki farm.
 513   */
 514  $wgFileBackends = array();
 515  
 516  /**
 517   * Array of configuration arrays for each lock manager.
 518   * Each backend configuration has the following parameters:
 519   *  - 'name'        : A unique name for the lock manager
 520   *  - 'class'       : The lock manger class to use
 521   *
 522   * See LockManager::__construct() for more details.
 523   * Additional parameters are specific to the lock manager class used.
 524   * These settings should be global to all wikis.
 525   */
 526  $wgLockManagers = array();
 527  
 528  /**
 529   * Show Exif data, on by default if available.
 530   * Requires PHP's Exif extension: http://www.php.net/manual/en/ref.exif.php
 531   *
 532   * @note FOR WINDOWS USERS:
 533   * To enable Exif functions, add the following lines to the "Windows
 534   * extensions" section of php.ini:
 535   * @code{.ini}
 536   * extension=extensions/php_mbstring.dll
 537   * extension=extensions/php_exif.dll
 538   * @endcode
 539   */
 540  $wgShowEXIF = function_exists( 'exif_read_data' );
 541  
 542  /**
 543   * If to automatically update the img_metadata field
 544   * if the metadata field is outdated but compatible with the current version.
 545   * Defaults to false.
 546   */
 547  $wgUpdateCompatibleMetadata = false;
 548  
 549  /**
 550   * If you operate multiple wikis, you can define a shared upload path here.
 551   * Uploads to this wiki will NOT be put there - they will be put into
 552   * $wgUploadDirectory.
 553   * If $wgUseSharedUploads is set, the wiki will look in the shared repository if
 554   * no file of the given name is found in the local repository (for [[File:..]],
 555   * [[Media:..]] links). Thumbnails will also be looked for and generated in this
 556   * directory.
 557   *
 558   * Note that these configuration settings can now be defined on a per-
 559   * repository basis for an arbitrary number of file repositories, using the
 560   * $wgForeignFileRepos variable.
 561   */
 562  $wgUseSharedUploads = false;
 563  
 564  /**
 565   * Full path on the web server where shared uploads can be found
 566   */
 567  $wgSharedUploadPath = "http://commons.wikimedia.org/shared/images";
 568  
 569  /**
 570   * Fetch commons image description pages and display them on the local wiki?
 571   */
 572  $wgFetchCommonsDescriptions = false;
 573  
 574  /**
 575   * Path on the file system where shared uploads can be found.
 576   */
 577  $wgSharedUploadDirectory = "/var/www/wiki3/images";
 578  
 579  /**
 580   * DB name with metadata about shared directory.
 581   * Set this to false if the uploads do not come from a wiki.
 582   */
 583  $wgSharedUploadDBname = false;
 584  
 585  /**
 586   * Optional table prefix used in database.
 587   */
 588  $wgSharedUploadDBprefix = '';
 589  
 590  /**
 591   * Cache shared metadata in memcached.
 592   * Don't do this if the commons wiki is in a different memcached domain
 593   */
 594  $wgCacheSharedUploads = true;
 595  
 596  /**
 597   * Allow for upload to be copied from an URL.
 598   * The timeout for copy uploads is set by $wgCopyUploadTimeout.
 599   * You have to assign the user right 'upload_by_url' to a user group, to use this.
 600   */
 601  $wgAllowCopyUploads = false;
 602  
 603  /**
 604   * Allow asynchronous copy uploads.
 605   * This feature is experimental and broken as of r81612.
 606   */
 607  $wgAllowAsyncCopyUploads = false;
 608  
 609  /**
 610   * A list of domains copy uploads can come from
 611   *
 612   * @since 1.20
 613   */
 614  $wgCopyUploadsDomains = array();
 615  
 616  /**
 617   * Enable copy uploads from Special:Upload. $wgAllowCopyUploads must also be
 618   * true. If $wgAllowCopyUploads is true, but this is false, you will only be
 619   * able to perform copy uploads from the API or extensions (e.g. UploadWizard).
 620   */
 621  $wgCopyUploadsFromSpecialUpload = false;
 622  
 623  /**
 624   * Proxy to use for copy upload requests.
 625   * @since 1.20
 626   */
 627  $wgCopyUploadProxy = false;
 628  
 629  /**
 630   * Different timeout for upload by url
 631   * This could be useful since when fetching large files, you may want a
 632   * timeout longer than the default $wgHTTPTimeout. False means fallback
 633   * to default.
 634   *
 635   * @since 1.22
 636   */
 637  $wgCopyUploadTimeout = false;
 638  
 639  /**
 640   * Different timeout for upload by url when run as a background job
 641   * This could be useful since when fetching large files via job queue,
 642   * you may want a different timeout, especially because there is no
 643   * http request being kept alive.
 644   *
 645   * false means fallback to $wgCopyUploadTimeout.
 646   * @since 1.22
 647   */
 648  $wgCopyUploadAsyncTimeout = false;
 649  
 650  /**
 651   * Max size for uploads, in bytes. If not set to an array, applies to all
 652   * uploads. If set to an array, per upload type maximums can be set, using the
 653   * file and url keys. If the * key is set this value will be used as maximum
 654   * for non-specified types.
 655   *
 656   * @par Example:
 657   * @code
 658   * $wgMaxUploadSize = array(
 659   *     '*' => 250 * 1024,
 660   *     'url' => 500 * 1024,
 661   * );
 662   * @endcode
 663   * Sets the maximum for all uploads to 250 kB except for upload-by-url, which
 664   * will have a maximum of 500 kB.
 665   */
 666  $wgMaxUploadSize = 1024 * 1024 * 100; # 100MB
 667  
 668  /**
 669   * Point the upload navigation link to an external URL
 670   * Useful if you want to use a shared repository by default
 671   * without disabling local uploads (use $wgEnableUploads = false for that).
 672   *
 673   * @par Example:
 674   * @code
 675   * $wgUploadNavigationUrl = 'http://commons.wikimedia.org/wiki/Special:Upload';
 676   * @endcode
 677   */
 678  $wgUploadNavigationUrl = false;
 679  
 680  /**
 681   * Point the upload link for missing files to an external URL, as with
 682   * $wgUploadNavigationUrl. The URL will get "(?|&)wpDestFile=<filename>"
 683   * appended to it as appropriate.
 684   */
 685  $wgUploadMissingFileUrl = false;
 686  
 687  /**
 688   * Give a path here to use thumb.php for thumbnail generation on client
 689   * request, instead of generating them on render and outputting a static URL.
 690   * This is necessary if some of your apache servers don't have read/write
 691   * access to the thumbnail path.
 692   *
 693   * @par Example:
 694   * @code
 695   *   $wgThumbnailScriptPath = "{$wgScriptPath}/thumb{$wgScriptExtension}";
 696   * @endcode
 697   */
 698  $wgThumbnailScriptPath = false;
 699  
 700  /**
 701   * @see $wgThumbnailScriptPath
 702   */
 703  $wgSharedThumbnailScriptPath = false;
 704  
 705  /**
 706   * Set this to false if you do not want MediaWiki to divide your images
 707   * directory into many subdirectories, for improved performance.
 708   *
 709   * It's almost always good to leave this enabled. In previous versions of
 710   * MediaWiki, some users set this to false to allow images to be added to the
 711   * wiki by simply copying them into $wgUploadDirectory and then running
 712   * maintenance/rebuildImages.php to register them in the database. This is no
 713   * longer recommended, use maintenance/importImages.php instead.
 714   *
 715   * @note That this variable may be ignored if $wgLocalFileRepo is set.
 716   * @todo Deprecate the setting and ultimately remove it from Core.
 717   */
 718  $wgHashedUploadDirectory = true;
 719  
 720  /**
 721   * Set the following to false especially if you have a set of files that need to
 722   * be accessible by all wikis, and you do not want to use the hash (path/a/aa/)
 723   * directory layout.
 724   */
 725  $wgHashedSharedUploadDirectory = true;
 726  
 727  /**
 728   * Base URL for a repository wiki. Leave this blank if uploads are just stored
 729   * in a shared directory and not meant to be accessible through a separate wiki.
 730   * Otherwise the image description pages on the local wiki will link to the
 731   * image description page on this wiki.
 732   *
 733   * Please specify the namespace, as in the example below.
 734   */
 735  $wgRepositoryBaseUrl = "http://commons.wikimedia.org/wiki/File:";
 736  
 737  /**
 738   * This is the list of preferred extensions for uploading files. Uploading files
 739   * with extensions not in this list will trigger a warning.
 740   *
 741   * @warning If you add any OpenOffice or Microsoft Office file formats here,
 742   * such as odt or doc, and untrusted users are allowed to upload files, then
 743   * your wiki will be vulnerable to cross-site request forgery (CSRF).
 744   */
 745  $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' );
 746  
 747  /**
 748   * Files with these extensions will never be allowed as uploads.
 749   * An array of file extensions to blacklist. You should append to this array
 750   * if you want to blacklist additional files.
 751   */
 752  $wgFileBlacklist = array(
 753      # HTML may contain cookie-stealing JavaScript and web bugs
 754      'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht',
 755      # PHP scripts may execute arbitrary code on the server
 756      'php', 'phtml', 'php3', 'php4', 'php5', 'phps',
 757      # Other types that may be interpreted by some servers
 758      'shtml', 'jhtml', 'pl', 'py', 'cgi',
 759      # May contain harmful executables for Windows victims
 760      'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );
 761  
 762  /**
 763   * Files with these MIME types will never be allowed as uploads
 764   * if $wgVerifyMimeType is enabled.
 765   */
 766  $wgMimeTypeBlacklist = array(
 767      # HTML may contain cookie-stealing JavaScript and web bugs
 768      'text/html', 'text/javascript', 'text/x-javascript', 'application/x-shellscript',
 769      # PHP scripts may execute arbitrary code on the server
 770      'application/x-php', 'text/x-php',
 771      # Other types that may be interpreted by some servers
 772      'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh',
 773      # Client-side hazards on Internet Explorer
 774      'text/scriptlet', 'application/x-msdownload',
 775      # Windows metafile, client-side vulnerability on some systems
 776      'application/x-msmetafile',
 777  );
 778  
 779  /**
 780   * Allow Java archive uploads.
 781   * This is not recommended for public wikis since a maliciously-constructed
 782   * applet running on the same domain as the wiki can steal the user's cookies.
 783   */
 784  $wgAllowJavaUploads = false;
 785  
 786  /**
 787   * This is a flag to determine whether or not to check file extensions on upload.
 788   *
 789   * @warning Setting this to false is insecure for public wikis.
 790   */
 791  $wgCheckFileExtensions = true;
 792  
 793  /**
 794   * If this is turned off, users may override the warning for files not covered
 795   * by $wgFileExtensions.
 796   *
 797   * @warning Setting this to false is insecure for public wikis.
 798   */
 799  $wgStrictFileExtensions = true;
 800  
 801  /**
 802   * Setting this to true will disable the upload system's checks for HTML/JavaScript.
 803   *
 804   * @warning THIS IS VERY DANGEROUS on a publicly editable site, so USE
 805   * $wgGroupPermissions TO RESTRICT UPLOADING to only those that you trust
 806   */
 807  $wgDisableUploadScriptChecks = false;
 808  
 809  /**
 810   * Warn if uploaded files are larger than this (in bytes), or false to disable
 811   */
 812  $wgUploadSizeWarning = false;
 813  
 814  /**
 815   * list of trusted media-types and MIME types.
 816   * Use the MEDIATYPE_xxx constants to represent media types.
 817   * This list is used by File::isSafeFile
 818   *
 819   * Types not listed here will have a warning about unsafe content
 820   * displayed on the images description page. It would also be possible
 821   * to use this for further restrictions, like disabling direct
 822   * [[media:...]] links for non-trusted formats.
 823   */
 824  $wgTrustedMediaFormats = array(
 825      MEDIATYPE_BITMAP, //all bitmap formats
 826      MEDIATYPE_AUDIO, //all audio formats
 827      MEDIATYPE_VIDEO, //all plain video formats
 828      "image/svg+xml", //svg (only needed if inline rendering of svg is not supported)
 829      "application/pdf", //PDF files
 830      #"application/x-shockwave-flash", //flash/shockwave movie
 831  );
 832  
 833  /**
 834   * Plugins for media file type handling.
 835   * Each entry in the array maps a MIME type to a class name
 836   */
 837  $wgMediaHandlers = array(
 838      'image/jpeg' => 'JpegHandler',
 839      'image/png' => 'PNGHandler',
 840      'image/gif' => 'GIFHandler',
 841      'image/tiff' => 'TiffHandler',
 842      'image/x-ms-bmp' => 'BmpHandler',
 843      'image/x-bmp' => 'BmpHandler',
 844      'image/x-xcf' => 'XCFHandler',
 845      'image/svg+xml' => 'SvgHandler', // official
 846      'image/svg' => 'SvgHandler', // compat
 847      'image/vnd.djvu' => 'DjVuHandler', // official
 848      'image/x.djvu' => 'DjVuHandler', // compat
 849      'image/x-djvu' => 'DjVuHandler', // compat
 850  );
 851  
 852  /**
 853   * Plugins for page content model handling.
 854   * Each entry in the array maps a model id to a class name.
 855   *
 856   * @since 1.21
 857   */
 858  $wgContentHandlers = array(
 859      // the usual case
 860      CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler',
 861      // dumb version, no syntax highlighting
 862      CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler',
 863      // simple implementation, for use by extensions, etc.
 864      CONTENT_MODEL_JSON => 'JsonContentHandler',
 865      // dumb version, no syntax highlighting
 866      CONTENT_MODEL_CSS => 'CssContentHandler',
 867      // plain text, for use by extensions, etc.
 868      CONTENT_MODEL_TEXT => 'TextContentHandler',
 869  );
 870  
 871  /**
 872   * Whether to enable server-side image thumbnailing. If false, images will
 873   * always be sent to the client in full resolution, with appropriate width= and
 874   * height= attributes on the <img> tag for the client to do its own scaling.
 875   */
 876  $wgUseImageResize = true;
 877  
 878  /**
 879   * Resizing can be done using PHP's internal image libraries or using
 880   * ImageMagick or another third-party converter, e.g. GraphicMagick.
 881   * These support more file formats than PHP, which only supports PNG,
 882   * GIF, JPG, XBM and WBMP.
 883   *
 884   * Use Image Magick instead of PHP builtin functions.
 885   */
 886  $wgUseImageMagick = false;
 887  
 888  /**
 889   * The convert command shipped with ImageMagick
 890   */
 891  $wgImageMagickConvertCommand = '/usr/bin/convert';
 892  
 893  /**
 894   * Sharpening parameter to ImageMagick
 895   */
 896  $wgSharpenParameter = '0x0.4';
 897  
 898  /**
 899   * Reduction in linear dimensions below which sharpening will be enabled
 900   */
 901  $wgSharpenReductionThreshold = 0.85;
 902  
 903  /**
 904   * Temporary directory used for ImageMagick. The directory must exist. Leave
 905   * this set to false to let ImageMagick decide for itself.
 906   */
 907  $wgImageMagickTempDir = false;
 908  
 909  /**
 910   * Use another resizing converter, e.g. GraphicMagick
 911   * %s will be replaced with the source path, %d with the destination
 912   * %w and %h will be replaced with the width and height.
 913   *
 914   * @par Example for GraphicMagick:
 915   * @code
 916   * $wgCustomConvertCommand = "gm convert %s -resize %wx%h %d"
 917   * @endcode
 918   *
 919   * Leave as false to skip this.
 920   */
 921  $wgCustomConvertCommand = false;
 922  
 923  /**
 924   * used for lossless jpeg rotation
 925   *
 926   * @since 1.21
 927   */
 928  $wgJpegTran = '/usr/bin/jpegtran';
 929  
 930  /**
 931   * Some tests and extensions use exiv2 to manipulate the Exif metadata in some
 932   * image formats.
 933   */
 934  $wgExiv2Command = '/usr/bin/exiv2';
 935  
 936  /**
 937   * Scalable Vector Graphics (SVG) may be uploaded as images.
 938   * Since SVG support is not yet standard in browsers, it is
 939   * necessary to rasterize SVGs to PNG as a fallback format.
 940   *
 941   * An external program is required to perform this conversion.
 942   * If set to an array, the first item is a PHP callable and any further items
 943   * are passed as parameters after $srcPath, $dstPath, $width, $height
 944   */
 945  $wgSVGConverters = array(
 946      'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output',
 947      'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output',
 948      'inkscape' => '$path/inkscape -z -w $width -f $input -e $output',
 949      'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d '
 950          . '$output $input',
 951      'rsvg' => '$path/rsvg -w $width -h $height $input $output',
 952      'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
 953      'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
 954  );
 955  
 956  /**
 957   * Pick a converter defined in $wgSVGConverters
 958   */
 959  $wgSVGConverter = 'ImageMagick';
 960  
 961  /**
 962   * If not in the executable PATH, specify the SVG converter path.
 963   */
 964  $wgSVGConverterPath = '';
 965  
 966  /**
 967   * Don't scale a SVG larger than this
 968   */
 969  $wgSVGMaxSize = 2048;
 970  
 971  /**
 972   * Don't read SVG metadata beyond this point.
 973   * Default is 1024*256 bytes
 974   */
 975  $wgSVGMetadataCutoff = 262144;
 976  
 977  /**
 978   * Disallow <title> element in SVG files.
 979   *
 980   * MediaWiki will reject HTMLesque tags in uploaded files due to idiotic
 981   * browsers which can not perform basic stuff like MIME detection and which are
 982   * vulnerable to further idiots uploading crap files as images.
 983   *
 984   * When this directive is on, "<title>" will be allowed in files with an
 985   * "image/svg+xml" MIME type. You should leave this disabled if your web server
 986   * is misconfigured and doesn't send appropriate MIME types for SVG images.
 987   */
 988  $wgAllowTitlesInSVG = false;
 989  
 990  /**
 991   * The maximum number of pixels a source image can have if it is to be scaled
 992   * down by a scaler that requires the full source image to be decompressed
 993   * and stored in decompressed form, before the thumbnail is generated.
 994   *
 995   * This provides a limit on memory usage for the decompression side of the
 996   * image scaler. The limit is used when scaling PNGs with any of the
 997   * built-in image scalers, such as ImageMagick or GD. It is ignored for
 998   * JPEGs with ImageMagick, and when using the VipsScaler extension.
 999   *
1000   * The default is 50 MB if decompressed to RGBA form, which corresponds to
1001   * 12.5 million pixels or 3500x3500.
1002   */
1003  $wgMaxImageArea = 1.25e7;
1004  
1005  /**
1006   * Force thumbnailing of animated GIFs above this size to a single
1007   * frame instead of an animated thumbnail.  As of MW 1.17 this limit
1008   * is checked against the total size of all frames in the animation.
1009   * It probably makes sense to keep this equal to $wgMaxImageArea.
1010   */
1011  $wgMaxAnimatedGifArea = 1.25e7;
1012  
1013  /**
1014   * Browsers don't support TIFF inline generally...
1015   * For inline display, we need to convert to PNG or JPEG.
1016   * Note scaling should work with ImageMagick, but may not with GD scaling.
1017   *
1018   * @par Example:
1019   * @code
1020   *  // PNG is lossless, but inefficient for photos
1021   *  $wgTiffThumbnailType = array( 'png', 'image/png' );
1022   *  // JPEG is good for photos, but has no transparency support. Bad for diagrams.
1023   *  $wgTiffThumbnailType = array( 'jpg', 'image/jpeg' );
1024   * @endcode
1025   */
1026  $wgTiffThumbnailType = false;
1027  
1028  /**
1029   * If rendered thumbnail files are older than this timestamp, they
1030   * will be rerendered on demand as if the file didn't already exist.
1031   * Update if there is some need to force thumbs and SVG rasterizations
1032   * to rerender, such as fixes to rendering bugs.
1033   */
1034  $wgThumbnailEpoch = '20030516000000';
1035  
1036  /**
1037   * Certain operations are avoided if there were too many recent failures,
1038   * for example, thumbnail generation. Bump this value to invalidate all
1039   * memory of failed operations and thus allow further attempts to resume.
1040   * This is useful when a cause for the failures has been found and fixed.
1041   */
1042  $wgAttemptFailureEpoch = 1;
1043  
1044  /**
1045   * If set, inline scaled images will still produce "<img>" tags ready for
1046   * output instead of showing an error message.
1047   *
1048   * This may be useful if errors are transitory, especially if the site
1049   * is configured to automatically render thumbnails on request.
1050   *
1051   * On the other hand, it may obscure error conditions from debugging.
1052   * Enable the debug log or the 'thumbnail' log group to make sure errors
1053   * are logged to a file for review.
1054   */
1055  $wgIgnoreImageErrors = false;
1056  
1057  /**
1058   * Allow thumbnail rendering on page view. If this is false, a valid
1059   * thumbnail URL is still output, but no file will be created at
1060   * the target location. This may save some time if you have a
1061   * thumb.php or 404 handler set up which is faster than the regular
1062   * webserver(s).
1063   */
1064  $wgGenerateThumbnailOnParse = true;
1065  
1066  /**
1067   * Show thumbnails for old images on the image description page
1068   */
1069  $wgShowArchiveThumbnails = true;
1070  
1071  /**
1072   * If set to true, images that contain certain the exif orientation tag will
1073   * be rotated accordingly. If set to null, try to auto-detect whether a scaler
1074   * is available that can rotate.
1075   */
1076  $wgEnableAutoRotation = null;
1077  
1078  /**
1079   * Internal name of virus scanner. This serves as a key to the
1080   * $wgAntivirusSetup array. Set this to NULL to disable virus scanning. If not
1081   * null, every file uploaded will be scanned for viruses.
1082   */
1083  $wgAntivirus = null;
1084  
1085  /**
1086   * Configuration for different virus scanners. This an associative array of
1087   * associative arrays. It contains one setup array per known scanner type.
1088   * The entry is selected by $wgAntivirus, i.e.
1089   * valid values for $wgAntivirus are the keys defined in this array.
1090   *
1091   * The configuration array for each scanner contains the following keys:
1092   * "command", "codemap", "messagepattern":
1093   *
1094   * "command" is the full command to call the virus scanner - %f will be
1095   * replaced with the name of the file to scan. If not present, the filename
1096   * will be appended to the command. Note that this must be overwritten if the
1097   * scanner is not in the system path; in that case, please set
1098   * $wgAntivirusSetup[$wgAntivirus]['command'] to the desired command with full
1099   * path.
1100   *
1101   * "codemap" is a mapping of exit code to return codes of the detectVirus
1102   * function in SpecialUpload.
1103   *   - An exit code mapped to AV_SCAN_FAILED causes the function to consider
1104   *     the scan to be failed. This will pass the file if $wgAntivirusRequired
1105   *     is not set.
1106   *   - An exit code mapped to AV_SCAN_ABORTED causes the function to consider
1107   *     the file to have an unsupported format, which is probably immune to
1108   *     viruses. This causes the file to pass.
1109   *   - An exit code mapped to AV_NO_VIRUS will cause the file to pass, meaning
1110   *     no virus was found.
1111   *   - All other codes (like AV_VIRUS_FOUND) will cause the function to report
1112   *     a virus.
1113   *   - You may use "*" as a key in the array to catch all exit codes not mapped otherwise.
1114   *
1115   * "messagepattern" is a perl regular expression to extract the meaningful part of the scanners
1116   * output. The relevant part should be matched as group one (\1).
1117   * If not defined or the pattern does not match, the full message is shown to the user.
1118   */
1119  $wgAntivirusSetup = array(
1120  
1121      #setup for clamav
1122      'clamav' => array(
1123          'command' => 'clamscan --no-summary ',
1124          'codemap' => array(
1125              "0" => AV_NO_VIRUS, # no virus
1126              "1" => AV_VIRUS_FOUND, # virus found
1127              "52" => AV_SCAN_ABORTED, # unsupported file format (probably immune)
1128              "*" => AV_SCAN_FAILED, # else scan failed
1129          ),
1130          'messagepattern' => '/.*?:(.*)/sim',
1131      ),
1132  );
1133  
1134  /**
1135   * Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected.
1136   */
1137  $wgAntivirusRequired = true;
1138  
1139  /**
1140   * Determines if the MIME type of uploaded files should be checked
1141   */
1142  $wgVerifyMimeType = true;
1143  
1144  /**
1145   * Sets the MIME type definition file to use by MimeMagic.php.
1146   * Set to null, to use built-in defaults only.
1147   * example: $wgMimeTypeFile = '/etc/mime.types';
1148   */
1149  $wgMimeTypeFile = 'includes/mime.types';
1150  
1151  /**
1152   * Sets the MIME type info file to use by MimeMagic.php.
1153   * Set to null, to use built-in defaults only.
1154   */
1155  $wgMimeInfoFile = 'includes/mime.info';
1156  
1157  /**
1158   * Sets an external MIME detector program. The command must print only
1159   * the MIME type to standard output.
1160   * The name of the file to process will be appended to the command given here.
1161   * If not set or NULL, PHP's fileinfo extension will be used if available.
1162   *
1163   * @par Example:
1164   * @code
1165   * #$wgMimeDetectorCommand = "file -bi"; # use external MIME detector (Linux)
1166   * @endcode
1167   */
1168  $wgMimeDetectorCommand = null;
1169  
1170  /**
1171   * Switch for trivial MIME detection. Used by thumb.php to disable all fancy
1172   * things, because only a few types of images are needed and file extensions
1173   * can be trusted.
1174   */
1175  $wgTrivialMimeDetection = false;
1176  
1177  /**
1178   * Additional XML types we can allow via MIME-detection.
1179   * array = ( 'rootElement' => 'associatedMimeType' )
1180   */
1181  $wgXMLMimeTypes = array(
1182      'http://www.w3.org/2000/svg:svg' => 'image/svg+xml',
1183      'svg' => 'image/svg+xml',
1184      'http://www.lysator.liu.se/~alla/dia/:diagram' => 'application/x-dia-diagram',
1185      'http://www.w3.org/1999/xhtml:html' => 'text/html', // application/xhtml+xml?
1186      'html' => 'text/html', // application/xhtml+xml?
1187  );
1188  
1189  /**
1190   * Limit images on image description pages to a user-selectable limit. In order
1191   * to reduce disk usage, limits can only be selected from a list.
1192   * The user preference is saved as an array offset in the database, by default
1193   * the offset is set with $wgDefaultUserOptions['imagesize']. Make sure you
1194   * change it if you alter the array (see bug 8858).
1195   * This is the list of settings the user can choose from:
1196   */
1197  $wgImageLimits = array(
1198      array( 320, 240 ),
1199      array( 640, 480 ),
1200      array( 800, 600 ),
1201      array( 1024, 768 ),
1202      array( 1280, 1024 )
1203  );
1204  
1205  /**
1206   * Adjust thumbnails on image pages according to a user setting. In order to
1207   * reduce disk usage, the values can only be selected from a list. This is the
1208   * list of settings the user can choose from:
1209   */
1210  $wgThumbLimits = array(
1211      120,
1212      150,
1213      180,
1214      200,
1215      250,
1216      300
1217  );
1218  
1219  /**
1220   * When defined, is an array of image widths used as buckets for thumbnail generation.
1221   * The goal is to save resources by generating thumbnails based on reference buckets instead of
1222   * always using the original. This will incur a speed gain but cause a quality loss.
1223   *
1224   * The buckets generation is chained, with each bucket generated based on the above bucket
1225   * when possible. File handlers have to opt into using that feature. For now only BitmapHandler
1226   * supports it.
1227   */
1228  $wgThumbnailBuckets = null;
1229  
1230  /**
1231   * When using thumbnail buckets as defined above, this sets the minimum distance to the bucket
1232   * above the requested size. The distance represents how many extra pixels of width the bucket
1233   * needs in order to be used as the reference for a given thumbnail. For example, with the
1234   * following buckets:
1235   *
1236   * $wgThumbnailBuckets = array ( 128, 256, 512 );
1237   *
1238   * and a distance of 50:
1239   *
1240   * $wgThumbnailMinimumBucketDistance = 50;
1241   *
1242   * If we want to render a thumbnail of width 220px, the 512px bucket will be used,
1243   * because 220 + 50 = 270 and the closest bucket bigger than 270px is 512.
1244   */
1245  $wgThumbnailMinimumBucketDistance = 50;
1246  
1247  /**
1248   * Default parameters for the "<gallery>" tag
1249   */
1250  $wgGalleryOptions = array(
1251      'imagesPerRow' => 0, // Default number of images per-row in the gallery. 0 -> Adapt to screensize
1252      'imageWidth' => 120, // Width of the cells containing images in galleries (in "px")
1253      'imageHeight' => 120, // Height of the cells containing images in galleries (in "px")
1254      'captionLength' => 25, // Length of caption to truncate (in characters)
1255      'showBytes' => true, // Show the filesize in bytes in categories
1256      'mode' => 'traditional',
1257  );
1258  
1259  /**
1260   * Adjust width of upright images when parameter 'upright' is used
1261   * This allows a nicer look for upright images without the need to fix the width
1262   * by hardcoded px in wiki sourcecode.
1263   */
1264  $wgThumbUpright = 0.75;
1265  
1266  /**
1267   * Default value for chmoding of new directories.
1268   */
1269  $wgDirectoryMode = 0777;
1270  
1271  /**
1272   * Generate and use thumbnails suitable for screens with 1.5 and 2.0 pixel densities.
1273   *
1274   * This means a 320x240 use of an image on the wiki will also generate 480x360 and 640x480
1275   * thumbnails, output via data-src-1-5 and data-src-2-0. Runtime JavaScript switches the
1276   * images in after loading the original low-resolution versions depending on the reported
1277   * window.devicePixelRatio.
1278   */
1279  $wgResponsiveImages = true;
1280  
1281  /**
1282   * @name DJVU settings
1283   * @{
1284   */
1285  
1286  /**
1287   * Path of the djvudump executable
1288   * Enable this and $wgDjvuRenderer to enable djvu rendering
1289   * example: $wgDjvuDump = 'djvudump';
1290   */
1291  $wgDjvuDump = null;
1292  
1293  /**
1294   * Path of the ddjvu DJVU renderer
1295   * Enable this and $wgDjvuDump to enable djvu rendering
1296   * example: $wgDjvuRenderer = 'ddjvu';
1297   */
1298  $wgDjvuRenderer = null;
1299  
1300  /**
1301   * Path of the djvutxt DJVU text extraction utility
1302   * Enable this and $wgDjvuDump to enable text layer extraction from djvu files
1303   * example: $wgDjvuTxt = 'djvutxt';
1304   */
1305  $wgDjvuTxt = null;
1306  
1307  /**
1308   * Path of the djvutoxml executable
1309   * This works like djvudump except much, much slower as of version 3.5.
1310   *
1311   * For now we recommend you use djvudump instead. The djvuxml output is
1312   * probably more stable, so we'll switch back to it as soon as they fix
1313   * the efficiency problem.
1314   * http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
1315   *
1316   * @par Example:
1317   * @code
1318   * $wgDjvuToXML = 'djvutoxml';
1319   * @endcode
1320   */
1321  $wgDjvuToXML = null;
1322  
1323  /**
1324   * Shell command for the DJVU post processor
1325   * Default: pnmtojpeg, since ddjvu generates ppm output
1326   * Set this to false to output the ppm file directly.
1327   */
1328  $wgDjvuPostProcessor = 'pnmtojpeg';
1329  
1330  /**
1331   * File extension for the DJVU post processor output
1332   */
1333  $wgDjvuOutputExtension = 'jpg';
1334  
1335  /** @} */ # end of DJvu }
1336  
1337  /** @} */ # end of file uploads }
1338  
1339  /************************************************************************//**
1340   * @name   Email settings
1341   * @{
1342   */
1343  
1344  
1345  /**
1346   * Site admin email address.
1347   *
1348   * Defaults to "wikiadmin@{$wgServerName}".
1349   */
1350  $wgEmergencyContact = false;
1351  
1352  /**
1353   * Password reminder email address.
1354   *
1355   * The address we should use as sender when a user is requesting his password.
1356   *
1357   * Defaults to "apache@{$wgServerName}".
1358   */
1359  $wgPasswordSender = false;
1360  
1361  /**
1362   * Password reminder name
1363   *
1364   * @deprecated since 1.23; use the system message 'emailsender' instead.
1365   */
1366  $wgPasswordSenderName = 'MediaWiki Mail';
1367  
1368  /**
1369   * Dummy address which should be accepted during mail send action.
1370   * It might be necessary to adapt the address or to set it equal
1371   * to the $wgEmergencyContact address.
1372   */
1373  $wgNoReplyAddress = '[email protected]';
1374  
1375  /**
1376   * Set to true to enable the e-mail basic features:
1377   * Password reminders, etc. If sending e-mail on your
1378   * server doesn't work, you might want to disable this.
1379   */
1380  $wgEnableEmail = true;
1381  
1382  /**
1383   * Set to true to enable user-to-user e-mail.
1384   * This can potentially be abused, as it's hard to track.
1385   */
1386  $wgEnableUserEmail = true;
1387  
1388  /**
1389   * Set to true to put the sending user's email in a Reply-To header
1390   * instead of From. ($wgEmergencyContact will be used as From.)
1391   *
1392   * Some mailers (eg sSMTP) set the SMTP envelope sender to the From value,
1393   * which can cause problems with SPF validation and leak recipient addresses
1394   * when bounces are sent to the sender.
1395   */
1396  $wgUserEmailUseReplyTo = false;
1397  
1398  /**
1399   * Minimum time, in hours, which must elapse between password reminder
1400   * emails for a given account. This is to prevent abuse by mail flooding.
1401   */
1402  $wgPasswordReminderResendTime = 24;
1403  
1404  /**
1405   * The time, in seconds, when an emailed temporary password expires.
1406   */
1407  $wgNewPasswordExpiry = 3600 * 24 * 7;
1408  
1409  /**
1410   * The time, in seconds, when an email confirmation email expires
1411   */
1412  $wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60;
1413  
1414  /**
1415   * The number of days that a user's password is good for. After this number of days, the
1416   * user will be asked to reset their password. Set to false to disable password expiration.
1417   */
1418  $wgPasswordExpirationDays = false;
1419  
1420  /**
1421   * If a user's password is expired, the number of seconds when they can still login,
1422   * and cancel their password change, but are sent to the password change form on each login.
1423   */
1424  $wgPasswordExpireGrace = 3600 * 24 * 7; // 7 days
1425  
1426  /**
1427   * SMTP Mode.
1428   *
1429   * For using a direct (authenticated) SMTP server connection.
1430   * Default to false or fill an array :
1431   *
1432   * @code
1433   * $wgSMTP = array(
1434   *     'host'     => 'SMTP domain',
1435   *     'IDHost'   => 'domain for MessageID',
1436   *     'port'     => '25',
1437   *     'auth'     => [true|false],
1438   *     'username' => [SMTP username],
1439   *     'password' => [SMTP password],
1440   * );
1441   * @endcode
1442   */
1443  $wgSMTP = false;
1444  
1445  /**
1446   * Additional email parameters, will be passed as the last argument to mail() call.
1447   * If using safe_mode this has no effect
1448   */
1449  $wgAdditionalMailParams = null;
1450  
1451  /**
1452   * For parts of the system that have been updated to provide HTML email content, send
1453   * both text and HTML parts as the body of the email
1454   */
1455  $wgAllowHTMLEmail = false;
1456  
1457  /**
1458   * True: from page editor if s/he opted-in. False: Enotif mails appear to come
1459   * from $wgEmergencyContact
1460   */
1461  $wgEnotifFromEditor = false;
1462  
1463  // TODO move UPO to preferences probably ?
1464  # If set to true, users get a corresponding option in their preferences and can choose to
1465  # enable or disable at their discretion
1466  # If set to false, the corresponding input form on the user preference page is suppressed
1467  # It call this to be a "user-preferences-option (UPO)"
1468  
1469  /**
1470   * Require email authentication before sending mail to an email address.
1471   * This is highly recommended. It prevents MediaWiki from being used as an open
1472   * spam relay.
1473   */
1474  $wgEmailAuthentication = true;
1475  
1476  /**
1477   * Allow users to enable email notification ("enotif") on watchlist changes.
1478   */
1479  $wgEnotifWatchlist = false;
1480  
1481  /**
1482   * Allow users to enable email notification ("enotif") when someone edits their
1483   * user talk page.
1484   */
1485  $wgEnotifUserTalk = false;
1486  
1487  /**
1488   * Set the Reply-to address in notifications to the editor's address, if user
1489   * allowed this in the preferences.
1490   */
1491  $wgEnotifRevealEditorAddress = false;
1492  
1493  /**
1494   * Send notification mails on minor edits to watchlist pages. This is enabled
1495   * by default. Does not affect user talk notifications.
1496   */
1497  $wgEnotifMinorEdits = true;
1498  
1499  /**
1500   * Send a generic mail instead of a personalised mail for each user.  This
1501   * always uses UTC as the time zone, and doesn't include the username.
1502   *
1503   * For pages with many users watching, this can significantly reduce mail load.
1504   * Has no effect when using sendmail rather than SMTP.
1505   */
1506  $wgEnotifImpersonal = false;
1507  
1508  /**
1509   * Maximum number of users to mail at once when using impersonal mail. Should
1510   * match the limit on your mail server.
1511   */
1512  $wgEnotifMaxRecips = 500;
1513  
1514  /**
1515   * Send mails via the job queue. This can be useful to reduce the time it
1516   * takes to save a page that a lot of people are watching.
1517   */
1518  $wgEnotifUseJobQ = false;
1519  
1520  /**
1521   * Use real name instead of username in e-mail "from" field.
1522   */
1523  $wgEnotifUseRealName = false;
1524  
1525  /**
1526   * Array of usernames who will be sent a notification email for every change
1527   * which occurs on a wiki. Users will not be notified of their own changes.
1528   */
1529  $wgUsersNotifiedOnAllChanges = array();
1530  
1531  /** @} */ # end of email settings
1532  
1533  /************************************************************************//**
1534   * @name   Database settings
1535   * @{
1536   */
1537  
1538  /**
1539   * Database host name or IP address
1540   */
1541  $wgDBserver = 'localhost';
1542  
1543  /**
1544   * Database port number (for PostgreSQL and Microsoft SQL Server).
1545   */
1546  $wgDBport = 5432;
1547  
1548  /**
1549   * Name of the database
1550   */
1551  $wgDBname = 'my_wiki';
1552  
1553  /**
1554   * Database username
1555   */
1556  $wgDBuser = 'wikiuser';
1557  
1558  /**
1559   * Database user's password
1560   */
1561  $wgDBpassword = '';
1562  
1563  /**
1564   * Database type
1565   */
1566  $wgDBtype = 'mysql';
1567  
1568  /**
1569   * Whether to use SSL in DB connection.
1570   *
1571   * This setting is only used $wgLBFactoryConf['class'] is set to
1572   * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
1573   * the DBO_SSL flag must be set in the 'flags' option of the database
1574   * connection to achieve the same functionality.
1575   */
1576  $wgDBssl = false;
1577  
1578  /**
1579   * Whether to use compression in DB connection.
1580   *
1581   * This setting is only used $wgLBFactoryConf['class'] is set to
1582   * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
1583   * the DBO_COMPRESS flag must be set in the 'flags' option of the database
1584   * connection to achieve the same functionality.
1585   */
1586  $wgDBcompress = false;
1587  
1588  /**
1589   * Separate username for maintenance tasks. Leave as null to use the default.
1590   */
1591  $wgDBadminuser = null;
1592  
1593  /**
1594   * Separate password for maintenance tasks. Leave as null to use the default.
1595   */
1596  $wgDBadminpassword = null;
1597  
1598  /**
1599   * Search type.
1600   * Leave as null to select the default search engine for the
1601   * selected database type (eg SearchMySQL), or set to a class
1602   * name to override to a custom search engine.
1603   */
1604  $wgSearchType = null;
1605  
1606  /**
1607   * Alternative search types
1608   * Sometimes you want to support multiple search engines for testing. This
1609   * allows users to select their search engine of choice via url parameters
1610   * to Special:Search and the action=search API. If using this, there's no
1611   * need to add $wgSearchType to it, that is handled automatically.
1612   */
1613  $wgSearchTypeAlternatives = null;
1614  
1615  /**
1616   * Table name prefix
1617   */
1618  $wgDBprefix = '';
1619  
1620  /**
1621   * MySQL table options to use during installation or update
1622   */
1623  $wgDBTableOptions = 'ENGINE=InnoDB';
1624  
1625  /**
1626   * SQL Mode - default is turning off all modes, including strict, if set.
1627   * null can be used to skip the setting for performance reasons and assume
1628   * DBA has done his best job.
1629   * String override can be used for some additional fun :-)
1630   */
1631  $wgSQLMode = '';
1632  
1633  /**
1634   * Mediawiki schema
1635   */
1636  $wgDBmwschema = null;
1637  
1638  /**
1639   * To override default SQLite data directory ($docroot/../data)
1640   */
1641  $wgSQLiteDataDir = '';
1642  
1643  /**
1644   * Make all database connections secretly go to localhost. Fool the load balancer
1645   * thinking there is an arbitrarily large cluster of servers to connect to.
1646   * Useful for debugging.
1647   */
1648  $wgAllDBsAreLocalhost = false;
1649  
1650  /**
1651   * Shared database for multiple wikis. Commonly used for storing a user table
1652   * for single sign-on. The server for this database must be the same as for the
1653   * main database.
1654   *
1655   * For backwards compatibility the shared prefix is set to the same as the local
1656   * prefix, and the user table is listed in the default list of shared tables.
1657   * The user_properties table is also added so that users will continue to have their
1658   * preferences shared (preferences were stored in the user table prior to 1.16)
1659   *
1660   * $wgSharedTables may be customized with a list of tables to share in the shared
1661   * database. However it is advised to limit what tables you do share as many of
1662   * MediaWiki's tables may have side effects if you try to share them.
1663   *
1664   * $wgSharedPrefix is the table prefix for the shared database. It defaults to
1665   * $wgDBprefix.
1666   *
1667   * @deprecated since 1.21 In new code, use the $wiki parameter to wfGetLB() to
1668   *   access remote databases. Using wfGetLB() allows the shared database to
1669   *   reside on separate servers to the wiki's own database, with suitable
1670   *   configuration of $wgLBFactoryConf.
1671   */
1672  $wgSharedDB = null;
1673  
1674  /**
1675   * @see $wgSharedDB
1676   */
1677  $wgSharedPrefix = false;
1678  
1679  /**
1680   * @see $wgSharedDB
1681   */
1682  $wgSharedTables = array( 'user', 'user_properties' );
1683  
1684  /**
1685   * Database load balancer
1686   * This is a two-dimensional array, an array of server info structures
1687   * Fields are:
1688   *   - host:        Host name
1689   *   - dbname:      Default database name
1690   *   - user:        DB user
1691   *   - password:    DB password
1692   *   - type:        DB type
1693   *
1694   *   - load:        Ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0.
1695   *                  If this is zero for any given server, no normal query traffic will be
1696   *                  sent to it. It will be excluded from lag checks in maintenance scripts.
1697   *                  The only way it can receive traffic is if groupLoads is used.
1698   *
1699   *   - groupLoads:  array of load ratios, the key is the query group name. A query may belong
1700   *                  to several groups, the most specific group defined here is used.
1701   *
1702   *   - flags:       bit field
1703   *                  - DBO_DEFAULT -- turns on DBO_TRX only if !$wgCommandLineMode (recommended)
1704   *                  - DBO_DEBUG -- equivalent of $wgDebugDumpSql
1705   *                  - DBO_TRX -- wrap entire request in a transaction
1706   *                  - DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php)
1707   *                  - DBO_PERSISTENT -- enables persistent database connections
1708   *                  - DBO_SSL -- uses SSL/TLS encryption in database connections, if available
1709   *                  - DBO_COMPRESS -- uses internal compression in database connections,
1710   *                                    if available
1711   *
1712   *   - max lag:     (optional) Maximum replication lag before a slave will taken out of rotation
1713   *
1714   *   These and any other user-defined properties will be assigned to the mLBInfo member
1715   *   variable of the Database object.
1716   *
1717   * Leave at false to use the single-server variables above. If you set this
1718   * variable, the single-server variables will generally be ignored (except
1719   * perhaps in some command-line scripts).
1720   *
1721   * The first server listed in this array (with key 0) will be the master. The
1722   * rest of the servers will be slaves. To prevent writes to your slaves due to
1723   * accidental misconfiguration or MediaWiki bugs, set read_only=1 on all your
1724   * slaves in my.cnf. You can set read_only mode at runtime using:
1725   *
1726   * @code
1727   *     SET @@read_only=1;
1728   * @endcode
1729   *
1730   * Since the effect of writing to a slave is so damaging and difficult to clean
1731   * up, we at Wikimedia set read_only=1 in my.cnf on all our DB servers, even
1732   * our masters, and then set read_only=0 on masters at runtime.
1733   */
1734  $wgDBservers = false;
1735  
1736  /**
1737   * Load balancer factory configuration
1738   * To set up a multi-master wiki farm, set the class here to something that
1739   * can return a LoadBalancer with an appropriate master on a call to getMainLB().
1740   * The class identified here is responsible for reading $wgDBservers,
1741   * $wgDBserver, etc., so overriding it may cause those globals to be ignored.
1742   *
1743   * The LBFactoryMulti class is provided for this purpose, please see
1744   * includes/db/LBFactoryMulti.php for configuration information.
1745   */
1746  $wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
1747  
1748  /**
1749   * How long to wait for a slave to catch up to the master
1750   * @deprecated since 1.24
1751   */
1752  $wgMasterWaitTimeout = 10;
1753  
1754  /**
1755   * File to log database errors to
1756   */
1757  $wgDBerrorLog = false;
1758  
1759  /**
1760   * Timezone to use in the error log.
1761   * Defaults to the wiki timezone ($wgLocaltimezone).
1762   *
1763   * A list of usable timezones can found at:
1764   * http://php.net/manual/en/timezones.php
1765   *
1766   * @par Examples:
1767   * @code
1768   * $wgLocaltimezone = 'UTC';
1769   * $wgLocaltimezone = 'GMT';
1770   * $wgLocaltimezone = 'PST8PDT';
1771   * $wgLocaltimezone = 'Europe/Sweden';
1772   * $wgLocaltimezone = 'CET';
1773   * @endcode
1774   *
1775   * @since 1.20
1776   */
1777  $wgDBerrorLogTZ = false;
1778  
1779  /**
1780   * Scale load balancer polling time so that under overload conditions, the
1781   * database server receives a SHOW STATUS query at an average interval of this
1782   * many microseconds
1783   */
1784  $wgDBAvgStatusPoll = 2000;
1785  
1786  /**
1787   * Set to true to engage MySQL 4.1/5.0 charset-related features;
1788   * for now will just cause sending of 'SET NAMES=utf8' on connect.
1789   *
1790   * @warning THIS IS EXPERIMENTAL!
1791   *
1792   * May break if you're not using the table defs from mysql5/tables.sql.
1793   * May break if you're upgrading an existing wiki if set differently.
1794   * Broken symptoms likely to include incorrect behavior with page titles,
1795   * usernames, comments etc containing non-ASCII characters.
1796   * Might also cause failures on the object cache and other things.
1797   *
1798   * Even correct usage may cause failures with Unicode supplementary
1799   * characters (those not in the Basic Multilingual Plane) unless MySQL
1800   * has enhanced their Unicode support.
1801   */
1802  $wgDBmysql5 = false;
1803  
1804  /**
1805   * Set true to enable Oracle DCRP (supported from 11gR1 onward)
1806   *
1807   * To use this feature set to true and use a datasource defined as
1808   * POOLED (i.e. in tnsnames definition set server=pooled in connect_data
1809   * block).
1810   *
1811   * Starting from 11gR1 you can use DCRP (Database Resident Connection
1812   * Pool) that maintains established sessions and reuses them on new
1813   * connections.
1814   *
1815   * Not completely tested, but it should fall back on normal connection
1816   * in case the pool is full or the datasource is not configured as
1817   * pooled.
1818   * And the other way around; using oci_pconnect on a non pooled
1819   * datasource should produce a normal connection.
1820   *
1821   * When it comes to frequent shortlived DB connections like with MW
1822   * Oracle tends to s***. The problem is the driver connects to the
1823   * database reasonably fast, but establishing a session takes time and
1824   * resources. MW does not rely on session state (as it does not use
1825   * features such as package variables) so establishing a valid session
1826   * is in this case an unwanted overhead that just slows things down.
1827   *
1828   * @warning EXPERIMENTAL!
1829   *
1830   */
1831  $wgDBOracleDRCP = false;
1832  
1833  /**
1834   * Other wikis on this site, can be administered from a single developer
1835   * account.
1836   * Array numeric key => database name
1837   */
1838  $wgLocalDatabases = array();
1839  
1840  /**
1841   * If lag is higher than $wgSlaveLagWarning, show a warning in some special
1842   * pages (like watchlist).  If the lag is higher than $wgSlaveLagCritical,
1843   * show a more obvious warning.
1844   */
1845  $wgSlaveLagWarning = 10;
1846  
1847  /**
1848   * @see $wgSlaveLagWarning
1849   */
1850  $wgSlaveLagCritical = 30;
1851  
1852  /**
1853   * Use Windows Authentication instead of $wgDBuser / $wgDBpassword for MS SQL Server
1854   */
1855  $wgDBWindowsAuthentication = false;
1856  
1857  /**@}*/ # End of DB settings }
1858  
1859  /************************************************************************//**
1860   * @name   Text storage
1861   * @{
1862   */
1863  
1864  /**
1865   * We can also compress text stored in the 'text' table. If this is set on, new
1866   * revisions will be compressed on page save if zlib support is available. Any
1867   * compressed revisions will be decompressed on load regardless of this setting,
1868   * but will not be readable at all* if zlib support is not available.
1869   */
1870  $wgCompressRevisions = false;
1871  
1872  /**
1873   * External stores allow including content
1874   * from non database sources following URL links.
1875   *
1876   * Short names of ExternalStore classes may be specified in an array here:
1877   * @code
1878   * $wgExternalStores = array("http","file","custom")...
1879   * @endcode
1880   *
1881   * CAUTION: Access to database might lead to code execution
1882   */
1883  $wgExternalStores = array();
1884  
1885  /**
1886   * An array of external MySQL servers.
1887   *
1888   * @par Example:
1889   * Create a cluster named 'cluster1' containing three servers:
1890   * @code
1891   * $wgExternalServers = array(
1892   *     'cluster1' => array( 'srv28', 'srv29', 'srv30' )
1893   * );
1894   * @endcode
1895   *
1896   * Used by LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
1897   * another class.
1898   */
1899  $wgExternalServers = array();
1900  
1901  /**
1902   * The place to put new revisions, false to put them in the local text table.
1903   * Part of a URL, e.g. DB://cluster1
1904   *
1905   * Can be an array instead of a single string, to enable data distribution. Keys
1906   * must be consecutive integers, starting at zero.
1907   *
1908   * @par Example:
1909   * @code
1910   * $wgDefaultExternalStore = array( 'DB://cluster1', 'DB://cluster2' );
1911   * @endcode
1912   *
1913   * @var array
1914   */
1915  $wgDefaultExternalStore = false;
1916  
1917  /**
1918   * Revision text may be cached in $wgMemc to reduce load on external storage
1919   * servers and object extraction overhead for frequently-loaded revisions.
1920   *
1921   * Set to 0 to disable, or number of seconds before cache expiry.
1922   */
1923  $wgRevisionCacheExpiry = 0;
1924  
1925  /** @} */ # end text storage }
1926  
1927  /************************************************************************//**
1928   * @name   Performance hacks and limits
1929   * @{
1930   */
1931  
1932  /**
1933   * Disable database-intensive features
1934   */
1935  $wgMiserMode = false;
1936  
1937  /**
1938   * Disable all query pages if miser mode is on, not just some
1939   */
1940  $wgDisableQueryPages = false;
1941  
1942  /**
1943   * Number of rows to cache in 'querycache' table when miser mode is on
1944   */
1945  $wgQueryCacheLimit = 1000;
1946  
1947  /**
1948   * Number of links to a page required before it is deemed "wanted"
1949   */
1950  $wgWantedPagesThreshold = 1;
1951  
1952  /**
1953   * Enable slow parser functions
1954   */
1955  $wgAllowSlowParserFunctions = false;
1956  
1957  /**
1958   * Allow schema updates
1959   */
1960  $wgAllowSchemaUpdates = true;
1961  
1962  /**
1963   * Anti-lock flags - bitfield
1964   *   - ALF_NO_LINK_LOCK:
1965   *       Don't use locking reads when updating the link table. This is
1966   *       necessary for wikis with a high edit rate for performance
1967   *       reasons, but may cause link table inconsistency
1968   */
1969  $wgAntiLockFlags = 0;
1970  
1971  /**
1972   * Maximum article size in kilobytes
1973   */
1974  $wgMaxArticleSize = 2048;
1975  
1976  /**
1977   * The minimum amount of memory that MediaWiki "needs"; MediaWiki will try to
1978   * raise PHP's memory limit if it's below this amount.
1979   */
1980  $wgMemoryLimit = "50M";
1981  
1982  /** @} */ # end performance hacks }
1983  
1984  /************************************************************************//**
1985   * @name   Cache settings
1986   * @{
1987   */
1988  
1989  /**
1990   * Directory for caching data in the local filesystem. Should not be accessible
1991   * from the web. Set this to false to not use any local caches.
1992   *
1993   * Note: if multiple wikis share the same localisation cache directory, they
1994   * must all have the same set of extensions. You can set a directory just for
1995   * the localisation cache using $wgLocalisationCacheConf['storeDirectory'].
1996   */
1997  $wgCacheDirectory = false;
1998  
1999  /**
2000   * Main cache type. This should be a cache with fast access, but it may have
2001   * limited space. By default, it is disabled, since the database is not fast
2002   * enough to make it worthwhile.
2003   *
2004   * The options are:
2005   *
2006   *   - CACHE_ANYTHING:   Use anything, as long as it works
2007   *   - CACHE_NONE:       Do not cache
2008   *   - CACHE_DB:         Store cache objects in the DB
2009   *   - CACHE_MEMCACHED:  MemCached, must specify servers in $wgMemCachedServers
2010   *   - CACHE_ACCEL:      APC, XCache or WinCache
2011   *   - (other):          A string may be used which identifies a cache
2012   *                       configuration in $wgObjectCaches.
2013   *
2014   * @see $wgMessageCacheType, $wgParserCacheType
2015   */
2016  $wgMainCacheType = CACHE_NONE;
2017  
2018  /**
2019   * The cache type for storing the contents of the MediaWiki namespace. This
2020   * cache is used for a small amount of data which is expensive to regenerate.
2021   *
2022   * For available types see $wgMainCacheType.
2023   */
2024  $wgMessageCacheType = CACHE_ANYTHING;
2025  
2026  /**
2027   * The cache type for storing article HTML. This is used to store data which
2028   * is expensive to regenerate, and benefits from having plenty of storage space.
2029   *
2030   * For available types see $wgMainCacheType.
2031   */
2032  $wgParserCacheType = CACHE_ANYTHING;
2033  
2034  /**
2035   * The cache type for storing session data. Used if $wgSessionsInObjectCache is true.
2036   *
2037   * For available types see $wgMainCacheType.
2038   */
2039  $wgSessionCacheType = CACHE_ANYTHING;
2040  
2041  /**
2042   * The cache type for storing language conversion tables,
2043   * which are used when parsing certain text and interface messages.
2044   *
2045   * For available types see $wgMainCacheType.
2046   *
2047   * @since 1.20
2048   */
2049  $wgLanguageConverterCacheType = CACHE_ANYTHING;
2050  
2051  /**
2052   * Advanced object cache configuration.
2053   *
2054   * Use this to define the class names and constructor parameters which are used
2055   * for the various cache types. Custom cache types may be defined here and
2056   * referenced from $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType,
2057   * or $wgLanguageConverterCacheType.
2058   *
2059   * The format is an associative array where the key is a cache identifier, and
2060   * the value is an associative array of parameters. The "class" parameter is the
2061   * class name which will be used. Alternatively, a "factory" parameter may be
2062   * given, giving a callable function which will generate a suitable cache object.
2063   */
2064  $wgObjectCaches = array(
2065      CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
2066      CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
2067  
2068      CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
2069      CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
2070      CACHE_MEMCACHED => array( 'factory' => 'ObjectCache::newMemcached' ),
2071  
2072      'apc' => array( 'class' => 'APCBagOStuff' ),
2073      'xcache' => array( 'class' => 'XCacheBagOStuff' ),
2074      'wincache' => array( 'class' => 'WinCacheBagOStuff' ),
2075      'memcached-php' => array( 'class' => 'MemcachedPhpBagOStuff' ),
2076      'memcached-pecl' => array( 'class' => 'MemcachedPeclBagOStuff' ),
2077      'hash' => array( 'class' => 'HashBagOStuff' ),
2078  );
2079  
2080  /**
2081   * Map of bloom filter store names to configuration arrays.
2082   *
2083   * Example:
2084   * $wgBloomFilterStores['main'] = array(
2085   *  'cacheId'      => 'main-v1',
2086   *  'class'        => 'BloomCacheRedis',
2087   *  'redisServers' => array( '127.0.0.1:6379' ),
2088   *  'redisConfig'  => array( 'connectTimeout' => 2 )
2089   * );
2090   *
2091   * A primary bloom filter must be created manually.
2092   * Example in eval.php:
2093   * <code>
2094   *     BloomCache::get( 'main' )->init( 'shared', 1000000000, .001 );
2095   * </code>
2096   * The size should be as large as practical given wiki size and resources.
2097   *
2098   * @since 1.24
2099   */
2100  $wgBloomFilterStores = array();
2101  
2102  /**
2103   * The expiry time for the parser cache, in seconds.
2104   * The default is 86400 (one day).
2105   */
2106  $wgParserCacheExpireTime = 86400;
2107  
2108  /**
2109   * Deprecated alias for $wgSessionsInObjectCache.
2110   *
2111   * @deprecated since 1.20; Use $wgSessionsInObjectCache
2112   */
2113  $wgSessionsInMemcached = false;
2114  
2115  /**
2116   * Store sessions in an object cache, configured by $wgSessionCacheType. This
2117   * can be useful to improve performance, or to avoid the locking behavior of
2118   * PHP's default session handler, which tends to prevent multiple requests for
2119   * the same user from acting concurrently.
2120   */
2121  $wgSessionsInObjectCache = false;
2122  
2123  /**
2124   * The expiry time to use for session storage when $wgSessionsInObjectCache is
2125   * enabled, in seconds.
2126   */
2127  $wgObjectCacheSessionExpiry = 3600;
2128  
2129  /**
2130   * This is used for setting php's session.save_handler. In practice, you will
2131   * almost never need to change this ever. Other options might be 'user' or
2132   * 'session_mysql.' Setting to null skips setting this entirely (which might be
2133   * useful if you're doing cross-application sessions, see bug 11381)
2134   */
2135  $wgSessionHandler = null;
2136  
2137  /**
2138   * If enabled, will send MemCached debugging information to $wgDebugLogFile
2139   */
2140  $wgMemCachedDebug = false;
2141  
2142  /**
2143   * The list of MemCached servers and port numbers
2144   */
2145  $wgMemCachedServers = array( '127.0.0.1:11211' );
2146  
2147  /**
2148   * Use persistent connections to MemCached, which are shared across multiple
2149   * requests.
2150   */
2151  $wgMemCachedPersistent = false;
2152  
2153  /**
2154   * Read/write timeout for MemCached server communication, in microseconds.
2155   */
2156  $wgMemCachedTimeout = 500000;
2157  
2158  /**
2159   * Set this to true to make a local copy of the message cache, for use in
2160   * addition to memcached. The files will be put in $wgCacheDirectory.
2161   */
2162  $wgUseLocalMessageCache = false;
2163  
2164  /**
2165   * Instead of caching everything, only cache those messages which have
2166   * been customised in the site content language. This means that
2167   * MediaWiki:Foo/ja is ignored if MediaWiki:Foo doesn't exist.
2168   * This option is probably only useful for translatewiki.net.
2169   */
2170  $wgAdaptiveMessageCache = false;
2171  
2172  /**
2173   * Localisation cache configuration. Associative array with keys:
2174   * class:       The class to use. May be overridden by extensions.
2175   *
2176   * store:       The location to store cache data. May be 'files', 'db' or
2177   *              'detect'. If set to "files", data will be in CDB files. If set
2178   *              to "db", data will be stored to the database. If set to
2179   *              "detect", files will be used if $wgCacheDirectory is set,
2180   *              otherwise the database will be used.
2181   *
2182   * storeClass:  The class name for the underlying storage. If set to a class
2183   *              name, it overrides the "store" setting.
2184   *
2185   * storeDirectory:  If the store class puts its data in files, this is the
2186   *                  directory it will use. If this is false, $wgCacheDirectory
2187   *                  will be used.
2188   *
2189   * manualRecache:   Set this to true to disable cache updates on web requests.
2190   *                  Use maintenance/rebuildLocalisationCache.php instead.
2191   */
2192  $wgLocalisationCacheConf = array(
2193      'class' => 'LocalisationCache',
2194      'store' => 'detect',
2195      'storeClass' => false,
2196      'storeDirectory' => false,
2197      'manualRecache' => false,
2198  );
2199  
2200  /**
2201   * Allow client-side caching of pages
2202   */
2203  $wgCachePages = true;
2204  
2205  /**
2206   * Set this to current time to invalidate all prior cached pages. Affects both
2207   * client-side and server-side caching.
2208   * You can get the current date on your server by using the command:
2209   * @verbatim
2210   *   date +%Y%m%d%H%M%S
2211   * @endverbatim
2212   */
2213  $wgCacheEpoch = '20030516000000';
2214  
2215  /**
2216   * Directory where GitInfo will look for pre-computed cache files. If false,
2217   * $wgCacheDirectory/gitinfo will be used.
2218   */
2219  $wgGitInfoCacheDirectory = false;
2220  
2221  /**
2222   * Bump this number when changing the global style sheets and JavaScript.
2223   *
2224   * It should be appended in the query string of static CSS and JS includes,
2225   * to ensure that client-side caches do not keep obsolete copies of global
2226   * styles.
2227   */
2228  $wgStyleVersion = '303';
2229  
2230  /**
2231   * This will cache static pages for non-logged-in users to reduce
2232   * database traffic on public sites.
2233   * Automatically sets $wgShowIPinHeader = false
2234   * ResourceLoader requests to default language and skins are cached
2235   * as well as single module requests.
2236   */
2237  $wgUseFileCache = false;
2238  
2239  /**
2240   * Depth of the subdirectory hierarchy to be created under
2241   * $wgFileCacheDirectory.  The subdirectories will be named based on
2242   * the MD5 hash of the title.  A value of 0 means all cache files will
2243   * be put directly into the main file cache directory.
2244   */
2245  $wgFileCacheDepth = 2;
2246  
2247  /**
2248   * Keep parsed pages in a cache (objectcache table or memcached)
2249   * to speed up output of the same page viewed by another user with the
2250   * same options.
2251   *
2252   * This can provide a significant speedup for medium to large pages,
2253   * so you probably want to keep it on. Extensions that conflict with the
2254   * parser cache should disable the cache on a per-page basis instead.
2255   */
2256  $wgEnableParserCache = true;
2257  
2258  /**
2259   * Append a configured value to the parser cache and the sitenotice key so
2260   * that they can be kept separate for some class of activity.
2261   */
2262  $wgRenderHashAppend = '';
2263  
2264  /**
2265   * If on, the sidebar navigation links are cached for users with the
2266   * current language set. This can save a touch of load on a busy site
2267   * by shaving off extra message lookups.
2268   *
2269   * However it is also fragile: changing the site configuration, or
2270   * having a variable $wgArticlePath, can produce broken links that
2271   * don't update as expected.
2272   */
2273  $wgEnableSidebarCache = false;
2274  
2275  /**
2276   * Expiry time for the sidebar cache, in seconds
2277   */
2278  $wgSidebarCacheExpiry = 86400;
2279  
2280  /**
2281   * When using the file cache, we can store the cached HTML gzipped to save disk
2282   * space. Pages will then also be served compressed to clients that support it.
2283   *
2284   * Requires zlib support enabled in PHP.
2285   */
2286  $wgUseGzip = false;
2287  
2288  /**
2289   * Whether MediaWiki should send an ETag header. Seems to cause
2290   * broken behavior with Squid 2.6, see bug 7098.
2291   */
2292  $wgUseETag = false;
2293  
2294  /**
2295   * Clock skew or the one-second resolution of time() can occasionally cause cache
2296   * problems when the user requests two pages within a short period of time. This
2297   * variable adds a given number of seconds to vulnerable timestamps, thereby giving
2298   * a grace period.
2299   */
2300  $wgClockSkewFudge = 5;
2301  
2302  /**
2303   * Invalidate various caches when LocalSettings.php changes. This is equivalent
2304   * to setting $wgCacheEpoch to the modification time of LocalSettings.php, as
2305   * was previously done in the default LocalSettings.php file.
2306   *
2307   * On high-traffic wikis, this should be set to false, to avoid the need to
2308   * check the file modification time, and to avoid the performance impact of
2309   * unnecessary cache invalidations.
2310   */
2311  $wgInvalidateCacheOnLocalSettingsChange = true;
2312  
2313  /** @} */ # end of cache settings
2314  
2315  /************************************************************************//**
2316   * @name   HTTP proxy (Squid) settings
2317   *
2318   * Many of these settings apply to any HTTP proxy used in front of MediaWiki,
2319   * although they are referred to as Squid settings for historical reasons.
2320   *
2321   * Achieving a high hit ratio with an HTTP proxy requires special
2322   * configuration. See https://www.mediawiki.org/wiki/Manual:Squid_caching for
2323   * more details.
2324   *
2325   * @{
2326   */
2327  
2328  /**
2329   * Enable/disable Squid.
2330   * See https://www.mediawiki.org/wiki/Manual:Squid_caching
2331   */
2332  $wgUseSquid = false;
2333  
2334  /**
2335   * If you run Squid3 with ESI support, enable this (default:false):
2336   */
2337  $wgUseESI = false;
2338  
2339  /**
2340   * Send X-Vary-Options header for better caching (requires patched Squid)
2341   */
2342  $wgUseXVO = false;
2343  
2344  /**
2345   * Add X-Forwarded-Proto to the Vary and X-Vary-Options headers for API
2346   * requests and RSS/Atom feeds. Use this if you have an SSL termination setup
2347   * and need to split the cache between HTTP and HTTPS for API requests,
2348   * feed requests and HTTP redirect responses in order to prevent cache
2349   * pollution. This does not affect 'normal' requests to index.php other than
2350   * HTTP redirects.
2351   */
2352  $wgVaryOnXFP = false;
2353  
2354  /**
2355   * Internal server name as known to Squid, if different.
2356   *
2357   * @par Example:
2358   * @code
2359   * $wgInternalServer = 'http://yourinternal.tld:8000';
2360   * @endcode
2361   */
2362  $wgInternalServer = false;
2363  
2364  /**
2365   * Cache timeout for the squid, will be sent as s-maxage (without ESI) or
2366   * Surrogate-Control (with ESI). Without ESI, you should strip out s-maxage in
2367   * the Squid config. 18000 seconds = 5 hours, more cache hits with 2678400 = 31
2368   * days
2369   */
2370  $wgSquidMaxage = 18000;
2371  
2372  /**
2373   * Default maximum age for raw CSS/JS accesses
2374   */
2375  $wgForcedRawSMaxage = 300;
2376  
2377  /**
2378   * List of proxy servers to purge on changes; default port is 80. Use IP addresses.
2379   *
2380   * When MediaWiki is running behind a proxy, it will trust X-Forwarded-For
2381   * headers sent/modified from these proxies when obtaining the remote IP address
2382   *
2383   * For a list of trusted servers which *aren't* purged, see $wgSquidServersNoPurge.
2384   */
2385  $wgSquidServers = array();
2386  
2387  /**
2388   * As above, except these servers aren't purged on page changes; use to set a
2389   * list of trusted proxies, etc. Supports both individual IP addresses and
2390   * CIDR blocks.
2391   * @since 1.23 Supports CIDR ranges
2392   */
2393  $wgSquidServersNoPurge = array();
2394  
2395  /**
2396   * Maximum number of titles to purge in any one client operation
2397   */
2398  $wgMaxSquidPurgeTitles = 400;
2399  
2400  /**
2401   * Whether to use a Host header in purge requests sent to the proxy servers
2402   * configured in $wgSquidServers. Set this to false to support Squid
2403   * configured in forward-proxy mode.
2404   *
2405   * If this is set to true, a Host header will be sent, and only the path
2406   * component of the URL will appear on the request line, as if the request
2407   * were a non-proxy HTTP 1.1 request. Varnish only supports this style of
2408   * request. Squid supports this style of request only if reverse-proxy mode
2409   * (http_port ... accel) is enabled.
2410   *
2411   * If this is set to false, no Host header will be sent, and the absolute URL
2412   * will be sent in the request line, as is the standard for an HTTP proxy
2413   * request in both HTTP 1.0 and 1.1. This style of request is not supported
2414   * by Varnish, but is supported by Squid in either configuration (forward or
2415   * reverse).
2416   *
2417   * @since 1.21
2418   */
2419  $wgSquidPurgeUseHostHeader = true;
2420  
2421  /**
2422   * Routing configuration for HTCP multicast purging. Add elements here to
2423   * enable HTCP and determine which purges are sent where. If set to an empty
2424   * array, HTCP is disabled.
2425   *
2426   * Each key in this array is a regular expression to match against the purged
2427   * URL, or an empty string to match all URLs. The purged URL is matched against
2428   * the regexes in the order specified, and the first rule whose regex matches
2429   * is used, all remaining rules will thus be ignored.
2430   *
2431   * @par Example configuration to send purges for upload.wikimedia.org to one
2432   * multicast group and all other purges to another:
2433   * @code
2434   * $wgHTCPRouting = array(
2435   *         '|^https?://upload\.wikimedia\.org|' => array(
2436   *                 'host' => '239.128.0.113',
2437   *                 'port' => 4827,
2438   *         ),
2439   *         '' => array(
2440   *                 'host' => '239.128.0.112',
2441   *                 'port' => 4827,
2442   *         ),
2443   * );
2444   * @endcode
2445   *
2446   * You can also pass an array of hosts to send purges too. This is useful when
2447   * you have several multicast groups or unicast address that should receive a
2448   * given purge.  Multiple hosts support was introduced in MediaWiki 1.22.
2449   *
2450   * @par Example of sending purges to multiple hosts:
2451   * @code
2452   * $wgHTCPRouting = array(
2453   *     '' => array(
2454   *         // Purges to text caches using multicast
2455   *         array( 'host' => '239.128.0.114', 'port' => '4827' ),
2456   *         // Purges to a hardcoded list of caches
2457   *         array( 'host' => '10.88.66.1', 'port' => '4827' ),
2458   *         array( 'host' => '10.88.66.2', 'port' => '4827' ),
2459   *         array( 'host' => '10.88.66.3', 'port' => '4827' ),
2460   *     ),
2461   * );
2462   * @endcode
2463   *
2464   * @since 1.22
2465   *
2466   * $wgHTCPRouting replaces $wgHTCPMulticastRouting that was introduced in 1.20.
2467   * For back compatibility purposes, whenever its array is empty
2468   * $wgHTCPMutlicastRouting will be used as a fallback if it not null.
2469   *
2470   * @see $wgHTCPMulticastTTL
2471   */
2472  $wgHTCPRouting = array();
2473  
2474  /**
2475   * HTCP multicast TTL.
2476   * @see $wgHTCPRouting
2477   */
2478  $wgHTCPMulticastTTL = 1;
2479  
2480  /**
2481   * Should forwarded Private IPs be accepted?
2482   */
2483  $wgUsePrivateIPs = false;
2484  
2485  /** @} */ # end of HTTP proxy settings
2486  
2487  /************************************************************************//**
2488   * @name   Language, regional and character encoding settings
2489   * @{
2490   */
2491  
2492  /**
2493   * Site language code. See languages/Names.php for languages supported by
2494   * MediaWiki out of the box. Not all languages listed there have translations,
2495   * see languages/messages/ for the list of languages with some localisation.
2496   *
2497   * Warning: Don't use language codes listed in $wgDummyLanguageCodes like "no"
2498   * for Norwegian (use "nb" instead), or things will break unexpectedly.
2499   *
2500   * This defines the default interface language for all users, but users can
2501   * change it in their preferences.
2502   *
2503   * This also defines the language of pages in the wiki. The content is wrapped
2504   * in a html element with lang=XX attribute. This behavior can be overridden
2505   * via hooks, see Title::getPageLanguage.
2506   */
2507  $wgLanguageCode = 'en';
2508  
2509  /**
2510   * Language cache size, or really how many languages can we handle
2511   * simultaneously without degrading to crawl speed.
2512   */
2513  $wgLangObjCacheSize = 10;
2514  
2515  /**
2516   * Some languages need different word forms, usually for different cases.
2517   * Used in Language::convertGrammar().
2518   *
2519   * @par Example:
2520   * @code
2521   * $wgGrammarForms['en']['genitive']['car'] = 'car\'s';
2522   * @endcode
2523   */
2524  $wgGrammarForms = array();
2525  
2526  /**
2527   * Treat language links as magic connectors, not inline links
2528   */
2529  $wgInterwikiMagic = true;
2530  
2531  /**
2532   * Hide interlanguage links from the sidebar
2533   */
2534  $wgHideInterlanguageLinks = false;
2535  
2536  /**
2537   * List of additional interwiki prefixes that should be treated as
2538   * interlanguage links (i.e. placed in the sidebar).
2539   * Notes:
2540   * - This will not do anything unless the prefixes are defined in the interwiki
2541   *   map.
2542   * - The display text for these custom interlanguage links will be fetched from
2543   *   the system message "interlanguage-link-xyz" where xyz is the prefix in
2544   *   this array.
2545   * - A friendly name for each site, used for tooltip text, may optionally be
2546   *   placed in the system message "interlanguage-link-sitename-xyz" where xyz is
2547   *   the prefix in this array.
2548   */
2549  $wgExtraInterlanguageLinkPrefixes = array();
2550  
2551  /**
2552   * List of language names or overrides for default names in Names.php
2553   */
2554  $wgExtraLanguageNames = array();
2555  
2556  /**
2557   * List of language codes that don't correspond to an actual language.
2558   * These codes are mostly left-offs from renames, or other legacy things.
2559   * This array makes them not appear as a selectable language on the installer,
2560   * and excludes them when running the transstat.php script.
2561   */
2562  $wgDummyLanguageCodes = array(
2563      'als' => 'gsw',
2564      'bat-smg' => 'sgs',
2565      'be-x-old' => 'be-tarask',
2566      'bh' => 'bho',
2567      'fiu-vro' => 'vro',
2568      'no' => 'nb',
2569      'qqq' => 'qqq', # Used for message documentation.
2570      'qqx' => 'qqx', # Used for viewing message keys.
2571      'roa-rup' => 'rup',
2572      'simple' => 'en',
2573      'zh-classical' => 'lzh',
2574      'zh-min-nan' => 'nan',
2575      'zh-yue' => 'yue',
2576  );
2577  
2578  /**
2579   * Character set for use in the article edit box. Language-specific encodings
2580   * may be defined.
2581   *
2582   * This historic feature is one of the first that was added by former MediaWiki
2583   * team leader Brion Vibber, and is used to support the Esperanto x-system.
2584   */
2585  $wgEditEncoding = '';
2586  
2587  /**
2588   * Set this to true to replace Arabic presentation forms with their standard
2589   * forms in the U+0600-U+06FF block. This only works if $wgLanguageCode is
2590   * set to "ar".
2591   *
2592   * Note that pages with titles containing presentation forms will become
2593   * inaccessible, run maintenance/cleanupTitles.php to fix this.
2594   */
2595  $wgFixArabicUnicode = true;
2596  
2597  /**
2598   * Set this to true to replace ZWJ-based chillu sequences in Malayalam text
2599   * with their Unicode 5.1 equivalents. This only works if $wgLanguageCode is
2600   * set to "ml". Note that some clients (even new clients as of 2010) do not
2601   * support these characters.
2602   *
2603   * If you enable this on an existing wiki, run maintenance/cleanupTitles.php to
2604   * fix any ZWJ sequences in existing page titles.
2605   */
2606  $wgFixMalayalamUnicode = true;
2607  
2608  /**
2609   * Set this to always convert certain Unicode sequences to modern ones
2610   * regardless of the content language. This has a small performance
2611   * impact.
2612   *
2613   * See $wgFixArabicUnicode and $wgFixMalayalamUnicode for conversion
2614   * details.
2615   *
2616   * @since 1.17
2617   */
2618  $wgAllUnicodeFixes = false;
2619  
2620  /**
2621   * Set this to eg 'ISO-8859-1' to perform character set conversion when
2622   * loading old revisions not marked with "utf-8" flag. Use this when
2623   * converting a wiki from MediaWiki 1.4 or earlier to UTF-8 without the
2624   * burdensome mass conversion of old text data.
2625   *
2626   * @note This DOES NOT touch any fields other than old_text. Titles, comments,
2627   * user names, etc still must be converted en masse in the database before
2628   * continuing as a UTF-8 wiki.
2629   */
2630  $wgLegacyEncoding = false;
2631  
2632  /**
2633   * Browser Blacklist for unicode non compliant browsers. Contains a list of
2634   * regexps : "/regexp/"  matching problematic browsers. These browsers will
2635   * be served encoded unicode in the edit box instead of real unicode.
2636   */
2637  $wgBrowserBlackList = array(
2638      /**
2639       * Netscape 2-4 detection
2640       * The minor version may contain strings such as "Gold" or "SGoldC-SGI"
2641       * Lots of non-netscape user agents have "compatible", so it's useful to check for that
2642       * with a negative assertion. The [UIN] identifier specifies the level of security
2643       * in a Netscape/Mozilla browser, checking for it rules out a number of fakers.
2644       * The language string is unreliable, it is missing on NS4 Mac.
2645       *
2646       * Reference: http://www.psychedelix.com/agents/index.shtml
2647       */
2648      '/^Mozilla\/2\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/',
2649      '/^Mozilla\/3\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/',
2650      '/^Mozilla\/4\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/',
2651  
2652      /**
2653       * MSIE on Mac OS 9 is teh sux0r, converts þ to <thorn>, ð to <eth>,
2654       * Þ to <THORN> and Ð to <ETH>
2655       *
2656       * Known useragents:
2657       * - Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC)
2658       * - Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC)
2659       * - Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
2660       * - [...]
2661       *
2662       * @link http://en.wikipedia.org/w/index.php?diff=12356041&oldid=12355864
2663       * @link http://en.wikipedia.org/wiki/Template%3AOS9
2664       */
2665      '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/',
2666  
2667      /**
2668       * Google wireless transcoder, seems to eat a lot of chars alive
2669       * http://it.wikipedia.org/w/index.php?title=Luciano_Ligabue&diff=prev&oldid=8857361
2670       */
2671      '/^Mozilla\/4\.0 \(compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;\)/'
2672  );
2673  
2674  /**
2675   * If set to true, the MediaWiki 1.4 to 1.5 schema conversion will
2676   * create stub reference rows in the text table instead of copying
2677   * the full text of all current entries from 'cur' to 'text'.
2678   *
2679   * This will speed up the conversion step for large sites, but
2680   * requires that the cur table be kept around for those revisions
2681   * to remain viewable.
2682   *
2683   * This option affects the updaters *only*. Any present cur stub
2684   * revisions will be readable at runtime regardless of this setting.
2685   */
2686  $wgLegacySchemaConversion = false;
2687  
2688  /**
2689   * Enable dates like 'May 12' instead of '12 May', this only takes effect if
2690   * the interface is set to English.
2691   */
2692  $wgAmericanDates = false;
2693  
2694  /**
2695   * For Hindi and Arabic use local numerals instead of Western style (0-9)
2696   * numerals in interface.
2697   */
2698  $wgTranslateNumerals = true;
2699  
2700  /**
2701   * Translation using MediaWiki: namespace.
2702   * Interface messages will be loaded from the database.
2703   */
2704  $wgUseDatabaseMessages = true;
2705  
2706  /**
2707   * Expiry time for the message cache key
2708   */
2709  $wgMsgCacheExpiry = 86400;
2710  
2711  /**
2712   * Maximum entry size in the message cache, in bytes
2713   */
2714  $wgMaxMsgCacheEntrySize = 10000;
2715  
2716  /**
2717   * Whether to enable language variant conversion.
2718   */
2719  $wgDisableLangConversion = false;
2720  
2721  /**
2722   * Whether to enable language variant conversion for links.
2723   */
2724  $wgDisableTitleConversion = false;
2725  
2726  /**
2727   * Default variant code, if false, the default will be the language code
2728   */
2729  $wgDefaultLanguageVariant = false;
2730  
2731  /**
2732   * Disabled variants array of language variant conversion.
2733   *
2734   * @par Example:
2735   * @code
2736   *  $wgDisabledVariants[] = 'zh-mo';
2737   *  $wgDisabledVariants[] = 'zh-my';
2738   * @endcode
2739   */
2740  $wgDisabledVariants = array();
2741  
2742  /**
2743   * Like $wgArticlePath, but on multi-variant wikis, this provides a
2744   * path format that describes which parts of the URL contain the
2745   * language variant.
2746   *
2747   * @par Example:
2748   * @code
2749   *     $wgLanguageCode = 'sr';
2750   *     $wgVariantArticlePath = '/$2/$1';
2751   *     $wgArticlePath = '/wiki/$1';
2752   * @endcode
2753   *
2754   * A link to /wiki/ would be redirected to /sr/Главна_страна
2755   *
2756   * It is important that $wgArticlePath not overlap with possible values
2757   * of $wgVariantArticlePath.
2758   */
2759  $wgVariantArticlePath = false;
2760  
2761  /**
2762   * Show a bar of language selection links in the user login and user
2763   * registration forms; edit the "loginlanguagelinks" message to
2764   * customise these.
2765   */
2766  $wgLoginLanguageSelector = false;
2767  
2768  /**
2769   * When translating messages with wfMessage(), it is not always clear what
2770   * should be considered UI messages and what should be content messages.
2771   *
2772   * For example, for the English Wikipedia, there should be only one 'mainpage',
2773   * so when getting the link for 'mainpage', we should treat it as site content
2774   * and call ->inContentLanguage()->text(), but for rendering the text of the
2775   * link, we call ->text(). The code behaves this way by default. However,
2776   * sites like the Wikimedia Commons do offer different versions of 'mainpage'
2777   * and the like for different languages. This array provides a way to override
2778   * the default behavior.
2779   *
2780   * @par Example:
2781   * To allow language-specific main page and community
2782   * portal:
2783   * @code
2784   *     $wgForceUIMsgAsContentMsg = array( 'mainpage', 'portal-url' );
2785   * @endcode
2786   */
2787  $wgForceUIMsgAsContentMsg = array();
2788  
2789  /**
2790   * Fake out the timezone that the server thinks it's in. This will be used for
2791   * date display and not for what's stored in the DB. Leave to null to retain
2792   * your server's OS-based timezone value.
2793   *
2794   * This variable is currently used only for signature formatting and for local
2795   * time/date parser variables ({{LOCALTIME}} etc.)
2796   *
2797   * Timezones can be translated by editing MediaWiki messages of type
2798   * timezone-nameinlowercase like timezone-utc.
2799   *
2800   * A list of usable timezones can found at:
2801   * http://php.net/manual/en/timezones.php
2802   *
2803   * @par Examples:
2804   * @code
2805   * $wgLocaltimezone = 'UTC';
2806   * $wgLocaltimezone = 'GMT';
2807   * $wgLocaltimezone = 'PST8PDT';
2808   * $wgLocaltimezone = 'Europe/Sweden';
2809   * $wgLocaltimezone = 'CET';
2810   * @endcode
2811   */
2812  $wgLocaltimezone = null;
2813  
2814  /**
2815   * Set an offset from UTC in minutes to use for the default timezone setting
2816   * for anonymous users and new user accounts.
2817   *
2818   * This setting is used for most date/time displays in the software, and is
2819   * overridable in user preferences. It is *not* used for signature timestamps.
2820   *
2821   * By default, this will be set to match $wgLocaltimezone.
2822   */
2823  $wgLocalTZoffset = null;
2824  
2825  /** @} */ # End of language/charset settings
2826  
2827  /*************************************************************************//**
2828   * @name   Output format and skin settings
2829   * @{
2830   */
2831  
2832  /**
2833   * The default Content-Type header.
2834   */
2835  $wgMimeType = 'text/html';
2836  
2837  /**
2838   * Previously used as content type in HTML script tags. This is now ignored since
2839   * HTML5 doesn't require a MIME type for script tags (javascript is the default).
2840   * It was also previously used by RawAction to determine the ctype query parameter
2841   * value that will result in a javascript response.
2842   * @deprecated since 1.22
2843   */
2844  $wgJsMimeType = null;
2845  
2846  /**
2847   * The default xmlns attribute. The option to define this has been removed.
2848   * The value of this variable is no longer used by core and is set to a fixed
2849   * value in Setup.php for compatibility with extensions that depend on the value
2850   * of this variable being set. Such a dependency however is deprecated.
2851   * @deprecated since 1.22
2852   */
2853  $wgXhtmlDefaultNamespace = null;
2854  
2855  /**
2856   * Previously used to determine if we should output an HTML5 doctype.
2857   * This is no longer used as we always output HTML5 now. For compatibility with
2858   * extensions that still check the value of this config it's value is now forced
2859   * to true by Setup.php.
2860   * @deprecated since 1.22
2861   */
2862  $wgHtml5 = true;
2863  
2864  /**
2865   * Defines the value of the version attribute in the &lt;html&gt; tag, if any.
2866   * If $wgAllowRdfaAttributes is true, and this evaluates to boolean false
2867   * (like if it's left at the default null value), it will be auto-initialized
2868   * to the correct value for RDFa+HTML5.  As such, you should have no reason to
2869   * ever actually set this to anything.
2870   */
2871  $wgHtml5Version = null;
2872  
2873  /**
2874   * Temporary variable that allows HTMLForms to be rendered as tables.
2875   * Table based layouts cause various issues when designing for mobile.
2876   * This global allows skins or extensions a means to force non-table based rendering.
2877   * Setting to false forces form components to always render as div elements.
2878   * @since 1.24
2879   */
2880  $wgHTMLFormAllowTableFormat = true;
2881  
2882  /**
2883   * Temporary variable that applies MediaWiki UI wherever it can be supported.
2884   * Temporary variable that should be removed when mediawiki ui is more
2885   * stable and change has been communicated.
2886   * @since 1.24
2887   */
2888  $wgUseMediaWikiUIEverywhere = false;
2889  
2890  /**
2891   * Enabled RDFa attributes for use in wikitext.
2892   * NOTE: Interaction with HTML5 is somewhat underspecified.
2893   */
2894  $wgAllowRdfaAttributes = false;
2895  
2896  /**
2897   * Enabled HTML5 microdata attributes for use in wikitext.
2898   */
2899  $wgAllowMicrodataAttributes = false;
2900  
2901  /**
2902   * Should we try to make our HTML output well-formed XML?  If set to false,
2903   * output will be a few bytes shorter, and the HTML will arguably be more
2904   * readable.  If set to true, life will be much easier for the authors of
2905   * screen-scraping bots, and the HTML will arguably be more readable.
2906   *
2907   * Setting this to false may omit quotation marks on some attributes, omit
2908   * slashes from some self-closing tags, omit some ending tags, etc., where
2909   * permitted by HTML5.  Setting it to true will not guarantee that all pages
2910   * will be well-formed, although non-well-formed pages should be rare and it's
2911   * a bug if you find one.  Conversely, setting it to false doesn't mean that
2912   * all XML-y constructs will be omitted, just that they might be.
2913   *
2914   * Because of compatibility with screen-scraping bots, and because it's
2915   * controversial, this is currently left to true by default.
2916   */
2917  $wgWellFormedXml = true;
2918  
2919  /**
2920   * Permit other namespaces in addition to the w3.org default.
2921   *
2922   * Use the prefix for the key and the namespace for the value.
2923   *
2924   * @par Example:
2925   * @code
2926   * $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg';
2927   * @endcode
2928   * Normally we wouldn't have to define this in the root "<html>"
2929   * element, but IE needs it there in some circumstances.
2930   *
2931   * This is ignored if $wgMimeType is set to a non-XML MIME type.
2932   */
2933  $wgXhtmlNamespaces = array();
2934  
2935  /**
2936   * Show IP address, for non-logged in users. It's necessary to switch this off
2937   * for some forms of caching.
2938   * @warning Will disable file cache.
2939   */
2940  $wgShowIPinHeader = true;
2941  
2942  /**
2943   * Site notice shown at the top of each page
2944   *
2945   * MediaWiki:Sitenotice page, which will override this. You can also
2946   * provide a separate message for logged-out users using the
2947   * MediaWiki:Anonnotice page.
2948   */
2949  $wgSiteNotice = '';
2950  
2951  /**
2952   * If this is set, a "donate" link will appear in the sidebar. Set it to a URL.
2953   */
2954  $wgSiteSupportPage = '';
2955  
2956  /**
2957   * Validate the overall output using tidy and refuse
2958   * to display the page if it's not valid.
2959   */
2960  $wgValidateAllHtml = false;
2961  
2962  /**
2963   * Default skin, for new users and anonymous visitors. Registered users may
2964   * change this to any one of the other available skins in their preferences.
2965   */
2966  $wgDefaultSkin = 'vector';
2967  
2968  /**
2969   * Fallback skin used when the skin defined by $wgDefaultSkin can't be found.
2970   *
2971   * @since 1.24
2972   */
2973  $wgFallbackSkin = 'fallback';
2974  
2975  /**
2976   * Specify the names of skins that should not be presented in the list of
2977   * available skins in user preferences. If you want to remove a skin entirely,
2978   * remove it from the skins/ directory and its entry from LocalSettings.php.
2979   */
2980  $wgSkipSkins = array();
2981  
2982  /**
2983   * @deprecated since 1.23; use $wgSkipSkins instead
2984   */
2985  $wgSkipSkin = '';
2986  
2987  /**
2988   * Allow user Javascript page?
2989   * This enables a lot of neat customizations, but may
2990   * increase security risk to users and server load.
2991   */
2992  $wgAllowUserJs = false;
2993  
2994  /**
2995   * Allow user Cascading Style Sheets (CSS)?
2996   * This enables a lot of neat customizations, but may
2997   * increase security risk to users and server load.
2998   */
2999  $wgAllowUserCss = false;
3000  
3001  /**
3002   * Allow user-preferences implemented in CSS?
3003   * This allows users to customise the site appearance to a greater
3004   * degree; disabling it will improve page load times.
3005   */
3006  $wgAllowUserCssPrefs = true;
3007  
3008  /**
3009   * Use the site's Javascript page?
3010   */
3011  $wgUseSiteJs = true;
3012  
3013  /**
3014   * Use the site's Cascading Style Sheets (CSS)?
3015   */
3016  $wgUseSiteCss = true;
3017  
3018  /**
3019   * Break out of framesets. This can be used to prevent clickjacking attacks,
3020   * or to prevent external sites from framing your site with ads.
3021   */
3022  $wgBreakFrames = false;
3023  
3024  /**
3025   * The X-Frame-Options header to send on pages sensitive to clickjacking
3026   * attacks, such as edit pages. This prevents those pages from being displayed
3027   * in a frame or iframe. The options are:
3028   *
3029   *   - 'DENY': Do not allow framing. This is recommended for most wikis.
3030   *
3031   *   - 'SAMEORIGIN': Allow framing by pages on the same domain. This can be used
3032   *         to allow framing within a trusted domain. This is insecure if there
3033   *         is a page on the same domain which allows framing of arbitrary URLs.
3034   *
3035   *   - false: Allow all framing. This opens up the wiki to XSS attacks and thus
3036   *         full compromise of local user accounts. Private wikis behind a
3037   *         corporate firewall are especially vulnerable. This is not
3038   *         recommended.
3039   *
3040   * For extra safety, set $wgBreakFrames = true, to prevent framing on all pages,
3041   * not just edit pages.
3042   */
3043  $wgEditPageFrameOptions = 'DENY';
3044  
3045  /**
3046   * Disallow framing of API pages directly, by setting the X-Frame-Options
3047   * header. Since the API returns CSRF tokens, allowing the results to be
3048   * framed can compromise your user's account security.
3049   * Options are:
3050   *   - 'DENY': Do not allow framing. This is recommended for most wikis.
3051   *   - 'SAMEORIGIN': Allow framing by pages on the same domain.
3052   *   - false: Allow all framing.
3053   */
3054  $wgApiFrameOptions = 'DENY';
3055  
3056  /**
3057   * Disable output compression (enabled by default if zlib is available)
3058   */
3059  $wgDisableOutputCompression = false;
3060  
3061  /**
3062   * Should we allow a broader set of characters in id attributes, per HTML5?  If
3063   * not, use only HTML 4-compatible IDs.  This option is for testing -- when the
3064   * functionality is ready, it will be on by default with no option.
3065   *
3066   * Currently this appears to work fine in all browsers, but it's disabled by
3067   * default because it normalizes id's a bit too aggressively, breaking preexisting
3068   * content (particularly Cite).  See bug 27733, bug 27694, bug 27474.
3069   */
3070  $wgExperimentalHtmlIds = false;
3071  
3072  /**
3073   * Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code
3074   * You can add new icons to the built in copyright or poweredby, or you can create
3075   * a new block. Though note that you may need to add some custom css to get good styling
3076   * of new blocks in monobook. vector and modern should work without any special css.
3077   *
3078   * $wgFooterIcons itself is a key/value array.
3079   * The key is the name of a block that the icons will be wrapped in. The final id varies
3080   * by skin; Monobook and Vector will turn poweredby into f-poweredbyico while Modern
3081   * turns it into mw_poweredby.
3082   * The value is either key/value array of icons or a string.
3083   * In the key/value array the key may or may not be used by the skin but it can
3084   * be used to find the icon and unset it or change the icon if needed.
3085   * This is useful for disabling icons that are set by extensions.
3086   * The value should be either a string or an array. If it is a string it will be output
3087   * directly as html, however some skins may choose to ignore it. An array is the preferred format
3088   * for the icon, the following keys are used:
3089   * - src: An absolute url to the image to use for the icon, this is recommended
3090   *        but not required, however some skins will ignore icons without an image
3091   * - url: The url to use in the a element around the text or icon, if not set an a element will
3092   *        not be outputted
3093   * - alt: This is the text form of the icon, it will be displayed without an image in
3094   *        skins like Modern or if src is not set, and will otherwise be used as
3095   *        the alt="" for the image. This key is required.
3096   * - width and height: If the icon specified by src is not of the standard size
3097   *                     you can specify the size of image to use with these keys.
3098   *                     Otherwise they will default to the standard 88x31.
3099   * @todo Reformat documentation.
3100   */
3101  $wgFooterIcons = array(
3102      "copyright" => array(
3103          "copyright" => array(), // placeholder for the built in copyright icon
3104      ),
3105      "poweredby" => array(
3106          "mediawiki" => array(
3107          // src defaults to "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png"
3108              "src" => null,
3109              "url" => "//www.mediawiki.org/",
3110              "alt" => "Powered by MediaWiki",
3111          )
3112      ),
3113  );
3114  
3115  /**
3116   * Login / create account link behavior when it's possible for anonymous users
3117   * to create an account.
3118   *  - true = use a combined login / create account link
3119   *  - false = split login and create account into two separate links
3120   */
3121  $wgUseCombinedLoginLink = false;
3122  
3123  /**
3124   * Display user edit counts in various prominent places.
3125   */
3126  $wgEdititis = false;
3127  
3128  /**
3129   * Some web hosts attempt to rewrite all responses with a 404 (not found)
3130   * status code, mangling or hiding MediaWiki's output. If you are using such a
3131   * host, you should start looking for a better one. While you're doing that,
3132   * set this to false to convert some of MediaWiki's 404 responses to 200 so
3133   * that the generated error pages can be seen.
3134   *
3135   * In cases where for technical reasons it is more important for MediaWiki to
3136   * send the correct status code than for the body to be transmitted intact,
3137   * this configuration variable is ignored.
3138   */
3139  $wgSend404Code = true;
3140  
3141  /**
3142   * The $wgShowRollbackEditCount variable is used to show how many edits will be
3143   * rollback. The numeric value of the variable are the limit up to are counted.
3144   * If the value is false or 0, the edits are not counted. Disabling this will
3145   * furthermore prevent MediaWiki from hiding some useless rollback links.
3146   *
3147   * @since 1.20
3148   */
3149  $wgShowRollbackEditCount = 10;
3150  
3151  /**
3152   * Output a <link rel="canonical"> tag on every page indicating the canonical
3153   * server which should be used, i.e. $wgServer or $wgCanonicalServer. Since
3154   * detection of the current server is unreliable, the link is sent
3155   * unconditionally.
3156   */
3157  $wgEnableCanonicalServerLink = false;
3158  
3159  /**
3160   * When OutputHandler is used, mangle any output that contains
3161   * <cross-domain-policy>. Without this, an attacker can send their own
3162   * cross-domain policy unless it is prevented by the crossdomain.xml file at
3163   * the domain root.
3164   */
3165  $wgMangleFlashPolicy = true;
3166  
3167  /** @} */ # End of output format settings }
3168  
3169  /*************************************************************************//**
3170   * @name   Resource loader settings
3171   * @{
3172   */
3173  
3174  /**
3175   * Client-side resource modules.
3176   *
3177   * Extensions should add their resource loader module definitions
3178   * to the $wgResourceModules variable.
3179   *
3180   * @par Example:
3181   * @code
3182   *   $wgResourceModules['ext.myExtension'] = array(
3183   *      'scripts' => 'myExtension.js',
3184   *      'styles' => 'myExtension.css',
3185   *      'dependencies' => array( 'jquery.cookie', 'jquery.tabIndex' ),
3186   *      'localBasePath' => __DIR__,
3187   *      'remoteExtPath' => 'MyExtension',
3188   *   );
3189   * @endcode
3190   */
3191  $wgResourceModules = array();
3192  
3193  /**
3194   * Skin-specific styles for resource modules.
3195   *
3196   * These are later added to the 'skinStyles' list of the existing module. The 'styles' list can
3197   * not be modified or disabled.
3198   *
3199   * For example, here is a module "bar" and how skin Foo would provide additional styles for it.
3200   *
3201   * @par Example:
3202   * @code
3203   *   $wgResourceModules['bar'] = array(
3204   *     'scripts' => 'resources/bar/bar.js',
3205   *     'styles' => 'resources/bar/main.css',
3206   *   );
3207   *
3208   *   $wgResourceModuleSkinStyles['foo'] = array(
3209   *     'bar' => 'skins/Foo/bar.css',
3210   *   );
3211   * @endcode
3212   *
3213   * This is mostly equivalent to:
3214   *
3215   * @par Equivalent:
3216   * @code
3217   *   $wgResourceModules['bar'] = array(
3218   *     'scripts' => 'resources/bar/bar.js',
3219   *     'styles' => 'resources/bar/main.css',
3220   *     'skinStyles' => array(
3221   *       'foo' => skins/Foo/bar.css',
3222   *     ),
3223   *   );
3224   * @endcode
3225   *
3226   * If the module already defines its own entry in `skinStyles` for a given skin, then
3227   * $wgResourceModuleSkinStyles is ignored.
3228   *
3229   * If a module defines a `skinStyles['default']` the skin may want to extend that instead
3230   * of replacing them. This can be done using the `+` prefix.
3231   *
3232   * @par Example:
3233   * @code
3234   *   $wgResourceModules['bar'] = array(
3235   *     'scripts' => 'resources/bar/bar.js',
3236   *     'styles' => 'resources/bar/basic.css',
3237   *     'skinStyles' => array(
3238   *       'default' => 'resources/bar/additional.css',
3239   *     ),
3240   *   );
3241   *   // Note the '+' character:
3242   *   $wgResourceModuleSkinStyles['+foo'] = array(
3243   *     'bar' => 'skins/Foo/bar.css',
3244   *   );
3245   * @endcode
3246   *
3247   * This is mostly equivalent to:
3248   *
3249   * @par Equivalent:
3250   * @code
3251   *   $wgResourceModules['bar'] = array(
3252   *     'scripts' => 'resources/bar/bar.js',
3253   *     'styles' => 'resources/bar/basic.css',
3254   *     'skinStyles' => array(
3255   *       'default' => 'resources/bar/additional.css',
3256   *       'foo' => array(
3257   *         'resources/bar/additional.css',
3258   *         'skins/Foo/bar.css',
3259   *       ),
3260   *     ),
3261   *   );
3262   * @endcode
3263   *
3264   * In other words, as a module author, use the `styles` list for stylesheets that may not be
3265   * disabled by a skin. To provide default styles that may be extended or replaced,
3266   * use `skinStyles['default']`.
3267   *
3268   * As with $wgResourceModules, paths default to being relative to the MediaWiki root.
3269   * You should always provide a localBasePath and remoteBasePath (or remoteExtPath/remoteSkinPath).
3270   * Either for all skin styles at once (first example below) or for each module separately (second
3271   * example).
3272   *
3273   * @par Example:
3274   * @code
3275   *   $wgResourceModuleSkinStyles['foo'] = array(
3276   *     'bar' => 'bar.css',
3277   *     'quux' => 'quux.css',
3278   *     'remoteSkinPath' => 'Foo',
3279   *     'localBasePath' => __DIR__,
3280   *   );
3281   *
3282   *   $wgResourceModuleSkinStyles['foo'] = array(
3283   *     'bar' => array(
3284   *       'bar.css',
3285   *       'remoteSkinPath' => 'Foo',
3286   *       'localBasePath' => __DIR__,
3287   *     ),
3288   *     'quux' => array(
3289   *       'quux.css',
3290   *       'remoteSkinPath' => 'Foo',
3291   *       'localBasePath' => __DIR__,
3292   *     ),
3293   *   );
3294   * @endcode
3295   */
3296  $wgResourceModuleSkinStyles = array();
3297  
3298  /**
3299   * Extensions should register foreign module sources here. 'local' is a
3300   * built-in source that is not in this array, but defined by
3301   * ResourceLoader::__construct() so that it cannot be unset.
3302   *
3303   * @par Example:
3304   * @code
3305   *   $wgResourceLoaderSources['foo'] = 'http://example.org/w/load.php';
3306   * @endcode
3307   */
3308  $wgResourceLoaderSources = array();
3309  
3310  /**
3311   * Default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
3312   * If not set, then $wgScriptPath will be used as a fallback.
3313   */
3314  $wgResourceBasePath = null;
3315  
3316  /**
3317   * Maximum time in seconds to cache resources served by the resource loader.
3318   * Used to set last modified headers (max-age/s-maxage).
3319   *
3320   * Following options to distinguish:
3321   * - versioned: Used for modules with a version, because changing version
3322   *   numbers causes cache misses. This normally has a long expiry time.
3323   * - unversioned: Used for modules without a version to propagate changes
3324   *   quickly to clients. Also used for modules with errors to recover quickly.
3325   *   This normally has a short expiry time.
3326   *
3327   * Expiry time for the options to distinguish:
3328   * - server: Squid/Varnish but also any other public proxy cache between the
3329   *   client and MediaWiki.
3330   * - client: On the client side (e.g. in the browser cache).
3331   */
3332  $wgResourceLoaderMaxage = array(
3333      'versioned' => array(
3334          'server' => 30 * 24 * 60 * 60, // 30 days
3335          'client' => 30 * 24 * 60 * 60, // 30 days
3336      ),
3337      'unversioned' => array(
3338          'server' => 5 * 60, // 5 minutes
3339          'client' => 5 * 60, // 5 minutes
3340      ),
3341  );
3342  
3343  /**
3344   * The default debug mode (on/off) for of ResourceLoader requests.
3345   *
3346   * This will still be overridden when the debug URL parameter is used.
3347   */
3348  $wgResourceLoaderDebug = false;
3349  
3350  /**
3351   * Enable embedding of certain resources using Edge Side Includes. This will
3352   * improve performance but only works if there is something in front of the
3353   * web server (e..g a Squid or Varnish server) configured to process the ESI.
3354   */
3355  $wgResourceLoaderUseESI = false;
3356  
3357  /**
3358   * Put each statement on its own line when minifying JavaScript. This makes
3359   * debugging in non-debug mode a bit easier.
3360   */
3361  $wgResourceLoaderMinifierStatementsOnOwnLine = false;
3362  
3363  /**
3364   * Maximum line length when minifying JavaScript. This is not a hard maximum:
3365   * the minifier will try not to produce lines longer than this, but may be
3366   * forced to do so in certain cases.
3367   */
3368  $wgResourceLoaderMinifierMaxLineLength = 1000;
3369  
3370  /**
3371   * Whether to include the mediawiki.legacy JS library (old wikibits.js), and its
3372   * dependencies.
3373   */
3374  $wgIncludeLegacyJavaScript = true;
3375  
3376  /**
3377   * Whether to include the jQuery Migrate library, which lets legacy JS that
3378   * requires jQuery 1.8.x to work and breaks with 1.9.x+.
3379   *
3380   * @since 1.24
3381   * @deprecated since 1.24, to be removed in 1.25
3382   */
3383  $wgIncludejQueryMigrate = false;
3384  
3385  /**
3386   * Whether to preload the mediawiki.util module as blocking module in the top
3387   * queue.
3388   *
3389   * Before MediaWiki 1.19, modules used to load slower/less asynchronous which
3390   * allowed modules to lack dependencies on 'popular' modules that were likely
3391   * loaded already.
3392   *
3393   * This setting is to aid scripts during migration by providing mediawiki.util
3394   * unconditionally (which was the most commonly missed dependency).
3395   * It doesn't cover all missing dependencies obviously but should fix most of
3396   * them.
3397   *
3398   * This should be removed at some point after site/user scripts have been fixed.
3399   * Enable this if your wiki has a large amount of user/site scripts that are
3400   * lacking dependencies.
3401   * @todo Deprecate
3402   */
3403  $wgPreloadJavaScriptMwUtil = false;
3404  
3405  /**
3406   * Whether or not to assign configuration variables to the global window object.
3407   *
3408   * If this is set to false, old code using deprecated variables will no longer
3409   * work.
3410   *
3411   * @par Example of legacy code:
3412   * @code{,js}
3413   *     if ( window.wgRestrictionEdit ) { ... }
3414   * @endcode
3415   * or:
3416   * @code{,js}
3417   *     if ( wgIsArticle ) { ... }
3418   * @endcode
3419   *
3420   * Instead, one needs to use mw.config.
3421   * @par Example using mw.config global configuration:
3422   * @code{,js}
3423   *     if ( mw.config.exists('wgRestrictionEdit') ) { ... }
3424   * @endcode
3425   * or:
3426   * @code{,js}
3427   *     if ( mw.config.get('wgIsArticle') ) { ... }
3428   * @endcode
3429   */
3430  $wgLegacyJavaScriptGlobals = true;
3431  
3432  /**
3433   * If set to a positive number, ResourceLoader will not generate URLs whose
3434   * query string is more than this many characters long, and will instead use
3435   * multiple requests with shorter query strings. This degrades performance,
3436   * but may be needed if your web server has a low (less than, say 1024)
3437   * query string length limit or a low value for suhosin.get.max_value_length
3438   * that you can't increase.
3439   *
3440   * If set to a negative number, ResourceLoader will assume there is no query
3441   * string length limit.
3442   *
3443   * Defaults to a value based on php configuration.
3444   */
3445  $wgResourceLoaderMaxQueryLength = false;
3446  
3447  /**
3448   * If set to true, JavaScript modules loaded from wiki pages will be parsed
3449   * prior to minification to validate it.
3450   *
3451   * Parse errors will result in a JS exception being thrown during module load,
3452   * which avoids breaking other modules loaded in the same request.
3453   */
3454  $wgResourceLoaderValidateJS = true;
3455  
3456  /**
3457   * If set to true, statically-sourced (file-backed) JavaScript resources will
3458   * be parsed for validity before being bundled up into ResourceLoader modules.
3459   *
3460   * This can be helpful for development by providing better error messages in
3461   * default (non-debug) mode, but JavaScript parsing is slow and memory hungry
3462   * and may fail on large pre-bundled frameworks.
3463   */
3464  $wgResourceLoaderValidateStaticJS = false;
3465  
3466  /**
3467   * If set to true, asynchronous loading of bottom-queue scripts in the "<head>"
3468   * will be enabled. This is an experimental feature that's supposed to make
3469   * JavaScript load faster.
3470   */
3471  $wgResourceLoaderExperimentalAsyncLoading = false;
3472  
3473  /**
3474   * Global LESS variables. An associative array binding variable names to
3475   * LESS code snippets representing their values.
3476   *
3477   * Adding an item here is equivalent to writing `@variable: value;`
3478   * at the beginning of all your .less files, with all the consequences.
3479   * In particular, string values must be escaped and quoted.
3480   *
3481   * Changes to LESS variables do not trigger cache invalidation.
3482   *
3483   * @par Example:
3484   * @code
3485   *   $wgResourceLoaderLESSVars = array(
3486   *     'baseFontSize'  => '1em',
3487   *     'smallFontSize' => '0.75em',
3488   *     'WikimediaBlue' => '#006699',
3489   *   );
3490   * @endcode
3491   * @since 1.22
3492   */
3493  $wgResourceLoaderLESSVars = array();
3494  
3495  /**
3496   * Custom LESS functions. An associative array mapping function name to PHP
3497   * callable.
3498   *
3499   * Changes to LESS functions do not trigger cache invalidation.
3500   *
3501   * @since 1.22
3502   * @deprecated since 1.24 Questionable usefulness and problematic to support,
3503   *     will be removed in the future.
3504   */
3505  $wgResourceLoaderLESSFunctions = array();
3506  
3507  /**
3508   * Default import paths for LESS modules. LESS files referenced in @import
3509   * statements will be looked up here first, and relative to the importing file
3510   * second. To avoid collisions, it's important for the LESS files in these
3511   * directories to have a common, predictable file name prefix.
3512   *
3513   * Extensions need not (and should not) register paths in
3514   * $wgResourceLoaderLESSImportPaths. The import path includes the path of the
3515   * currently compiling LESS file, which allows each extension to freely import
3516   * files from its own tree.
3517   *
3518   * @since 1.22
3519   */
3520  $wgResourceLoaderLESSImportPaths = array(
3521      "$IP/resources/src/mediawiki.less/",
3522  );
3523  
3524  /**
3525   * Whether ResourceLoader should attempt to persist modules in localStorage on
3526   * browsers that support the Web Storage API.
3527   *
3528   * @since 1.23 - Client-side module persistence is experimental. Exercise care.
3529   */
3530  $wgResourceLoaderStorageEnabled = false;
3531  
3532  /**
3533   * Cache version for client-side ResourceLoader module storage. You can trigger
3534   * invalidation of the contents of the module store by incrementing this value.
3535   *
3536   * @since 1.23
3537   */
3538  $wgResourceLoaderStorageVersion = 1;
3539  
3540  /**
3541   * Whether to allow site-wide CSS (MediaWiki:Common.css and friends) on
3542   * restricted pages like Special:UserLogin or Special:Preferences where
3543   * JavaScript is disabled for security reasons. As it is possible to
3544   * execute JavaScript through CSS, setting this to true opens up a
3545   * potential security hole. Some sites may "skin" their wiki by using
3546   * site-wide CSS, causing restricted pages to look unstyled and different
3547   * from the rest of the site.
3548   *
3549   * @since 1.25
3550   */
3551  $wgAllowSiteCSSOnRestrictedPages = false;
3552  
3553  /** @} */ # End of resource loader settings }
3554  
3555  /*************************************************************************//**
3556   * @name   Page title and interwiki link settings
3557   * @{
3558   */
3559  
3560  /**
3561   * Name of the project namespace. If left set to false, $wgSitename will be
3562   * used instead.
3563   */
3564  $wgMetaNamespace = false;
3565  
3566  /**
3567   * Name of the project talk namespace.
3568   *
3569   * Normally you can ignore this and it will be something like
3570   * $wgMetaNamespace . "_talk". In some languages, you may want to set this
3571   * manually for grammatical reasons.
3572   */
3573  $wgMetaNamespaceTalk = false;
3574  
3575  /**
3576   * Additional namespaces. If the namespaces defined in Language.php and
3577   * Namespace.php are insufficient, you can create new ones here, for example,
3578   * to import Help files in other languages. You can also override the namespace
3579   * names of existing namespaces. Extensions developers should use
3580   * $wgCanonicalNamespaceNames.
3581   *
3582   * @warning Once you delete a namespace, the pages in that namespace will
3583   * no longer be accessible. If you rename it, then you can access them through
3584   * the new namespace name.
3585   *
3586   * Custom namespaces should start at 100 to avoid conflicting with standard
3587   * namespaces, and should always follow the even/odd main/talk pattern.
3588   *
3589   * @par Example:
3590   * @code
3591   * $wgExtraNamespaces = array(
3592   *    100 => "Hilfe",
3593   *    101 => "Hilfe_Diskussion",
3594   *    102 => "Aide",
3595   *    103 => "Discussion_Aide"
3596   * );
3597   * @endcode
3598   *
3599   * @todo Add a note about maintenance/namespaceDupes.php
3600   */
3601  $wgExtraNamespaces = array();
3602  
3603  /**
3604   * Same as above, but for namespaces with gender distinction.
3605   * Note: the default form for the namespace should also be set
3606   * using $wgExtraNamespaces for the same index.
3607   * @since 1.18
3608   */
3609  $wgExtraGenderNamespaces = array();
3610  
3611  /**
3612   * Namespace aliases.
3613   *
3614   * These are alternate names for the primary localised namespace names, which
3615   * are defined by $wgExtraNamespaces and the language file. If a page is
3616   * requested with such a prefix, the request will be redirected to the primary
3617   * name.
3618   *
3619   * Set this to a map from namespace names to IDs.
3620   *
3621   * @par Example:
3622   * @code
3623   *    $wgNamespaceAliases = array(
3624   *        'Wikipedian' => NS_USER,
3625   *        'Help' => 100,
3626   *    );
3627   * @endcode
3628   */
3629  $wgNamespaceAliases = array();
3630  
3631  /**
3632   * Allowed title characters -- regex character class
3633   * Don't change this unless you know what you're doing
3634   *
3635   * Problematic punctuation:
3636   *   -  []{}|#    Are needed for link syntax, never enable these
3637   *   -  <>        Causes problems with HTML escaping, don't use
3638   *   -  %         Enabled by default, minor problems with path to query rewrite rules, see below
3639   *   -  +         Enabled by default, but doesn't work with path to query rewrite rules,
3640   *                corrupted by apache
3641   *   -  ?         Enabled by default, but doesn't work with path to PATH_INFO rewrites
3642   *
3643   * All three of these punctuation problems can be avoided by using an alias,
3644   * instead of a rewrite rule of either variety.
3645   *
3646   * The problem with % is that when using a path to query rewrite rule, URLs are
3647   * double-unescaped: once by Apache's path conversion code, and again by PHP. So
3648   * %253F, for example, becomes "?". Our code does not double-escape to compensate
3649   * for this, indeed double escaping would break if the double-escaped title was
3650   * passed in the query string rather than the path. This is a minor security issue
3651   * because articles can be created such that they are hard to view or edit.
3652   *
3653   * In some rare cases you may wish to remove + for compatibility with old links.
3654   *
3655   * Theoretically 0x80-0x9F of ISO 8859-1 should be disallowed, but
3656   * this breaks interlanguage links
3657   */
3658  $wgLegalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+";
3659  
3660  /**
3661   * The interwiki prefix of the current wiki, or false if it doesn't have one.
3662   *
3663   * @deprecated since 1.23; use $wgLocalInterwikis instead
3664   */
3665  $wgLocalInterwiki = false;
3666  
3667  /**
3668   * Array for multiple $wgLocalInterwiki values, in case there are several
3669   * interwiki prefixes that point to the current wiki. If $wgLocalInterwiki is
3670   * set, its value is prepended to this array, for backwards compatibility.
3671   *
3672   * Note, recent changes feeds use only the first entry in this array (or
3673   * $wgLocalInterwiki, if it is set). See $wgRCFeeds
3674   */
3675  $wgLocalInterwikis = array();
3676  
3677  /**
3678   * Expiry time for cache of interwiki table
3679   */
3680  $wgInterwikiExpiry = 10800;
3681  
3682  /**
3683   * @name Interwiki caching settings.
3684   * @{
3685   */
3686  
3687  /**
3688   *$wgInterwikiCache specifies path to constant database file.
3689   *
3690   * This cdb database is generated by dumpInterwiki from maintenance and has
3691   * such key formats:
3692   *  - dbname:key - a simple key (e.g. enwiki:meta)
3693   *  - _sitename:key - site-scope key (e.g. wiktionary:meta)
3694   *  - __global:key - global-scope key (e.g. __global:meta)
3695   *  - __sites:dbname - site mapping (e.g. __sites:enwiki)
3696   *
3697   * Sites mapping just specifies site name, other keys provide "local url"
3698   * data layout.
3699   */
3700  $wgInterwikiCache = false;
3701  
3702  /**
3703   * Specify number of domains to check for messages.
3704   *    - 1: Just wiki(db)-level
3705   *    - 2: wiki and global levels
3706   *    - 3: site levels
3707   */
3708  $wgInterwikiScopes = 3;
3709  
3710  /**
3711   * Fallback site, if unable to resolve from cache
3712   */
3713  $wgInterwikiFallbackSite = 'wiki';
3714  
3715  /** @} */ # end of Interwiki caching settings.
3716  
3717  /**
3718   * If local interwikis are set up which allow redirects,
3719   * set this regexp to restrict URLs which will be displayed
3720   * as 'redirected from' links.
3721   *
3722   * @par Example:
3723   * It might look something like this:
3724   * @code
3725   * $wgRedirectSources = '!^https?://[a-z-]+\.wikipedia\.org/!';
3726   * @endcode
3727   *
3728   * Leave at false to avoid displaying any incoming redirect markers.
3729   * This does not affect intra-wiki redirects, which don't change
3730   * the URL.
3731   */
3732  $wgRedirectSources = false;
3733  
3734  /**
3735   * Set this to false to avoid forcing the first letter of links to capitals.
3736   *
3737   * @warning may break links! This makes links COMPLETELY case-sensitive. Links
3738   * appearing with a capital at the beginning of a sentence will *not* go to the
3739   * same place as links in the middle of a sentence using a lowercase initial.
3740   */
3741  $wgCapitalLinks = true;
3742  
3743  /**
3744   * @since 1.16 - This can now be set per-namespace. Some special namespaces (such
3745   * as Special, see MWNamespace::$alwaysCapitalizedNamespaces for the full list) must be
3746   * true by default (and setting them has no effect), due to various things that
3747   * require them to be so. Also, since Talk namespaces need to directly mirror their
3748   * associated content namespaces, the values for those are ignored in favor of the
3749   * subject namespace's setting. Setting for NS_MEDIA is taken automatically from
3750   * NS_FILE.
3751   *
3752   * @par Example:
3753   * @code
3754   *     $wgCapitalLinkOverrides[ NS_FILE ] = false;
3755   * @endcode
3756   */
3757  $wgCapitalLinkOverrides = array();
3758  
3759  /**
3760   * Which namespaces should support subpages?
3761   * See Language.php for a list of namespaces.
3762   */
3763  $wgNamespacesWithSubpages = array(
3764      NS_TALK => true,
3765      NS_USER => true,
3766      NS_USER_TALK => true,
3767      NS_PROJECT => true,
3768      NS_PROJECT_TALK => true,
3769      NS_FILE_TALK => true,
3770      NS_MEDIAWIKI => true,
3771      NS_MEDIAWIKI_TALK => true,
3772      NS_TEMPLATE_TALK => true,
3773      NS_HELP => true,
3774      NS_HELP_TALK => true,
3775      NS_CATEGORY_TALK => true
3776  );
3777  
3778  /**
3779   * Array holding default tracking category names.
3780   *
3781   * Array contains the system messages for each tracking category.
3782   * Tracking categories allow pages with certain characteristics to be tracked.
3783   * It works by adding any such page to a category automatically.
3784   *
3785   * A message with the suffix '-desc' should be added as a description message
3786   * to have extra information on Special:TrackingCategories.
3787   *
3788   * @since 1.23
3789   */
3790  $wgTrackingCategories = array(
3791      'index-category',
3792      'noindex-category',
3793      'expensive-parserfunction-category',
3794      'post-expand-template-argument-category',
3795      'post-expand-template-inclusion-category',
3796      'hidden-category-category',
3797      'broken-file-category',
3798      'node-count-exceeded-category',
3799      'expansion-depth-exceeded-category',
3800  );
3801  
3802  /**
3803   * Array of namespaces which can be deemed to contain valid "content", as far
3804   * as the site statistics are concerned. Useful if additional namespaces also
3805   * contain "content" which should be considered when generating a count of the
3806   * number of articles in the wiki.
3807   */
3808  $wgContentNamespaces = array( NS_MAIN );
3809  
3810  /**
3811   * Max number of redirects to follow when resolving redirects.
3812   * 1 means only the first redirect is followed (default behavior).
3813   * 0 or less means no redirects are followed.
3814   */
3815  $wgMaxRedirects = 1;
3816  
3817  /**
3818   * Array of invalid page redirect targets.
3819   * Attempting to create a redirect to any of the pages in this array
3820   * will make the redirect fail.
3821   * Userlogout is hard-coded, so it does not need to be listed here.
3822   * (bug 10569) Disallow Mypage and Mytalk as well.
3823   *
3824   * As of now, this only checks special pages. Redirects to pages in
3825   * other namespaces cannot be invalidated by this variable.
3826   */
3827  $wgInvalidRedirectTargets = array( 'Filepath', 'Mypage', 'Mytalk', 'Redirect' );
3828  
3829  /** @} */ # End of title and interwiki settings }
3830  
3831  /************************************************************************//**
3832   * @name   Parser settings
3833   * These settings configure the transformation from wikitext to HTML.
3834   * @{
3835   */
3836  
3837  /**
3838   * Parser configuration. Associative array with the following members:
3839   *
3840   *  class             The class name
3841   *
3842   *  preprocessorClass The preprocessor class. Two classes are currently available:
3843   *                    Preprocessor_Hash, which uses plain PHP arrays for temporary
3844   *                    storage, and Preprocessor_DOM, which uses the DOM module for
3845   *                    temporary storage. Preprocessor_DOM generally uses less memory;
3846   *                    the speed of the two is roughly the same.
3847   *
3848   *                    If this parameter is not given, it uses Preprocessor_DOM if the
3849   *                    DOM module is available, otherwise it uses Preprocessor_Hash.
3850   *
3851   * The entire associative array will be passed through to the constructor as
3852   * the first parameter. Note that only Setup.php can use this variable --
3853   * the configuration will change at runtime via $wgParser member functions, so
3854   * the contents of this variable will be out-of-date. The variable can only be
3855   * changed during LocalSettings.php, in particular, it can't be changed during
3856   * an extension setup function.
3857   */
3858  $wgParserConf = array(
3859      'class' => 'Parser',
3860      #'preprocessorClass' => 'Preprocessor_Hash',
3861  );
3862  
3863  /**
3864   * Maximum indent level of toc.
3865   */
3866  $wgMaxTocLevel = 999;
3867  
3868  /**
3869   * A complexity limit on template expansion: the maximum number of nodes visited
3870   * by PPFrame::expand()
3871   */
3872  $wgMaxPPNodeCount = 1000000;
3873  
3874  /**
3875   * A complexity limit on template expansion: the maximum number of elements
3876   * generated by Preprocessor::preprocessToObj(). This allows you to limit the
3877   * amount of memory used by the Preprocessor_DOM node cache: testing indicates
3878   * that each element uses about 160 bytes of memory on a 64-bit processor, so
3879   * this default corresponds to about 155 MB.
3880   *
3881   * When the limit is exceeded, an exception is thrown.
3882   */
3883  $wgMaxGeneratedPPNodeCount = 1000000;
3884  
3885  /**
3886   * Maximum recursion depth for templates within templates.
3887   * The current parser adds two levels to the PHP call stack for each template,
3888   * and xdebug limits the call stack to 100 by default. So this should hopefully
3889   * stop the parser before it hits the xdebug limit.
3890   */
3891  $wgMaxTemplateDepth = 40;
3892  
3893  /**
3894   * @see $wgMaxTemplateDepth
3895   */
3896  $wgMaxPPExpandDepth = 40;
3897  
3898  /**
3899   * URL schemes that should be recognized as valid by wfParseUrl().
3900   *
3901   * WARNING: Do not add 'file:' to this or internal file links will be broken.
3902   * Instead, if you want to support file links, add 'file://'. The same applies
3903   * to any other protocols with the same name as a namespace. See bug #44011 for
3904   * more information.
3905   *
3906   * @see wfParseUrl
3907   */
3908  $wgUrlProtocols = array(
3909      'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://', 'http://',
3910      'https://', 'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
3911      'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
3912      'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:', '//'
3913  );
3914  
3915  /**
3916   * If true, removes (substitutes) templates in "~~~~" signatures.
3917   */
3918  $wgCleanSignatures = true;
3919  
3920  /**
3921   * Whether to allow inline image pointing to other websites
3922   */
3923  $wgAllowExternalImages = false;
3924  
3925  /**
3926   * If the above is false, you can specify an exception here. Image URLs
3927   * that start with this string are then rendered, while all others are not.
3928   * You can use this to set up a trusted, simple repository of images.
3929   * You may also specify an array of strings to allow multiple sites
3930   *
3931   * @par Examples:
3932   * @code
3933   * $wgAllowExternalImagesFrom = 'http://127.0.0.1/';
3934   * $wgAllowExternalImagesFrom = array( 'http://127.0.0.1/', 'http://example.com' );
3935   * @endcode
3936   */
3937  $wgAllowExternalImagesFrom = '';
3938  
3939  /**
3940   * If $wgAllowExternalImages is false, you can allow an on-wiki
3941   * whitelist of regular expression fragments to match the image URL
3942   * against. If the image matches one of the regular expression fragments,
3943   * The image will be displayed.
3944   *
3945   * Set this to true to enable the on-wiki whitelist (MediaWiki:External image whitelist)
3946   * Or false to disable it
3947   */
3948  $wgEnableImageWhitelist = true;
3949  
3950  /**
3951   * A different approach to the above: simply allow the "<img>" tag to be used.
3952   * This allows you to specify alt text and other attributes, copy-paste HTML to
3953   * your wiki more easily, etc.  However, allowing external images in any manner
3954   * will allow anyone with editing rights to snoop on your visitors' IP
3955   * addresses and so forth, if they wanted to, by inserting links to images on
3956   * sites they control.
3957   */
3958  $wgAllowImageTag = false;
3959  
3960  /**
3961   * $wgUseTidy: use tidy to make sure HTML output is sane.
3962   * Tidy is a free tool that fixes broken HTML.
3963   * See http://www.w3.org/People/Raggett/tidy/
3964   *
3965   * - $wgTidyBin should be set to the path of the binary and
3966   * - $wgTidyConf to the path of the configuration file.
3967   * - $wgTidyOpts can include any number of parameters.
3968   * - $wgTidyInternal controls the use of the PECL extension or the
3969   *   libtidy (PHP >= 5) extension to use an in-process tidy library instead
3970   *   of spawning a separate program.
3971   *   Normally you shouldn't need to override the setting except for
3972   *   debugging. To install, use 'pear install tidy' and add a line
3973   *   'extension=tidy.so' to php.ini.
3974   */
3975  $wgUseTidy = false;
3976  
3977  /**
3978   * @see $wgUseTidy
3979   */
3980  $wgAlwaysUseTidy = false;
3981  
3982  /**
3983   * @see $wgUseTidy
3984   */
3985  $wgTidyBin = 'tidy';
3986  
3987  /**
3988   * @see $wgUseTidy
3989   */
3990  $wgTidyConf = $IP . '/includes/tidy.conf';
3991  
3992  /**
3993   * @see $wgUseTidy
3994   */
3995  $wgTidyOpts = '';
3996  
3997  /**
3998   * @see $wgUseTidy
3999   */
4000  $wgTidyInternal = extension_loaded( 'tidy' );
4001  
4002  /**
4003   * Put tidy warnings in HTML comments
4004   * Only works for internal tidy.
4005   */
4006  $wgDebugTidy = false;
4007  
4008  /**
4009   * Allow raw, unchecked HTML in "<html>...</html>" sections.
4010   * THIS IS VERY DANGEROUS on a publicly editable site, so USE wgGroupPermissions
4011   * TO RESTRICT EDITING to only those that you trust
4012   */
4013  $wgRawHtml = false;
4014  
4015  /**
4016   * Set a default target for external links, e.g. _blank to pop up a new window
4017   */
4018  $wgExternalLinkTarget = false;
4019  
4020  /**
4021   * If true, external URL links in wiki text will be given the
4022   * rel="nofollow" attribute as a hint to search engines that
4023   * they should not be followed for ranking purposes as they
4024   * are user-supplied and thus subject to spamming.
4025   */
4026  $wgNoFollowLinks = true;
4027  
4028  /**
4029   * Namespaces in which $wgNoFollowLinks doesn't apply.
4030   * See Language.php for a list of namespaces.
4031   */
4032  $wgNoFollowNsExceptions = array();
4033  
4034  /**
4035   * If this is set to an array of domains, external links to these domain names
4036   * (or any subdomains) will not be set to rel="nofollow" regardless of the
4037   * value of $wgNoFollowLinks.  For instance:
4038   *
4039   * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org',
4040   * 'mediawiki.org' );
4041   *
4042   * This would add rel="nofollow" to links to de.wikipedia.org, but not
4043   * en.wikipedia.org, wiktionary.org, en.wiktionary.org, us.en.wikipedia.org,
4044   * etc.
4045   *
4046   * Defaults to mediawiki.org for the links included in the software by default.
4047   */
4048  $wgNoFollowDomainExceptions = array( 'mediawiki.org' );
4049  
4050  /**
4051   * Allow DISPLAYTITLE to change title display
4052   */
4053  $wgAllowDisplayTitle = true;
4054  
4055  /**
4056   * For consistency, restrict DISPLAYTITLE to text that normalizes to the same
4057   * canonical DB key. Also disallow some inline CSS rules like display: none;
4058   * which can cause the text to be hidden or unselectable.
4059   */
4060  $wgRestrictDisplayTitle = true;
4061  
4062  /**
4063   * Maximum number of calls per parse to expensive parser functions such as
4064   * PAGESINCATEGORY.
4065   */
4066  $wgExpensiveParserFunctionLimit = 100;
4067  
4068  /**
4069   * Preprocessor caching threshold
4070   * Setting it to 'false' will disable the preprocessor cache.
4071   */
4072  $wgPreprocessorCacheThreshold = 1000;
4073  
4074  /**
4075   * Enable interwiki transcluding.  Only when iw_trans=1 in the interwiki table.
4076   */
4077  $wgEnableScaryTranscluding = false;
4078  
4079  /**
4080   * Expiry time for transcluded templates cached in transcache database table.
4081   * Only used $wgEnableInterwikiTranscluding is set to true.
4082   */
4083  $wgTranscludeCacheExpiry = 3600;
4084  
4085  /** @} */ # end of parser settings }
4086  
4087  /************************************************************************//**
4088   * @name   Statistics
4089   * @{
4090   */
4091  
4092  /**
4093   * Method used to determine if a page in a content namespace should be counted
4094   * as a valid article.
4095   *
4096   * Redirect pages will never be counted as valid articles.
4097   *
4098   * This variable can have the following values:
4099   * - 'any': all pages as considered as valid articles
4100   * - 'comma': the page must contain a comma to be considered valid
4101   * - 'link': the page must contain a [[wiki link]] to be considered valid
4102   *
4103   * See also See https://www.mediawiki.org/wiki/Manual:Article_count
4104   *
4105   * Retroactively changing this variable will not affect the existing count,
4106   * to update it, you will need to run the maintenance/updateArticleCount.php
4107   * script.
4108   */
4109  $wgArticleCountMethod = 'link';
4110  
4111  /**
4112   * wgHitcounterUpdateFreq sets how often page counters should be updated, higher
4113   * values are easier on the database. A value of 1 causes the counters to be
4114   * updated on every hit, any higher value n cause them to update *on average*
4115   * every n hits. Should be set to either 1 or something largish, eg 1000, for
4116   * maximum efficiency.
4117   */
4118  $wgHitcounterUpdateFreq = 1;
4119  
4120  /**
4121   * How many days user must be idle before he is considered inactive. Will affect
4122   * the number shown on Special:Statistics, Special:ActiveUsers, and the
4123   * {{NUMBEROFACTIVEUSERS}} magic word in wikitext.
4124   * You might want to leave this as the default value, to provide comparable
4125   * numbers between different wikis.
4126   */
4127  $wgActiveUserDays = 30;
4128  
4129  /** @} */ # End of statistics }
4130  
4131  /************************************************************************//**
4132   * @name   User accounts, authentication
4133   * @{
4134   */
4135  
4136  /**
4137   * For compatibility with old installations set to false
4138   * @deprecated since 1.24 will be removed in future
4139   */
4140  $wgPasswordSalt = true;
4141  
4142  /**
4143   * Specifies the minimal length of a user password. If set to 0, empty pass-
4144   * words are allowed.
4145   */
4146  $wgMinimalPasswordLength = 1;
4147  
4148  /**
4149   * Specifies if users should be sent to a password-reset form on login, if their
4150   * password doesn't meet the requirements of User::isValidPassword().
4151   * @since 1.23
4152   */
4153  $wgInvalidPasswordReset = true;
4154  
4155  /**
4156   * Default password type to use when hashing user passwords
4157   *
4158   * @since 1.24
4159   */
4160  $wgPasswordDefault = 'pbkdf2';
4161  
4162  /**
4163   * Configuration for built-in password types. Maps the password type
4164   * to an array of options. The 'class' option is the Password class to
4165   * use. All other options are class-dependent.
4166   *
4167   * An advanced example:
4168   * @code
4169   * $wgPasswordConfig['bcrypt-peppered'] = array(
4170   *     'class' => 'EncryptedPassword',
4171   *     'underlying' => 'bcrypt',
4172   *     'secrets' => array(),
4173   *     'cipher' => MCRYPT_RIJNDAEL_256,
4174   *     'mode' => MCRYPT_MODE_CBC,
4175   *     'cost' => 5,
4176   * );
4177   * @endcode
4178   *
4179   * @since 1.24
4180   */
4181  $wgPasswordConfig = array(
4182      'A' => array(
4183          'class' => 'MWOldPassword',
4184      ),
4185      'B' => array(
4186          'class' => 'MWSaltedPassword',
4187      ),
4188      'pbkdf2-legacyA' => array(
4189          'class' => 'LayeredParameterizedPassword',
4190          'types' => array(
4191              'A',
4192              'pbkdf2',
4193          ),
4194      ),
4195      'pbkdf2-legacyB' => array(
4196          'class' => 'LayeredParameterizedPassword',
4197          'types' => array(
4198              'B',
4199              'pbkdf2',
4200          ),
4201      ),
4202      'bcrypt' => array(
4203          'class' => 'BcryptPassword',
4204          'cost' => 9,
4205      ),
4206      'pbkdf2' => array(
4207          'class' => 'Pbkdf2Password',
4208          'algo' => 'sha256',
4209          'cost' => '10000',
4210          'length' => '128',
4211      ),
4212  );
4213  
4214  /**
4215   * Whether to allow password resets ("enter some identifying data, and we'll send an email
4216   * with a temporary password you can use to get back into the account") identified by
4217   * various bits of data.  Setting all of these to false (or the whole variable to false)
4218   * has the effect of disabling password resets entirely
4219   */
4220  $wgPasswordResetRoutes = array(
4221      'username' => true,
4222      'email' => false,
4223  );
4224  
4225  /**
4226   * Maximum number of Unicode characters in signature
4227   */
4228  $wgMaxSigChars = 255;
4229  
4230  /**
4231   * Maximum number of bytes in username. You want to run the maintenance
4232   * script ./maintenance/checkUsernames.php once you have changed this value.
4233   */
4234  $wgMaxNameChars = 255;
4235  
4236  /**
4237   * Array of usernames which may not be registered or logged in from
4238   * Maintenance scripts can still use these
4239   */
4240  $wgReservedUsernames = array(
4241      'MediaWiki default', // Default 'Main Page' and MediaWiki: message pages
4242      'Conversion script', // Used for the old Wikipedia software upgrade
4243      'Maintenance script', // Maintenance scripts which perform editing, image import script
4244      'Template namespace initialisation script', // Used in 1.2->1.3 upgrade
4245      'ScriptImporter', // Default user name used by maintenance/importSiteScripts.php
4246      'msg:double-redirect-fixer', // Automatic double redirect fix
4247      'msg:usermessage-editor', // Default user for leaving user messages
4248      'msg:proxyblocker', // For $wgProxyList and Special:Blockme (removed in 1.22)
4249  );
4250  
4251  /**
4252   * Settings added to this array will override the default globals for the user
4253   * preferences used by anonymous visitors and newly created accounts.
4254   * For instance, to disable editing on double clicks:
4255   * $wgDefaultUserOptions ['editondblclick'] = 0;
4256   */
4257  $wgDefaultUserOptions = array(
4258      'ccmeonemails' => 0,
4259      'cols' => 80,
4260      'date' => 'default',
4261      'diffonly' => 0,
4262      'disablemail' => 0,
4263      'editfont' => 'default',
4264      'editondblclick' => 0,
4265      'editsectiononrightclick' => 0,
4266      'enotifminoredits' => 0,
4267      'enotifrevealaddr' => 0,
4268      'enotifusertalkpages' => 1,
4269      'enotifwatchlistpages' => 1,
4270      'extendwatchlist' => 0,
4271      'fancysig' => 0,
4272      'forceeditsummary' => 0,
4273      'gender' => 'unknown',
4274      'hideminor' => 0,
4275      'hidepatrolled' => 0,
4276      'imagesize' => 2,
4277      'math' => 1,
4278      'minordefault' => 0,
4279      'newpageshidepatrolled' => 0,
4280      'nickname' => '',
4281      'norollbackdiff' => 0,
4282      'numberheadings' => 0,
4283      'previewonfirst' => 0,
4284      'previewontop' => 1,
4285      'rcdays' => 7,
4286      'rclimit' => 50,
4287      'rows' => 25,
4288      'showhiddencats' => 0,
4289      'shownumberswatching' => 1,
4290      'showtoolbar' => 1,
4291      'skin' => false,
4292      'stubthreshold' => 0,
4293      'thumbsize' => 5,
4294      'underline' => 2,
4295      'uselivepreview' => 0,
4296      'usenewrc' => 0,
4297      'watchcreations' => 1,
4298      'watchdefault' => 1,
4299      'watchdeletion' => 0,
4300      'watchlistdays' => 3.0,
4301      'watchlisthideanons' => 0,
4302      'watchlisthidebots' => 0,
4303      'watchlisthideliu' => 0,
4304      'watchlisthideminor' => 0,
4305      'watchlisthideown' => 0,
4306      'watchlisthidepatrolled' => 0,
4307      'watchmoves' => 0,
4308      'watchrollback' => 0,
4309      'wllimit' => 250,
4310      'useeditwarning' => 1,
4311      'prefershttps' => 1,
4312  );
4313  
4314  /**
4315   * An array of preferences to not show for the user
4316   */
4317  $wgHiddenPrefs = array();
4318  
4319  /**
4320   * Characters to prevent during new account creations.
4321   * This is used in a regular expression character class during
4322   * registration (regex metacharacters like / are escaped).
4323   */
4324  $wgInvalidUsernameCharacters = '@';
4325  
4326  /**
4327   * Character used as a delimiter when testing for interwiki userrights
4328   * (In Special:UserRights, it is possible to modify users on different
4329   * databases if the delimiter is used, e.g. "Someuser@enwiki").
4330   *
4331   * It is recommended that you have this delimiter in
4332   * $wgInvalidUsernameCharacters above, or you will not be able to
4333   * modify the user rights of those users via Special:UserRights
4334   */
4335  $wgUserrightsInterwikiDelimiter = '@';
4336  
4337  /**
4338   * This is to let user authenticate using https when they come from http.
4339   * Based on an idea by George Herbert on wikitech-l:
4340   * http://lists.wikimedia.org/pipermail/wikitech-l/2010-October/050039.html
4341   * @since 1.17
4342   */
4343  $wgSecureLogin = false;
4344  
4345  /** @} */ # end user accounts }
4346  
4347  /************************************************************************//**
4348   * @name   User rights, access control and monitoring
4349   * @{
4350   */
4351  
4352  /**
4353   * Number of seconds before autoblock entries expire. Default 86400 = 1 day.
4354   */
4355  $wgAutoblockExpiry = 86400;
4356  
4357  /**
4358   * Set this to true to allow blocked users to edit their own user talk page.
4359   */
4360  $wgBlockAllowsUTEdit = false;
4361  
4362  /**
4363   * Allow sysops to ban users from accessing Emailuser
4364   */
4365  $wgSysopEmailBans = true;
4366  
4367  /**
4368   * Limits on the possible sizes of range blocks.
4369   *
4370   * CIDR notation is hard to understand, it's easy to mistakenly assume that a
4371   * /1 is a small range and a /31 is a large range. For IPv4, setting a limit of
4372   * half the number of bits avoids such errors, and allows entire ISPs to be
4373   * blocked using a small number of range blocks.
4374   *
4375   * For IPv6, RFC 3177 recommends that a /48 be allocated to every residential
4376   * customer, so range blocks larger than /64 (half the number of bits) will
4377   * plainly be required. RFC 4692 implies that a very large ISP may be
4378   * allocated a /19 if a generous HD-Ratio of 0.8 is used, so we will use that
4379   * as our limit. As of 2012, blocking the whole world would require a /4 range.
4380   */
4381  $wgBlockCIDRLimit = array(
4382      'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed
4383      'IPv6' => 19,
4384  );
4385  
4386  /**
4387   * If true, blocked users will not be allowed to login. When using this with
4388   * a public wiki, the effect of logging out blocked users may actually be
4389   * avers: unless the user's address is also blocked (e.g. auto-block),
4390   * logging the user out will again allow reading and editing, just as for
4391   * anonymous visitors.
4392   */
4393  $wgBlockDisablesLogin = false;
4394  
4395  /**
4396   * Pages anonymous user may see, set as an array of pages titles.
4397   *
4398   * @par Example:
4399   * @code
4400   * $wgWhitelistRead = array ( "Main Page", "Wikipedia:Help");
4401   * @endcode
4402   *
4403   * Special:Userlogin and Special:ChangePassword are always whitelisted.
4404   *
4405   * @note This will only work if $wgGroupPermissions['*']['read'] is false --
4406   * see below. Otherwise, ALL pages are accessible, regardless of this setting.
4407   *
4408   * @note Also that this will only protect _pages in the wiki_. Uploaded files
4409   * will remain readable. You can use img_auth.php to protect uploaded files,
4410   * see https://www.mediawiki.org/wiki/Manual:Image_Authorization
4411   */
4412  $wgWhitelistRead = false;
4413  
4414  /**
4415   * Pages anonymous user may see, set as an array of regular expressions.
4416   *
4417   * This function will match the regexp against the title name, which
4418   * is without underscore.
4419   *
4420   * @par Example:
4421   * To whitelist [[Main Page]]:
4422   * @code
4423   * $wgWhitelistReadRegexp = array( "/Main Page/" );
4424   * @endcode
4425   *
4426   * @note Unless ^ and/or $ is specified, a regular expression might match
4427   * pages not intended to be whitelisted.  The above example will also
4428   * whitelist a page named 'Security Main Page'.
4429   *
4430   * @par Example:
4431   * To allow reading any page starting with 'User' regardless of the case:
4432   * @code
4433   * $wgWhitelistReadRegexp = array( "@^UsEr.*@i" );
4434   * @endcode
4435   * Will allow both [[User is banned]] and [[User:JohnDoe]]
4436   *
4437   * @note This will only work if $wgGroupPermissions['*']['read'] is false --
4438   * see below. Otherwise, ALL pages are accessible, regardless of this setting.
4439   */
4440  $wgWhitelistReadRegexp = false;
4441  
4442  /**
4443   * Should editors be required to have a validated e-mail
4444   * address before being allowed to edit?
4445   */
4446  $wgEmailConfirmToEdit = false;
4447  
4448  /**
4449   * Permission keys given to users in each group.
4450   *
4451   * This is an array where the keys are all groups and each value is an
4452   * array of the format (right => boolean).
4453   *
4454   * The second format is used to support per-namespace permissions.
4455   * Note that this feature does not fully work for all permission types.
4456   *
4457   * All users are implicitly in the '*' group including anonymous visitors;
4458   * logged-in users are all implicitly in the 'user' group. These will be
4459   * combined with the permissions of all groups that a given user is listed
4460   * in in the user_groups table.
4461   *
4462   * Note: Don't set $wgGroupPermissions = array(); unless you know what you're
4463   * doing! This will wipe all permissions, and may mean that your users are
4464   * unable to perform certain essential tasks or access new functionality
4465   * when new permissions are introduced and default grants established.
4466   *
4467   * Functionality to make pages inaccessible has not been extensively tested
4468   * for security. Use at your own risk!
4469   *
4470   * This replaces $wgWhitelistAccount and $wgWhitelistEdit
4471   */
4472  $wgGroupPermissions = array();
4473  
4474  /** @cond file_level_code */
4475  // Implicit group for all visitors
4476  $wgGroupPermissions['*']['createaccount'] = true;
4477  $wgGroupPermissions['*']['read'] = true;
4478  $wgGroupPermissions['*']['edit'] = true;
4479  $wgGroupPermissions['*']['createpage'] = true;
4480  $wgGroupPermissions['*']['createtalk'] = true;
4481  $wgGroupPermissions['*']['writeapi'] = true;
4482  $wgGroupPermissions['*']['editmyusercss'] = true;
4483  $wgGroupPermissions['*']['editmyuserjs'] = true;
4484  $wgGroupPermissions['*']['viewmywatchlist'] = true;
4485  $wgGroupPermissions['*']['editmywatchlist'] = true;
4486  $wgGroupPermissions['*']['viewmyprivateinfo'] = true;
4487  $wgGroupPermissions['*']['editmyprivateinfo'] = true;
4488  $wgGroupPermissions['*']['editmyoptions'] = true;
4489  #$wgGroupPermissions['*']['patrolmarks'] = false; // let anons see what was patrolled
4490  
4491  // Implicit group for all logged-in accounts
4492  $wgGroupPermissions['user']['move'] = true;
4493  $wgGroupPermissions['user']['move-subpages'] = true;
4494  $wgGroupPermissions['user']['move-rootuserpages'] = true; // can move root userpages
4495  $wgGroupPermissions['user']['move-categorypages'] = true;
4496  $wgGroupPermissions['user']['movefile'] = true;
4497  $wgGroupPermissions['user']['read'] = true;
4498  $wgGroupPermissions['user']['edit'] = true;
4499  $wgGroupPermissions['user']['createpage'] = true;
4500  $wgGroupPermissions['user']['createtalk'] = true;
4501  $wgGroupPermissions['user']['writeapi'] = true;
4502  $wgGroupPermissions['user']['upload'] = true;
4503  $wgGroupPermissions['user']['reupload'] = true;
4504  $wgGroupPermissions['user']['reupload-shared'] = true;
4505  $wgGroupPermissions['user']['minoredit'] = true;
4506  $wgGroupPermissions['user']['purge'] = true; // can use ?action=purge without clicking "ok"
4507  $wgGroupPermissions['user']['sendemail'] = true;
4508  
4509  // Implicit group for accounts that pass $wgAutoConfirmAge
4510  $wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;
4511  $wgGroupPermissions['autoconfirmed']['editsemiprotected'] = true;
4512  
4513  // Users with bot privilege can have their edits hidden
4514  // from various log pages by default
4515  $wgGroupPermissions['bot']['bot'] = true;
4516  $wgGroupPermissions['bot']['autoconfirmed'] = true;
4517  $wgGroupPermissions['bot']['editsemiprotected'] = true;
4518  $wgGroupPermissions['bot']['nominornewtalk'] = true;
4519  $wgGroupPermissions['bot']['autopatrol'] = true;
4520  $wgGroupPermissions['bot']['suppressredirect'] = true;
4521  $wgGroupPermissions['bot']['apihighlimits'] = true;
4522  $wgGroupPermissions['bot']['writeapi'] = true;
4523  
4524  // Most extra permission abilities go to this group
4525  $wgGroupPermissions['sysop']['block'] = true;
4526  $wgGroupPermissions['sysop']['createaccount'] = true;
4527  $wgGroupPermissions['sysop']['delete'] = true;
4528  // can be separately configured for pages with > $wgDeleteRevisionsLimit revs
4529  $wgGroupPermissions['sysop']['bigdelete'] = true;
4530  // can view deleted history entries, but not see or restore the text
4531  $wgGroupPermissions['sysop']['deletedhistory'] = true;
4532  // can view deleted revision text
4533  $wgGroupPermissions['sysop']['deletedtext'] = true;
4534  $wgGroupPermissions['sysop']['undelete'] = true;
4535  $wgGroupPermissions['sysop']['editinterface'] = true;
4536  $wgGroupPermissions['sysop']['editusercss'] = true;
4537  $wgGroupPermissions['sysop']['edituserjs'] = true;
4538  $wgGroupPermissions['sysop']['import'] = true;
4539  $wgGroupPermissions['sysop']['importupload'] = true;
4540  $wgGroupPermissions['sysop']['move'] = true;
4541  $wgGroupPermissions['sysop']['move-subpages'] = true;
4542  $wgGroupPermissions['sysop']['move-rootuserpages'] = true;
4543  $wgGroupPermissions['sysop']['move-categorypages'] = true;
4544  $wgGroupPermissions['sysop']['patrol'] = true;
4545  $wgGroupPermissions['sysop']['autopatrol'] = true;
4546  $wgGroupPermissions['sysop']['protect'] = true;
4547  $wgGroupPermissions['sysop']['editprotected'] = true;
4548  $wgGroupPermissions['sysop']['proxyunbannable'] = true;
4549  $wgGroupPermissions['sysop']['rollback'] = true;
4550  $wgGroupPermissions['sysop']['upload'] = true;
4551  $wgGroupPermissions['sysop']['reupload'] = true;
4552  $wgGroupPermissions['sysop']['reupload-shared'] = true;
4553  $wgGroupPermissions['sysop']['unwatchedpages'] = true;
4554  $wgGroupPermissions['sysop']['autoconfirmed'] = true;
4555  $wgGroupPermissions['sysop']['editsemiprotected'] = true;
4556  $wgGroupPermissions['sysop']['ipblock-exempt'] = true;
4557  $wgGroupPermissions['sysop']['blockemail'] = true;
4558  $wgGroupPermissions['sysop']['markbotedits'] = true;
4559  $wgGroupPermissions['sysop']['apihighlimits'] = true;
4560  $wgGroupPermissions['sysop']['browsearchive'] = true;
4561  $wgGroupPermissions['sysop']['noratelimit'] = true;
4562  $wgGroupPermissions['sysop']['movefile'] = true;
4563  $wgGroupPermissions['sysop']['unblockself'] = true;
4564  $wgGroupPermissions['sysop']['suppressredirect'] = true;
4565  #$wgGroupPermissions['sysop']['pagelang'] = true;
4566  #$wgGroupPermissions['sysop']['upload_by_url'] = true;
4567  $wgGroupPermissions['sysop']['mergehistory'] = true;
4568  
4569  // Permission to change users' group assignments
4570  $wgGroupPermissions['bureaucrat']['userrights'] = true;
4571  $wgGroupPermissions['bureaucrat']['noratelimit'] = true;
4572  // Permission to change users' groups assignments across wikis
4573  #$wgGroupPermissions['bureaucrat']['userrights-interwiki'] = true;
4574  // Permission to export pages including linked pages regardless of $wgExportMaxLinkDepth
4575  #$wgGroupPermissions['bureaucrat']['override-export-depth'] = true;
4576  
4577  #$wgGroupPermissions['sysop']['deletelogentry'] = true;
4578  #$wgGroupPermissions['sysop']['deleterevision'] = true;
4579  // To hide usernames from users and Sysops
4580  #$wgGroupPermissions['suppress']['hideuser'] = true;
4581  // To hide revisions/log items from users and Sysops
4582  #$wgGroupPermissions['suppress']['suppressrevision'] = true;
4583  // To view revisions/log items hidden from users and Sysops
4584  #$wgGroupPermissions['suppress']['viewsuppressed'] = true;
4585  // For private suppression log access
4586  #$wgGroupPermissions['suppress']['suppressionlog'] = true;
4587  
4588  /**
4589   * The developer group is deprecated, but can be activated if need be
4590   * to use the 'lockdb' and 'unlockdb' special pages. Those require
4591   * that a lock file be defined and creatable/removable by the web
4592   * server.
4593   */
4594  # $wgGroupPermissions['developer']['siteadmin'] = true;
4595  
4596  /** @endcond */
4597  
4598  /**
4599   * Permission keys revoked from users in each group.
4600   *
4601   * This acts the same way as wgGroupPermissions above, except that
4602   * if the user is in a group here, the permission will be removed from them.
4603   *
4604   * Improperly setting this could mean that your users will be unable to perform
4605   * certain essential tasks, so use at your own risk!
4606   */
4607  $wgRevokePermissions = array();
4608  
4609  /**
4610   * Implicit groups, aren't shown on Special:Listusers or somewhere else
4611   */
4612  $wgImplicitGroups = array( '*', 'user', 'autoconfirmed' );
4613  
4614  /**
4615   * A map of group names that the user is in, to group names that those users
4616   * are allowed to add or revoke.
4617   *
4618   * Setting the list of groups to add or revoke to true is equivalent to "any
4619   * group".
4620   *
4621   * @par Example:
4622   * To allow sysops to add themselves to the "bot" group:
4623   * @code
4624   *    $wgGroupsAddToSelf = array( 'sysop' => array( 'bot' ) );
4625   * @endcode
4626   *
4627   * @par Example:
4628   * Implicit groups may be used for the source group, for instance:
4629   * @code
4630   *    $wgGroupsRemoveFromSelf = array( '*' => true );
4631   * @endcode
4632   * This allows users in the '*' group (i.e. any user) to remove themselves from
4633   * any group that they happen to be in.
4634   */
4635  $wgGroupsAddToSelf = array();
4636  
4637  /**
4638   * @see $wgGroupsAddToSelf
4639   */
4640  $wgGroupsRemoveFromSelf = array();
4641  
4642  /**
4643   * Set of available actions that can be restricted via action=protect
4644   * You probably shouldn't change this.
4645   * Translated through restriction-* messages.
4646   * Title::getRestrictionTypes() will remove restrictions that are not
4647   * applicable to a specific title (create and upload)
4648   */
4649  $wgRestrictionTypes = array( 'create', 'edit', 'move', 'upload' );
4650  
4651  /**
4652   * Rights which can be required for each protection level (via action=protect)
4653   *
4654   * You can add a new protection level that requires a specific
4655   * permission by manipulating this array. The ordering of elements
4656   * dictates the order on the protection form's lists.
4657   *
4658   *   - '' will be ignored (i.e. unprotected)
4659   *   - 'autoconfirmed' is quietly rewritten to 'editsemiprotected' for backwards compatibility
4660   *   - 'sysop' is quietly rewritten to 'editprotected' for backwards compatibility
4661   */
4662  $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' );
4663  
4664  /**
4665   * Restriction levels that can be used with cascading protection
4666   *
4667   * A page can only be protected with cascading protection if the
4668   * requested restriction level is included in this array.
4669   *
4670   * 'autoconfirmed' is quietly rewritten to 'editsemiprotected' for backwards compatibility.
4671   * 'sysop' is quietly rewritten to 'editprotected' for backwards compatibility.
4672   */
4673  $wgCascadingRestrictionLevels = array( 'sysop' );
4674  
4675  /**
4676   * Restriction levels that should be considered "semiprotected"
4677   *
4678   * Certain places in the interface recognize a dichotomy between "protected"
4679   * and "semiprotected", without further distinguishing the specific levels. In
4680   * general, if anyone can be eligible to edit a protection level merely by
4681   * reaching some condition in $wgAutopromote, it should probably be considered
4682   * "semiprotected".
4683   *
4684   * 'autoconfirmed' is quietly rewritten to 'editsemiprotected' for backwards compatibility.
4685   * 'sysop' is not changed, since it really shouldn't be here.
4686   */
4687  $wgSemiprotectedRestrictionLevels = array( 'autoconfirmed' );
4688  
4689  /**
4690   * Set the minimum permissions required to edit pages in each
4691   * namespace.  If you list more than one permission, a user must
4692   * have all of them to edit pages in that namespace.
4693   *
4694   * @note NS_MEDIAWIKI is implicitly restricted to 'editinterface'.
4695   */
4696  $wgNamespaceProtection = array();
4697  
4698  /**
4699   * Pages in namespaces in this array can not be used as templates.
4700   *
4701   * Elements MUST be numeric namespace ids, you can safely use the MediaWiki
4702   * namespaces constants (NS_USER, NS_MAIN...).
4703   *
4704   * Among other things, this may be useful to enforce read-restrictions
4705   * which may otherwise be bypassed by using the template mechanism.
4706   */
4707  $wgNonincludableNamespaces = array();
4708  
4709  /**
4710   * Number of seconds an account is required to age before it's given the
4711   * implicit 'autoconfirm' group membership. This can be used to limit
4712   * privileges of new accounts.
4713   *
4714   * Accounts created by earlier versions of the software may not have a
4715   * recorded creation date, and will always be considered to pass the age test.
4716   *
4717   * When left at 0, all registered accounts will pass.
4718   *
4719   * @par Example:
4720   * Set automatic confirmation to 10 minutes (which is 600 seconds):
4721   * @code
4722   *  $wgAutoConfirmAge = 600;     // ten minutes
4723   * @endcode
4724   * Set age to one day:
4725   * @code
4726   *  $wgAutoConfirmAge = 3600*24; // one day
4727   * @endcode
4728   */
4729  $wgAutoConfirmAge = 0;
4730  
4731  /**
4732   * Number of edits an account requires before it is autoconfirmed.
4733   * Passing both this AND the time requirement is needed. Example:
4734   *
4735   * @par Example:
4736   * @code
4737   * $wgAutoConfirmCount = 50;
4738   * @endcode
4739   */
4740  $wgAutoConfirmCount = 0;
4741  
4742  /**
4743   * Automatically add a usergroup to any user who matches certain conditions.
4744   *
4745   * @todo Redocument $wgAutopromote
4746   *
4747   * The format is
4748   *   array( '&' or '|' or '^' or '!', cond1, cond2, ... )
4749   * where cond1, cond2, ... are themselves conditions; *OR*
4750   *   APCOND_EMAILCONFIRMED, *OR*
4751   *   array( APCOND_EMAILCONFIRMED ), *OR*
4752   *   array( APCOND_EDITCOUNT, number of edits ), *OR*
4753   *   array( APCOND_AGE, seconds since registration ), *OR*
4754   *   array( APCOND_INGROUPS, group1, group2, ... ), *OR*
4755   *   array( APCOND_ISIP, ip ), *OR*
4756   *   array( APCOND_IPINRANGE, range ), *OR*
4757   *   array( APCOND_AGE_FROM_EDIT, seconds since first edit ), *OR*
4758   *   array( APCOND_BLOCKED ), *OR*
4759   *   array( APCOND_ISBOT ), *OR*
4760   *   similar constructs defined by extensions.
4761   *
4762   * If $wgEmailAuthentication is off, APCOND_EMAILCONFIRMED will be true for any
4763   * user who has provided an e-mail address.
4764   */
4765  $wgAutopromote = array(
4766      'autoconfirmed' => array( '&',
4767          array( APCOND_EDITCOUNT, &$wgAutoConfirmCount ),
4768          array( APCOND_AGE, &$wgAutoConfirmAge ),
4769      ),
4770  );
4771  
4772  /**
4773   * Automatically add a usergroup to any user who matches certain conditions.
4774   *
4775   * Does not add the user to the group again if it has been removed.
4776   * Also, does not remove the group if the user no longer meets the criteria.
4777   *
4778   * The format is:
4779   * @code
4780   *    array( event => criteria, ... )
4781   * @endcode
4782   * Where event is either:
4783   *    - 'onEdit' (when user edits)
4784   *    - 'onView' (when user views the wiki)
4785   *
4786   * Criteria has the same format as $wgAutopromote
4787   *
4788   * @see $wgAutopromote
4789   * @since 1.18
4790   */
4791  $wgAutopromoteOnce = array(
4792      'onEdit' => array(),
4793      'onView' => array()
4794  );
4795  
4796  /**
4797   * Put user rights log entries for autopromotion in recent changes?
4798   * @since 1.18
4799   */
4800  $wgAutopromoteOnceLogInRC = true;
4801  
4802  /**
4803   * $wgAddGroups and $wgRemoveGroups can be used to give finer control over who
4804   * can assign which groups at Special:Userrights.
4805   *
4806   * @par Example:
4807   * Bureaucrats can add any group:
4808   * @code
4809   * $wgAddGroups['bureaucrat'] = true;
4810   * @endcode
4811   * Bureaucrats can only remove bots and sysops:
4812   * @code
4813   * $wgRemoveGroups['bureaucrat'] = array( 'bot', 'sysop' );
4814   * @endcode
4815   * Sysops can make bots:
4816   * @code
4817   * $wgAddGroups['sysop'] = array( 'bot' );
4818   * @endcode
4819   * Sysops can disable other sysops in an emergency, and disable bots:
4820   * @code
4821   * $wgRemoveGroups['sysop'] = array( 'sysop', 'bot' );
4822   * @endcode
4823   */
4824  $wgAddGroups = array();
4825  
4826  /**
4827   * @see $wgAddGroups
4828   */
4829  $wgRemoveGroups = array();
4830  
4831  /**
4832   * A list of available rights, in addition to the ones defined by the core.
4833   * For extensions only.
4834   */
4835  $wgAvailableRights = array();
4836  
4837  /**
4838   * Optional to restrict deletion of pages with higher revision counts
4839   * to users with the 'bigdelete' permission. (Default given to sysops.)
4840   */
4841  $wgDeleteRevisionsLimit = 0;
4842  
4843  /**
4844   * The maximum number of edits a user can have and
4845   * can still be hidden by users with the hideuser permission.
4846   * This is limited for performance reason.
4847   * Set to false to disable the limit.
4848   * @since 1.23
4849   */
4850  $wgHideUserContribLimit = 1000;
4851  
4852  /**
4853   * Number of accounts each IP address may create, 0 to disable.
4854   *
4855   * @warning Requires memcached
4856   */
4857  $wgAccountCreationThrottle = 0;
4858  
4859  /**
4860   * Edits matching these regular expressions in body text
4861   * will be recognised as spam and rejected automatically.
4862   *
4863   * There's no administrator override on-wiki, so be careful what you set. :)
4864   * May be an array of regexes or a single string for backwards compatibility.
4865   *
4866   * @see http://en.wikipedia.org/wiki/Regular_expression
4867   *
4868   * @note Each regex needs a beginning/end delimiter, eg: # or /
4869   */
4870  $wgSpamRegex = array();
4871  
4872  /**
4873   * Same as the above except for edit summaries
4874   */
4875  $wgSummarySpamRegex = array();
4876  
4877  /**
4878   * Whether to use DNS blacklists in $wgDnsBlacklistUrls to check for open
4879   * proxies
4880   * @since 1.16
4881   */
4882  $wgEnableDnsBlacklist = false;
4883  
4884  /**
4885   * List of DNS blacklists to use, if $wgEnableDnsBlacklist is true.
4886   *
4887   * This is an array of either a URL or an array with the URL and a key (should
4888   * the blacklist require a key).
4889   *
4890   * @par Example:
4891   * @code
4892   * $wgDnsBlacklistUrls = array(
4893   *   // String containing URL
4894   *   'http.dnsbl.sorbs.net.',
4895   *   // Array with URL and key, for services that require a key
4896   *   array( 'dnsbl.httpbl.net.', 'mykey' ),
4897   *   // Array with just the URL. While this works, it is recommended that you
4898   *   // just use a string as shown above
4899   *   array( 'opm.tornevall.org.' )
4900   * );
4901   * @endcode
4902   *
4903   * @note You should end the domain name with a . to avoid searching your
4904   * eventual domain search suffixes.
4905   * @since 1.16
4906   */
4907  $wgDnsBlacklistUrls = array( 'http.dnsbl.sorbs.net.' );
4908  
4909  /**
4910   * Proxy whitelist, list of addresses that are assumed to be non-proxy despite
4911   * what the other methods might say.
4912   */
4913  $wgProxyWhitelist = array();
4914  
4915  /**
4916   * Whether to look at the X-Forwarded-For header's list of (potentially spoofed)
4917   * IPs and apply IP blocks to them. This allows for IP blocks to work with correctly-configured
4918   * (transparent) proxies without needing to block the proxies themselves.
4919   */
4920  $wgApplyIpBlocksToXff = false;
4921  
4922  /**
4923   * Simple rate limiter options to brake edit floods.
4924   *
4925   * Maximum number actions allowed in the given number of seconds; after that
4926   * the violating client receives HTTP 500 error pages until the period
4927   * elapses.
4928   *
4929   * @par Example:
4930   * To set a generic maximum of 4 hits in 60 seconds:
4931   * @code
4932   * $wgRateLimits = array( 4, 60 );
4933   * @endcode
4934   *
4935   * You could also limit per action and then type of users. See the inline
4936   * code for a template to use.
4937   *
4938   * This option set is experimental and likely to change.
4939   *
4940   * @warning Requires memcached.
4941   */
4942  $wgRateLimits = array(
4943      'edit' => array(
4944          'anon' => null, // for any and all anonymous edits (aggregate)
4945          'user' => null, // for each logged-in user
4946          'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user'
4947          'ip' => null, // for each anon and recent account
4948          'subnet' => null, // ... within a /24 subnet in IPv4 or /64 in IPv6
4949      ),
4950      'move' => array(
4951          'user' => null,
4952          'newbie' => null,
4953          'ip' => null,
4954          'subnet' => null,
4955      ),
4956      'mailpassword' => array( // triggering password resets emails
4957          'anon' => null,
4958      ),
4959      'emailuser' => array( // emailing other users using MediaWiki
4960          'user' => null,
4961      ),
4962      'linkpurge' => array( // purges of link tables
4963          'anon' => null,
4964          'user' => null,
4965          'newbie' => null,
4966          'ip' => null,
4967          'subnet' => null,
4968      ),
4969      'renderfile' => array( // files rendered via thumb.php or thumb_handler.php
4970          'anon' => null,
4971          'user' => null,
4972          'newbie' => null,
4973          'ip' => null,
4974          'subnet' => null,
4975      ),
4976      'renderfile-nonstandard' => array( // same as above but for non-standard thumbnails
4977          'anon' => null,
4978          'user' => null,
4979          'newbie' => null,
4980          'ip' => null,
4981          'subnet' => null,
4982      ),
4983  );
4984  
4985  /**
4986   * Set to a filename to log rate limiter hits.
4987   *
4988   * @deprecated since 1.23, use $wgDebugLogGroups['ratelimit'] instead
4989   */
4990  $wgRateLimitLog = null;
4991  
4992  /**
4993   * Array of IPs which should be excluded from rate limits.
4994   * This may be useful for whitelisting NAT gateways for conferences, etc.
4995   */
4996  $wgRateLimitsExcludedIPs = array();
4997  
4998  /**
4999   * Log IP addresses in the recentchanges table; can be accessed only by
5000   * extensions (e.g. CheckUser) or a DB admin
5001   * Used for retroactive autoblocks
5002   */
5003  $wgPutIPinRC = true;
5004  
5005  /**
5006   * Integer defining default number of entries to show on
5007   * special pages which are query-pages such as Special:Whatlinkshere.
5008   */
5009  $wgQueryPageDefaultLimit = 50;
5010  
5011  /**
5012   * Limit password attempts to X attempts per Y seconds per IP per account.
5013   *
5014   * @warning Requires memcached.
5015   */
5016  $wgPasswordAttemptThrottle = array( 'count' => 5, 'seconds' => 300 );
5017  
5018  /** @} */ # end of user rights settings
5019  
5020  /************************************************************************//**
5021   * @name   Proxy scanner settings
5022   * @{
5023   */
5024  
5025  /**
5026   * This should always be customised in LocalSettings.php
5027   */
5028  $wgSecretKey = false;
5029  
5030  /**
5031   * Big list of banned IP addresses.
5032   *
5033   * This can have the following formats:
5034   * - An array of addresses, either in the values
5035   *   or the keys (for backward compatibility)
5036   * - A string, in that case this is the path to a file
5037   *   containing the list of IP addresses, one per line
5038   */
5039  $wgProxyList = array();
5040  
5041  /** @} */ # end of proxy scanner settings
5042  
5043  /************************************************************************//**
5044   * @name   Cookie settings
5045   * @{
5046   */
5047  
5048  /**
5049   * Default cookie lifetime, in seconds. Setting to 0 makes all cookies session-only.
5050   */
5051  $wgCookieExpiration = 180 * 86400;
5052  
5053  /**
5054   * Set to set an explicit domain on the login cookies eg, "justthis.domain.org"
5055   * or ".any.subdomain.net"
5056   */
5057  $wgCookieDomain = '';
5058  
5059  /**
5060   * Set this variable if you want to restrict cookies to a certain path within
5061   * the domain specified by $wgCookieDomain.
5062   */
5063  $wgCookiePath = '/';
5064  
5065  /**
5066   * Whether the "secure" flag should be set on the cookie. This can be:
5067   *   - true:      Set secure flag
5068   *   - false:     Don't set secure flag
5069   *   - "detect":  Set the secure flag if $wgServer is set to an HTTPS URL
5070   */
5071  $wgCookieSecure = 'detect';
5072  
5073  /**
5074   * By default, MediaWiki checks if the client supports cookies during the
5075   * login process, so that it can display an informative error message if
5076   * cookies are disabled. Set this to true if you want to disable this cookie
5077   * check.
5078   */
5079  $wgDisableCookieCheck = false;
5080  
5081  /**
5082   * Cookies generated by MediaWiki have names starting with this prefix. Set it
5083   * to a string to use a custom prefix. Setting it to false causes the database
5084   * name to be used as a prefix.
5085   */
5086  $wgCookiePrefix = false;
5087  
5088  /**
5089   * Set authentication cookies to HttpOnly to prevent access by JavaScript,
5090   * in browsers that support this feature. This can mitigates some classes of
5091   * XSS attack.
5092   */
5093  $wgCookieHttpOnly = true;
5094  
5095  /**
5096   * A list of cookies that vary the cache (for use by extensions)
5097   */
5098  $wgCacheVaryCookies = array();
5099  
5100  /**
5101   * Override to customise the session name
5102   */
5103  $wgSessionName = false;
5104  
5105  /** @} */ # end of cookie settings }
5106  
5107  /************************************************************************//**
5108   * @name   LaTeX (mathematical formulas)
5109   * @{
5110   */
5111  
5112  /**
5113   * To use inline TeX, you need to compile 'texvc' (in the 'math' subdirectory of
5114   * the MediaWiki package and have latex, dvips, gs (ghostscript), andconvert
5115   * (ImageMagick) installed and available in the PATH.
5116   * Please see math/README for more information.
5117   */
5118  $wgUseTeX = false;
5119  
5120  /** @} */ # end LaTeX }
5121  
5122  /************************************************************************//**
5123   * @name   Profiling, testing and debugging
5124   *
5125   * To enable profiling, edit StartProfiler.php
5126   *
5127   * @{
5128   */
5129  
5130  /**
5131   * Filename for debug logging. See https://www.mediawiki.org/wiki/How_to_debug
5132   * The debug log file should be not be publicly accessible if it is used, as it
5133   * may contain private data.
5134   */
5135  $wgDebugLogFile = '';
5136  
5137  /**
5138   * Prefix for debug log lines
5139   */
5140  $wgDebugLogPrefix = '';
5141  
5142  /**
5143   * If true, instead of redirecting, show a page with a link to the redirect
5144   * destination. This allows for the inspection of PHP error messages, and easy
5145   * resubmission of form data. For developer use only.
5146   */
5147  $wgDebugRedirects = false;
5148  
5149  /**
5150   * If true, log debugging data from action=raw and load.php.
5151   * This is normally false to avoid overlapping debug entries due to gen=css
5152   * and gen=js requests.
5153   */
5154  $wgDebugRawPage = false;
5155  
5156  /**
5157   * Send debug data to an HTML comment in the output.
5158   *
5159   * This may occasionally be useful when supporting a non-technical end-user.
5160   * It's more secure than exposing the debug log file to the web, since the
5161   * output only contains private data for the current user. But it's not ideal
5162   * for development use since data is lost on fatal errors and redirects.
5163   */
5164  $wgDebugComments = false;
5165  
5166  /**
5167   * Extensive database transaction state debugging
5168   *
5169   * @since 1.20
5170   */
5171  $wgDebugDBTransactions = false;
5172  
5173  /**
5174   * Write SQL queries to the debug log.
5175   *
5176   * This setting is only used $wgLBFactoryConf['class'] is set to
5177   * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
5178   * the DBO_DEBUG flag must be set in the 'flags' option of the database
5179   * connection to achieve the same functionality.
5180   */
5181  $wgDebugDumpSql = false;
5182  
5183  /**
5184   * Trim logged SQL queries to this many bytes. Set 0/false/null to do no
5185   * trimming.
5186   * @since 1.24
5187   */
5188  $wgDebugDumpSqlLength = 500;
5189  
5190  /**
5191   * Map of string log group names to log destinations.
5192   *
5193   * If set, wfDebugLog() output for that group will go to that file instead
5194   * of the regular $wgDebugLogFile. Useful for enabling selective logging
5195   * in production.
5196   *
5197   * Log destinations may be one of the following:
5198   * - false to completely remove from the output, including from $wgDebugLogFile.
5199   * - string values specifying a filename or URI.
5200   * - associative array mapping 'destination' key to the desired filename or URI.
5201   *   The associative array may also contain a 'sample' key with an integer value,
5202   *   specifying a sampling factor.
5203   *
5204   * @par Example:
5205   * @code
5206   * $wgDebugLogGroups['redis'] = '/var/log/mediawiki/redis.log';
5207   * @endcode
5208   *
5209   * @par Advanced example:
5210   * @code
5211   * $wgDebugLogGroups['memcached'] = (
5212   *     'destination' => '/var/log/mediawiki/memcached.log',
5213   *     'sample' => 1000,  // log 1 message out of every 1,000.
5214   * );
5215   * @endcode
5216   */
5217  $wgDebugLogGroups = array();
5218  
5219  /**
5220   * Display debug data at the bottom of the main content area.
5221   *
5222   * Useful for developers and technical users trying to working on a closed wiki.
5223   */
5224  $wgShowDebug = false;
5225  
5226  /**
5227   * Prefix debug messages with relative timestamp. Very-poor man's profiler.
5228   * Since 1.19 also includes memory usage.
5229   */
5230  $wgDebugTimestamps = false;
5231  
5232  /**
5233   * Print HTTP headers for every request in the debug information.
5234   */
5235  $wgDebugPrintHttpHeaders = true;
5236  
5237  /**
5238   * Show the contents of $wgHooks in Special:Version
5239   */
5240  $wgSpecialVersionShowHooks = false;
5241  
5242  /**
5243   * Whether to show "we're sorry, but there has been a database error" pages.
5244   * Displaying errors aids in debugging, but may display information useful
5245   * to an attacker.
5246   */
5247  $wgShowSQLErrors = false;
5248  
5249  /**
5250   * If set to true, uncaught exceptions will print a complete stack trace
5251   * to output. This should only be used for debugging, as it may reveal
5252   * private information in function parameters due to PHP's backtrace
5253   * formatting.
5254   */
5255  $wgShowExceptionDetails = false;
5256  
5257  /**
5258   * If true, show a backtrace for database errors
5259   *
5260   * @note This setting only applies when connection errors and query errors are
5261   * reported in the normal manner. $wgShowExceptionDetails applies in other cases,
5262   * including those in which an uncaught exception is thrown from within the
5263   * exception handler.
5264   */
5265  $wgShowDBErrorBacktrace = false;
5266  
5267  /**
5268   * If true, send the exception backtrace to the error log
5269   */
5270  $wgLogExceptionBacktrace = true;
5271  
5272  /**
5273   * Expose backend server host names through the API and various HTML comments
5274   */
5275  $wgShowHostnames = false;
5276  
5277  /**
5278   * Override server hostname detection with a hardcoded value.
5279   * Should be a string, default false.
5280   * @since 1.20
5281   */
5282  $wgOverrideHostname = false;
5283  
5284  /**
5285   * If set to true MediaWiki will throw notices for some possible error
5286   * conditions and for deprecated functions.
5287   */
5288  $wgDevelopmentWarnings = false;
5289  
5290  /**
5291   * Release limitation to wfDeprecated warnings, if set to a release number
5292   * development warnings will not be generated for deprecations added in releases
5293   * after the limit.
5294   */
5295  $wgDeprecationReleaseLimit = false;
5296  
5297  /**
5298   * Only record profiling info for pages that took longer than this
5299   */
5300  $wgProfileLimit = 0.0;
5301  
5302  /**
5303   * Don't put non-profiling info into log file
5304   *
5305   * @deprecated since 1.23, set the log file in
5306   *   $wgDebugLogGroups['profileoutput'] instead.
5307   */
5308  $wgProfileOnly = false;
5309  
5310  /**
5311   * If true, print a raw call tree instead of per-function report
5312   */
5313  $wgProfileCallTree = false;
5314  
5315  /**
5316   * Should application server host be put into profiling table
5317   */
5318  $wgProfilePerHost = false;
5319  
5320  /**
5321   * Host for UDP profiler.
5322   *
5323   * The host should be running a daemon which can be obtained from MediaWiki
5324   * Git at:
5325   * http://git.wikimedia.org/tree/operations%2Fsoftware.git/master/udpprofile
5326   */
5327  $wgUDPProfilerHost = '127.0.0.1';
5328  
5329  /**
5330   * Port for UDP profiler.
5331   * @see $wgUDPProfilerHost
5332   */
5333  $wgUDPProfilerPort = '3811';
5334  
5335  /**
5336   * Format string for the UDP profiler. The UDP profiler invokes sprintf() with
5337   * (profile id, count, cpu, cpu_sq, real, real_sq, entry name, memory) as
5338   * arguments. You can use sprintf's argument numbering/swapping capability to
5339   * repeat, re-order or omit fields.
5340   *
5341   * @see $wgStatsFormatString
5342   * @since 1.22
5343   */
5344  $wgUDPProfilerFormatString = "%s - %d %f %f %f %f %s\n";
5345  
5346  /**
5347   * Output debug message on every wfProfileIn/wfProfileOut
5348   */
5349  $wgDebugFunctionEntry = false;
5350  
5351  /**
5352   * Destination for wfIncrStats() data...
5353   * 'cache' to go into the system cache, if enabled (memcached)
5354   * 'udp' to be sent to the UDP profiler (see $wgUDPProfilerHost)
5355   * false to disable
5356   */
5357  $wgStatsMethod = 'cache';
5358  
5359  /**
5360   * When $wgStatsMethod is 'udp', setting this to a string allows statistics to
5361   * be aggregated over more than one wiki. The string will be used in place of
5362   * the DB name in outgoing UDP packets. If this is set to false, the DB name
5363   * will be used.
5364   */
5365  $wgAggregateStatsID = false;
5366  
5367  /**
5368   * When $wgStatsMethod is 'udp', this variable specifies how stats should be
5369   * formatted. Its value should be a format string suitable for a sprintf()
5370   * invocation with (id, count, key) arguments, where 'id' is either
5371   * $wgAggregateStatsID or the DB name, 'count' is the value by which the metric
5372   * is being incremented, and 'key' is the metric name.
5373   *
5374   * @see $wgUDPProfilerFormatString
5375   * @see $wgAggregateStatsID
5376   * @since 1.22
5377   */
5378  $wgStatsFormatString = "stats/%s - %s 1 1 1 1 %s\n";
5379  
5380  /**
5381   * Whereas to count the number of time an article is viewed.
5382   * Does not work if pages are cached (for example with squid).
5383   */
5384  $wgDisableCounters = false;
5385  
5386  /**
5387   * InfoAction retrieves a list of transclusion links (both to and from).
5388   * This number puts a limit on that query in the case of highly transcluded
5389   * templates.
5390   */
5391  $wgPageInfoTransclusionLimit = 50;
5392  
5393  /**
5394   * Set this to an integer to only do synchronous site_stats updates
5395   * one every *this many* updates. The other requests go into pending
5396   * delta values in $wgMemc. Make sure that $wgMemc is a global cache.
5397   * If set to -1, updates *only* go to $wgMemc (useful for daemons).
5398   */
5399  $wgSiteStatsAsyncFactor = false;
5400  
5401  /**
5402   * Parser test suite files to be run by parserTests.php when no specific
5403   * filename is passed to it.
5404   *
5405   * Extensions may add their own tests to this array, or site-local tests
5406   * may be added via LocalSettings.php
5407   *
5408   * Use full paths.
5409   */
5410  $wgParserTestFiles = array(
5411      "$IP/tests/parser/parserTests.txt",
5412      "$IP/tests/parser/extraParserTests.txt"
5413  );
5414  
5415  /**
5416   * Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).
5417   */
5418  $wgEnableJavaScriptTest = false;
5419  
5420  /**
5421   * Configuration for javascript testing.
5422   */
5423  $wgJavaScriptTestConfig = array(
5424      'qunit' => array(
5425          // Page where documentation can be found relevant to the QUnit test suite being ran.
5426          // Used in the intro paragraph on [[Special:JavaScriptTest/qunit]] for the
5427          // documentation link in the "javascripttest-qunit-intro" message.
5428          'documentation' => '//www.mediawiki.org/wiki/Manual:JavaScript_unit_testing',
5429          // If you are submitting the QUnit test suite to a TestSwarm instance,
5430          // point this to the "inject.js" script of that instance. This is was registers
5431          // the QUnit hooks to extract the test results and push them back up into the
5432          // TestSwarm database.
5433          // @example 'http://localhost/testswarm/js/inject.js'
5434          // @example '//integration.mediawiki.org/testswarm/js/inject.js'
5435          'testswarm-injectjs' => false,
5436      ),
5437  );
5438  
5439  /**
5440   * Overwrite the caching key prefix with custom value.
5441   * @since 1.19
5442   */
5443  $wgCachePrefix = false;
5444  
5445  /**
5446   * Display the new debugging toolbar. This also enables profiling on database
5447   * queries and other useful output.
5448   * Will disable file cache.
5449   *
5450   * @since 1.19
5451   */
5452  $wgDebugToolbar = false;
5453  
5454  /** @} */ # end of profiling, testing and debugging }
5455  
5456  /************************************************************************//**
5457   * @name   Search
5458   * @{
5459   */
5460  
5461  /**
5462   * Set this to true to disable the full text search feature.
5463   */
5464  $wgDisableTextSearch = false;
5465  
5466  /**
5467   * Set to true to have nicer highlighted text in search results,
5468   * by default off due to execution overhead
5469   */
5470  $wgAdvancedSearchHighlighting = false;
5471  
5472  /**
5473   * Regexp to match word boundaries, defaults for non-CJK languages
5474   * should be empty for CJK since the words are not separate
5475   */
5476  $wgSearchHighlightBoundaries = '[\p{Z}\p{P}\p{C}]';
5477  
5478  /**
5479   * Template for OpenSearch suggestions, defaults to API action=opensearch
5480   *
5481   * Sites with heavy load would typically have these point to a custom
5482   * PHP wrapper to avoid firing up mediawiki for every keystroke
5483   *
5484   * Placeholders: {searchTerms}
5485   */
5486  $wgOpenSearchTemplate = false;
5487  
5488  /**
5489   * Enable OpenSearch suggestions requested by MediaWiki. Set this to
5490   * false if you've disabled scripts that use api?action=opensearch and
5491   * want reduce load caused by cached scripts still pulling suggestions.
5492   * It will let the API fallback by responding with an empty array.
5493   */
5494  $wgEnableOpenSearchSuggest = true;
5495  
5496  /**
5497   * Integer defining default number of entries to show on
5498   * OpenSearch call.
5499   */
5500  $wgOpenSearchDefaultLimit = 10;
5501  
5502  /**
5503   * Expiry time for search suggestion responses
5504   */
5505  $wgSearchSuggestCacheExpiry = 1200;
5506  
5507  /**
5508   * If you've disabled search semi-permanently, this also disables updates to the
5509   * table. If you ever re-enable, be sure to rebuild the search table.
5510   */
5511  $wgDisableSearchUpdate = false;
5512  
5513  /**
5514   * List of namespaces which are searched by default.
5515   *
5516   * @par Example:
5517   * @code
5518   * $wgNamespacesToBeSearchedDefault[NS_MAIN] = true;
5519   * $wgNamespacesToBeSearchedDefault[NS_PROJECT] = true;
5520   * @endcode
5521   */
5522  $wgNamespacesToBeSearchedDefault = array(
5523      NS_MAIN => true,
5524  );
5525  
5526  /**
5527   * Disable the internal MySQL-based search, to allow it to be
5528   * implemented by an extension instead.
5529   */
5530  $wgDisableInternalSearch = false;
5531  
5532  /**
5533   * Set this to a URL to forward search requests to some external location.
5534   * If the URL includes '$1', this will be replaced with the URL-encoded
5535   * search term.
5536   *
5537   * @par Example:
5538   * To forward to Google you'd have something like:
5539   * @code
5540   * $wgSearchForwardUrl =
5541   *     'http://www.google.com/search?q=$1' .
5542   *     '&domains=http://example.com' .
5543   *     '&sitesearch=http://example.com' .
5544   *     '&ie=utf-8&oe=utf-8';
5545   * @endcode
5546   */
5547  $wgSearchForwardUrl = null;
5548  
5549  /**
5550   * Search form behavior.
5551   * - true = use Go & Search buttons
5552   * - false = use Go button & Advanced search link
5553   */
5554  $wgUseTwoButtonsSearchForm = true;
5555  
5556  /**
5557   * Array of namespaces to generate a Google sitemap for when the
5558   * maintenance/generateSitemap.php script is run, or false if one is to be
5559   * generated for all namespaces.
5560   */
5561  $wgSitemapNamespaces = false;
5562  
5563  /**
5564   * Custom namespace priorities for sitemaps. Setting this will allow you to
5565   * set custom priorities to namespaces when sitemaps are generated using the
5566   * maintenance/generateSitemap.php script.
5567   *
5568   * This should be a map of namespace IDs to priority
5569   * @par Example:
5570   * @code
5571   *  $wgSitemapNamespacesPriorities = array(
5572   *      NS_USER => '0.9',
5573   *      NS_HELP => '0.0',
5574   *  );
5575   * @endcode
5576   */
5577  $wgSitemapNamespacesPriorities = false;
5578  
5579  /**
5580   * If true, searches for IP addresses will be redirected to that IP's
5581   * contributions page. E.g. searching for "1.2.3.4" will redirect to
5582   * [[Special:Contributions/1.2.3.4]]
5583   */
5584  $wgEnableSearchContributorsByIP = true;
5585  
5586  /** @} */ # end of search settings
5587  
5588  /************************************************************************//**
5589   * @name   Edit user interface
5590   * @{
5591   */
5592  
5593  /**
5594   * Path to the GNU diff3 utility. If the file doesn't exist, edit conflicts will
5595   * fall back to the old behavior (no merging).
5596   */
5597  $wgDiff3 = '/usr/bin/diff3';
5598  
5599  /**
5600   * Path to the GNU diff utility.
5601   */
5602  $wgDiff = '/usr/bin/diff';
5603  
5604  /**
5605   * Which namespaces have special treatment where they should be preview-on-open
5606   * Internally only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki)
5607   * can specify namespaces of pages they have special treatment for
5608   */
5609  $wgPreviewOnOpenNamespaces = array(
5610      NS_CATEGORY => true
5611  );
5612  
5613  /**
5614   * Enable the UniversalEditButton for browsers that support it
5615   * (currently only Firefox with an extension)
5616   * See http://universaleditbutton.org for more background information
5617   */
5618  $wgUniversalEditButton = true;
5619  
5620  /**
5621   * If user doesn't specify any edit summary when making a an edit, MediaWiki
5622   * will try to automatically create one. This feature can be disabled by set-
5623   * ting this variable false.
5624   */
5625  $wgUseAutomaticEditSummaries = true;
5626  
5627  /** @} */ # end edit UI }
5628  
5629  /************************************************************************//**
5630   * @name   Maintenance
5631   * See also $wgSiteNotice
5632   * @{
5633   */
5634  
5635  /**
5636   * @cond file_level_code
5637   * Set $wgCommandLineMode if it's not set already, to avoid notices
5638   */
5639  if ( !isset( $wgCommandLineMode ) ) {
5640      $wgCommandLineMode = false;
5641  }
5642  /** @endcond */
5643  
5644  /**
5645   * For colorized maintenance script output, is your terminal background dark ?
5646   */
5647  $wgCommandLineDarkBg = false;
5648  
5649  /**
5650   * Set this to a string to put the wiki into read-only mode. The text will be
5651   * used as an explanation to users.
5652   *
5653   * This prevents most write operations via the web interface. Cache updates may
5654   * still be possible. To prevent database writes completely, use the read_only
5655   * option in MySQL.
5656   */
5657  $wgReadOnly = null;
5658  
5659  /**
5660   * If this lock file exists (size > 0), the wiki will be forced into read-only mode.
5661   * Its contents will be shown to users as part of the read-only warning
5662   * message.
5663   *
5664   * Will default to "{$wgUploadDirectory}/lock_yBgMBwiR" in Setup.php
5665   */
5666  $wgReadOnlyFile = false;
5667  
5668  /**
5669   * When you run the web-based upgrade utility, it will tell you what to set
5670   * this to in order to authorize the upgrade process. It will subsequently be
5671   * used as a password, to authorize further upgrades.
5672   *
5673   * For security, do not set this to a guessable string. Use the value supplied
5674   * by the install/upgrade process. To cause the upgrader to generate a new key,
5675   * delete the old key from LocalSettings.php.
5676   */
5677  $wgUpgradeKey = false;
5678  
5679  /**
5680   * Fully specified path to git binary
5681   */
5682  $wgGitBin = '/usr/bin/git';
5683  
5684  /**
5685   * Map GIT repository URLs to viewer URLs to provide links in Special:Version
5686   *
5687   * Key is a pattern passed to preg_match() and preg_replace(),
5688   * without the delimiters (which are #) and must match the whole URL.
5689   * The value is the replacement for the key (it can contain $1, etc.)
5690   * %h will be replaced by the short SHA-1 (7 first chars) and %H by the
5691   * full SHA-1 of the HEAD revision.
5692   * %r will be replaced with a URL-encoded version of $1.
5693   *
5694   * @since 1.20
5695   */
5696  $wgGitRepositoryViewers = array(
5697      'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
5698          'https://git.wikimedia.org/tree/%r/%H',
5699      'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
5700          'https://git.wikimedia.org/tree/%r/%H',
5701  );
5702  
5703  /** @} */ # End of maintenance }
5704  
5705  /************************************************************************//**
5706   * @name   Recent changes, new pages, watchlist and history
5707   * @{
5708   */
5709  
5710  /**
5711   * Recentchanges items are periodically purged; entries older than this many
5712   * seconds will go.
5713   * Default: 13 weeks = about three months
5714   */
5715  $wgRCMaxAge = 13 * 7 * 24 * 3600;
5716  
5717  /**
5718   * Filter $wgRCLinkDays by $wgRCMaxAge to avoid showing links for numbers
5719   * higher than what will be stored. Note that this is disabled by default
5720   * because we sometimes do have RC data which is beyond the limit for some
5721   * reason, and some users may use the high numbers to display that data which
5722   * is still there.
5723   */
5724  $wgRCFilterByAge = false;
5725  
5726  /**
5727   * List of Limits options to list in the Special:Recentchanges and
5728   * Special:Recentchangeslinked pages.
5729   */
5730  $wgRCLinkLimits = array( 50, 100, 250, 500 );
5731  
5732  /**
5733   * List of Days options to list in the Special:Recentchanges and
5734   * Special:Recentchangeslinked pages.
5735   */
5736  $wgRCLinkDays = array( 1, 3, 7, 14, 30 );
5737  
5738  /**
5739   * Destinations to which notifications about recent changes
5740   * should be sent.
5741   *
5742   * As of MediaWiki 1.22, there are 2 supported 'engine' parameter option in core:
5743   *   * 'UDPRCFeedEngine', which is used to send recent changes over UDP to the
5744   *      specified server.
5745   *   * 'RedisPubSubFeedEngine', which is used to send recent changes to Redis.
5746   *
5747   * The common options are:
5748   *   * 'uri' -- the address to which the notices are to be sent.
5749   *   * 'formatter' -- the class name (implementing RCFeedFormatter) which will
5750   *     produce the text to send. This can also be an object of the class.
5751   *   * 'omit_bots' -- whether the bot edits should be in the feed
5752   *   * 'omit_anon' -- whether anonymous edits should be in the feed
5753   *   * 'omit_user' -- whether edits by registered users should be in the feed
5754   *   * 'omit_minor' -- whether minor edits should be in the feed
5755   *   * 'omit_patrolled' -- whether patrolled edits should be in the feed
5756   *
5757   *  The IRC-specific options are:
5758   *   * 'add_interwiki_prefix' -- whether the titles should be prefixed with
5759   *     the first entry in the $wgLocalInterwikis array (or the value of
5760   *     $wgLocalInterwiki, if set)
5761   *
5762   *  The JSON-specific options are:
5763   *   * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
5764   *
5765   * @example $wgRCFeeds['example'] = array(
5766   *        'formatter' => 'JSONRCFeedFormatter',
5767   *        'uri' => "udp://localhost:1336",
5768   *        'add_interwiki_prefix' => false,
5769   *        'omit_bots' => true,
5770   *    );
5771   * @example $wgRCFeeds['exampleirc'] = array(
5772   *        'formatter' => 'IRCColourfulRCFeedFormatter',
5773   *        'uri' => "udp://localhost:1338",
5774   *        'add_interwiki_prefix' => false,
5775   *        'omit_bots' => true,
5776   *    );
5777   * @since 1.22
5778   */
5779  $wgRCFeeds = array();
5780  
5781  /**
5782   * Used by RecentChange::getEngine to find the correct engine to use for a given URI scheme.
5783   * Keys are scheme names, values are names of engine classes.
5784   */
5785  $wgRCEngines = array(
5786      'redis' => 'RedisPubSubFeedEngine',
5787      'udp' => 'UDPRCFeedEngine',
5788  );
5789  
5790  /**
5791   * Use RC Patrolling to check for vandalism
5792   */
5793  $wgUseRCPatrol = true;
5794  
5795  /**
5796   * Use new page patrolling to check new pages on Special:Newpages
5797   */
5798  $wgUseNPPatrol = true;
5799  
5800  /**
5801   * Log autopatrol actions to the log table
5802   */
5803  $wgLogAutopatrol = true;
5804  
5805  /**
5806   * Provide syndication feeds (RSS, Atom) for, e.g., Recentchanges, Newpages
5807   */
5808  $wgFeed = true;
5809  
5810  /**
5811   * Set maximum number of results to return in syndication feeds (RSS, Atom) for
5812   * eg Recentchanges, Newpages.
5813   */
5814  $wgFeedLimit = 50;
5815  
5816  /**
5817   * _Minimum_ timeout for cached Recentchanges feed, in seconds.
5818   * A cached version will continue to be served out even if changes
5819   * are made, until this many seconds runs out since the last render.
5820   *
5821   * If set to 0, feed caching is disabled. Use this for debugging only;
5822   * feed generation can be pretty slow with diffs.
5823   */
5824  $wgFeedCacheTimeout = 60;
5825  
5826  /**
5827   * When generating Recentchanges RSS/Atom feed, diffs will not be generated for
5828   * pages larger than this size.
5829   */
5830  $wgFeedDiffCutoff = 32768;
5831  
5832  /**
5833   * Override the site's default RSS/ATOM feed for recentchanges that appears on
5834   * every page. Some sites might have a different feed they'd like to promote
5835   * instead of the RC feed (maybe like a "Recent New Articles" or "Breaking news" one).
5836   * Should be a format as key (either 'rss' or 'atom') and an URL to the feed
5837   * as value.
5838   * @par Example:
5839   * Configure the 'atom' feed to http://example.com/somefeed.xml
5840   * @code
5841   * $wgSiteFeed['atom'] = "http://example.com/somefeed.xml";
5842   * @endcode
5843   */
5844  $wgOverrideSiteFeed = array();
5845  
5846  /**
5847   * Available feeds objects.
5848   * Should probably only be defined when a page is syndicated ie when
5849   * $wgOut->isSyndicated() is true.
5850   */
5851  $wgFeedClasses = array(
5852      'rss' => 'RSSFeed',
5853      'atom' => 'AtomFeed',
5854  );
5855  
5856  /**
5857   * Which feed types should we provide by default?  This can include 'rss',
5858   * 'atom', neither, or both.
5859   */
5860  $wgAdvertisedFeedTypes = array( 'atom' );
5861  
5862  /**
5863   * Show watching users in recent changes, watchlist and page history views
5864   */
5865  $wgRCShowWatchingUsers = false; # UPO
5866  
5867  /**
5868   * Show watching users in Page views
5869   */
5870  $wgPageShowWatchingUsers = false;
5871  
5872  /**
5873   * Show the amount of changed characters in recent changes
5874   */
5875  $wgRCShowChangedSize = true;
5876  
5877  /**
5878   * If the difference between the character counts of the text
5879   * before and after the edit is below that value, the value will be
5880   * highlighted on the RC page.
5881   */
5882  $wgRCChangedSizeThreshold = 500;
5883  
5884  /**
5885   * Show "Updated (since my last visit)" marker in RC view, watchlist and history
5886   * view for watched pages with new changes
5887   */
5888  $wgShowUpdatedMarker = true;
5889  
5890  /**
5891   * Disable links to talk pages of anonymous users (IPs) in listings on special
5892   * pages like page history, Special:Recentchanges, etc.
5893   */
5894  $wgDisableAnonTalk = false;
5895  
5896  /**
5897   * Enable filtering of categories in Recentchanges
5898   */
5899  $wgAllowCategorizedRecentChanges = false;
5900  
5901  /**
5902   * Allow filtering by change tag in recentchanges, history, etc
5903   * Has no effect if no tags are defined in valid_tag.
5904   */
5905  $wgUseTagFilter = true;
5906  
5907  /**
5908   * If set to an integer, pages that are watched by this many users or more
5909   * will not require the unwatchedpages permission to view the number of
5910   * watchers.
5911   *
5912   * @since 1.21
5913   */
5914  $wgUnwatchedPageThreshold = false;
5915  
5916  /**
5917   * Flags (letter symbols) shown in recent changes and watchlist to indicate
5918   * certain types of edits.
5919   *
5920   * To register a new one:
5921   * @code
5922   * $wgRecentChangesFlags['flag'] => array(
5923   *   // message for the letter displayed next to rows on changes lists
5924   *   'letter' => 'letter-msg',
5925   *   // message for the tooltip of the letter
5926   *   'title' => 'tooltip-msg',
5927   *   // optional (defaults to 'tooltip-msg'), message to use in the legend box
5928   *   'legend' => 'legend-msg',
5929   *   // optional (defaults to 'flag'), CSS class to put on changes lists rows
5930   *   'class' => 'css-class',
5931   * );
5932   * @endcode
5933   *
5934   * @since 1.22
5935   */
5936  $wgRecentChangesFlags = array(
5937      'newpage' => array(
5938          'letter' => 'newpageletter',
5939          'title' => 'recentchanges-label-newpage',
5940          'legend' => 'recentchanges-legend-newpage',
5941      ),
5942      'minor' => array(
5943          'letter' => 'minoreditletter',
5944          'title' => 'recentchanges-label-minor',
5945          'legend' => 'recentchanges-legend-minor',
5946          'class' => 'minoredit',
5947      ),
5948      'bot' => array(
5949          'letter' => 'boteditletter',
5950          'title' => 'recentchanges-label-bot',
5951          'legend' => 'recentchanges-legend-bot',
5952          'class' => 'botedit',
5953      ),
5954      'unpatrolled' => array(
5955          'letter' => 'unpatrolledletter',
5956          'title' => 'recentchanges-label-unpatrolled',
5957          'legend' => 'recentchanges-legend-unpatrolled',
5958      ),
5959  );
5960  
5961  /** @} */ # end RC/watchlist }
5962  
5963  /************************************************************************//**
5964   * @name   Copyright and credits settings
5965   * @{
5966   */
5967  
5968  /**
5969   * Override for copyright metadata.
5970   *
5971   * This is the name of the page containing information about the wiki's copyright status,
5972   * which will be added as a link in the footer if it is specified. It overrides
5973   * $wgRightsUrl if both are specified.
5974   */
5975  $wgRightsPage = null;
5976  
5977  /**
5978   * Set this to specify an external URL containing details about the content license used on your
5979   * wiki.
5980   * If $wgRightsPage is set then this setting is ignored.
5981   */
5982  $wgRightsUrl = null;
5983  
5984  /**
5985   * If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the
5986   * link.
5987   * If using $wgRightsUrl then this value must be specified. If using $wgRightsPage then the name
5988   * of the page will also be used as the link if this variable is not set.
5989   */
5990  $wgRightsText = null;
5991  
5992  /**
5993   * Override for copyright metadata.
5994   */
5995  $wgRightsIcon = null;
5996  
5997  /**
5998   * Set this to some HTML to override the rights icon with an arbitrary logo
5999   * @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
6000   */
6001  $wgCopyrightIcon = null;
6002  
6003  /**
6004   * Set this to true if you want detailed copyright information forms on Upload.
6005   */
6006  $wgUseCopyrightUpload = false;
6007  
6008  /**
6009   * Set this to the number of authors that you want to be credited below an
6010   * article text. Set it to zero to hide the attribution block, and a negative
6011   * number (like -1) to show all authors. Note that this will require 2-3 extra
6012   * database hits, which can have a not insignificant impact on performance for
6013   * large wikis.
6014   */
6015  $wgMaxCredits = 0;
6016  
6017  /**
6018   * If there are more than $wgMaxCredits authors, show $wgMaxCredits of them.
6019   * Otherwise, link to a separate credits page.
6020   */
6021  $wgShowCreditsIfMax = true;
6022  
6023  /** @} */ # end of copyright and credits settings }
6024  
6025  /************************************************************************//**
6026   * @name   Import / Export
6027   * @{
6028   */
6029  
6030  /**
6031   * List of interwiki prefixes for wikis we'll accept as sources for
6032   * Special:Import (for sysops). Since complete page history can be imported,
6033   * these should be 'trusted'.
6034   *
6035   * This can either be a regular array, or an associative map specifying
6036   * subprojects on the interwiki map of the target wiki, or a mix of the two,
6037   * e.g.
6038   * @code
6039   *     $wgImportSources = array(
6040   *         'wikipedia' => array( 'cs', 'en', 'fr', 'zh' ),
6041   *         'wikispecies',
6042   *         'wikia' => array( 'animanga', 'brickipedia', 'desserts' ),
6043   *     );
6044   * @endcode
6045   *
6046   * If a user has the 'import' permission but not the 'importupload' permission,
6047   * they will only be able to run imports through this transwiki interface.
6048   */
6049  $wgImportSources = array();
6050  
6051  /**
6052   * Optional default target namespace for interwiki imports.
6053   * Can use this to create an incoming "transwiki"-style queue.
6054   * Set to numeric key, not the name.
6055   *
6056   * Users may override this in the Special:Import dialog.
6057   */
6058  $wgImportTargetNamespace = null;
6059  
6060  /**
6061   * If set to false, disables the full-history option on Special:Export.
6062   * This is currently poorly optimized for long edit histories, so is
6063   * disabled on Wikimedia's sites.
6064   */
6065  $wgExportAllowHistory = true;
6066  
6067  /**
6068   * If set nonzero, Special:Export requests for history of pages with
6069   * more revisions than this will be rejected. On some big sites things
6070   * could get bogged down by very very long pages.
6071   */
6072  $wgExportMaxHistory = 0;
6073  
6074  /**
6075   * Return distinct author list (when not returning full history)
6076   */
6077  $wgExportAllowListContributors = false;
6078  
6079  /**
6080   * If non-zero, Special:Export accepts a "pagelink-depth" parameter
6081   * up to this specified level, which will cause it to include all
6082   * pages linked to from the pages you specify. Since this number
6083   * can become *insanely large* and could easily break your wiki,
6084   * it's disabled by default for now.
6085   *
6086   * @warning There's a HARD CODED limit of 5 levels of recursion to prevent a
6087   * crazy-big export from being done by someone setting the depth number too
6088   * high. In other words, last resort safety net.
6089   */
6090  $wgExportMaxLinkDepth = 0;
6091  
6092  /**
6093   * Whether to allow the "export all pages in namespace" option
6094   */
6095  $wgExportFromNamespaces = false;
6096  
6097  /**
6098   * Whether to allow exporting the entire wiki into a single file
6099   */
6100  $wgExportAllowAll = false;
6101  
6102  /** @} */ # end of import/export }
6103  
6104  /*************************************************************************//**
6105   * @name   Extensions
6106   * @{
6107   */
6108  
6109  /**
6110   * A list of callback functions which are called once MediaWiki is fully
6111   * initialised
6112   */
6113  $wgExtensionFunctions = array();
6114  
6115  /**
6116   * Extension messages files.
6117   *
6118   * Associative array mapping extension name to the filename where messages can be
6119   * found. The file should contain variable assignments. Any of the variables
6120   * present in languages/messages/MessagesEn.php may be defined, but $messages
6121   * is the most common.
6122   *
6123   * Variables defined in extensions will override conflicting variables defined
6124   * in the core.
6125   *
6126   * Since MediaWiki 1.23, use of this variable to define messages is discouraged; instead, store
6127   * messages in JSON format and use $wgMessagesDirs. For setting other variables than
6128   * $messages, $wgExtensionMessagesFiles should still be used. Use a DIFFERENT key because
6129   * any entry having a key that also exists in $wgMessagesDirs will be ignored.
6130   *
6131   * Extensions using the JSON message format can preserve backward compatibility with
6132   * earlier versions of MediaWiki by using a compatibility shim, such as one generated
6133   * by the generateJsonI18n.php maintenance script, listing it under the SAME key
6134   * as for the $wgMessagesDirs entry.
6135   *
6136   * @par Example:
6137   * @code
6138   *    $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php';
6139   * @endcode
6140   */
6141  $wgExtensionMessagesFiles = array();
6142  
6143  /**
6144   * Extension messages directories.
6145   *
6146   * Associative array mapping extension name to the path of the directory where message files can
6147   * be found. The message files are expected to be JSON files named for their language code, e.g.
6148   * en.json, de.json, etc. Extensions with messages in multiple places may specify an array of
6149   * message directories.
6150   *
6151   * @par Simple example:
6152   * @code
6153   *    $wgMessagesDirs['Example'] = __DIR__ . '/i18n';
6154   * @endcode
6155   *
6156   * @par Complex example:
6157   * @code
6158   *    $wgMessagesDirs['Example'] = array(
6159   *        __DIR__ . '/lib/ve/i18n',
6160   *        __DIR__ . '/lib/oojs-ui/i18n',
6161   *        __DIR__ . '/i18n',
6162   *    )
6163   * @endcode
6164   * @since 1.23
6165   */
6166  $wgMessagesDirs = array(
6167      'core' => "$IP/languages/i18n",
6168      'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n",
6169  );
6170  
6171  /**
6172   * Array of files with list(s) of extension entry points to be used in
6173   * maintenance/mergeMessageFileList.php
6174   * @since 1.22
6175   */
6176  $wgExtensionEntryPointListFiles = array();
6177  
6178  /**
6179   * Parser output hooks.
6180   * This is an associative array where the key is an extension-defined tag
6181   * (typically the extension name), and the value is a PHP callback.
6182   * These will be called as an OutputPageParserOutput hook, if the relevant
6183   * tag has been registered with the parser output object.
6184   *
6185   * Registration is done with $pout->addOutputHook( $tag, $data ).
6186   *
6187   * The callback has the form:
6188   * @code
6189   *    function outputHook( $outputPage, $parserOutput, $data ) { ... }
6190   * @endcode
6191   */
6192  $wgParserOutputHooks = array();
6193  
6194  /**
6195   * Whether to include the NewPP limit report as a HTML comment
6196   */
6197  $wgEnableParserLimitReporting = true;
6198  
6199  /**
6200   * List of valid skin names
6201   *
6202   * The key should be the name in all lower case, the value should be a properly
6203   * cased name for the skin. This value will be prefixed with "Skin" to create
6204   * the class name of the skin to load. Use Skin::getSkinNames() as an accessor
6205   * if you wish to have access to the full list.
6206   */
6207  $wgValidSkinNames = array();
6208  
6209  /**
6210   * Special page list. This is an associative array mapping the (canonical) names of
6211   * special pages to either a class name to be instantiated, or a callback to use for
6212   * creating the special page object. In both cases, the result must be an instance of
6213   * SpecialPage.
6214   */
6215  $wgSpecialPages = array();
6216  
6217  /**
6218   * Array mapping class names to filenames, for autoloading.
6219   */
6220  $wgAutoloadClasses = array();
6221  
6222  /**
6223   * Switch controlling legacy case-insensitive classloading.
6224   * Do not disable if your wiki must support data created by PHP4, or by
6225   * MediaWiki 1.4 or earlier.
6226   */
6227  $wgAutoloadAttemptLowercase = true;
6228  
6229  /**
6230   * An array of information about installed extensions keyed by their type.
6231   *
6232   * All but 'name', 'path' and 'author' can be omitted.
6233   *
6234   * @code
6235   * $wgExtensionCredits[$type][] = array(
6236   *     'path' => __FILE__,
6237   *     'name' => 'Example extension',
6238   *     'namemsg' => 'exampleextension-name',
6239   *     'author' => array(
6240   *         'Foo Barstein',
6241   *     ),
6242   *     'version' => '1.9.0',
6243   *     'url' => 'http://example.org/example-extension/',
6244   *     'descriptionmsg' => 'exampleextension-desc',
6245   *     'license-name' => 'GPL-2.0',
6246   * );
6247   * @endcode
6248   *
6249   * The extensions are listed on Special:Version. This page also looks for a file
6250   * named COPYING or LICENSE (optional .txt extension) and provides a link to
6251   * view said file. When the 'license-name' key is specified, this file is
6252   * interpreted as wikitext.
6253   *
6254   * - $type: One of 'specialpage', 'parserhook', 'variable', 'media', 'antispam',
6255   *    'skin', 'api', or 'other', or any additional types as specified through the
6256   *    ExtensionTypes hook as used in SpecialVersion::getExtensionTypes().
6257   *
6258   * - name: Name of extension as an inline string instead of localizable message.
6259   *    Do not omit this even if 'namemsg' is provided, as it is used to override
6260   *    the path Special:Version uses to find extension's license info, and is
6261   *    required for backwards-compatibility with MediaWiki 1.23 and older.
6262   *
6263   * - namemsg (since MW 1.24): A message key for a message containing the
6264   *    extension's name, if the name is localizable. (For example, skin names
6265   *    usually are.)
6266   *
6267   * - author: A string or an array of strings. Authors can be linked using
6268   *    the regular wikitext link syntax. To have an internationalized version of
6269   *    "and others" show, add an element "...". This element can also be linked,
6270   *    for instance "[http://example ...]".
6271   *
6272   * - descriptionmsg: A message key or an an array with message key and parameters:
6273   *    `'descriptionmsg' => 'exampleextension-desc',`
6274   *
6275   * - description: Description of extension as an inline string instead of
6276   *    localizable message (omit in favour of 'descriptionmsg').
6277   *
6278   * - license-name: Short name of the license (used as label for the link), such
6279   *   as "GPL-2.0" or "MIT" (https://spdx.org/licenses/ for a list of identifiers).
6280   */
6281  $wgExtensionCredits = array();
6282  
6283  /**
6284   * Authentication plugin.
6285   * @var $wgAuth AuthPlugin
6286   */
6287  $wgAuth = null;
6288  
6289  /**
6290   * Global list of hooks.
6291   *
6292   * The key is one of the events made available by MediaWiki, you can find
6293   * a description for most of them in docs/hooks.txt. The array is used
6294   * internally by Hook:run().
6295   *
6296   * The value can be one of:
6297   *
6298   * - A function name:
6299   * @code
6300   *     $wgHooks['event_name'][] = $function;
6301   * @endcode
6302   * - A function with some data:
6303   * @code
6304   *     $wgHooks['event_name'][] = array( $function, $data );
6305   * @endcode
6306   * - A an object method:
6307   * @code
6308   *     $wgHooks['event_name'][] = array( $object, 'method' );
6309   * @endcode
6310   * - A closure:
6311   * @code
6312   *     $wgHooks['event_name'][] = function ( $hookParam ) {
6313   *         // Handler code goes here.
6314   *     };
6315   * @endcode
6316   *
6317   * @warning You should always append to an event array or you will end up
6318   * deleting a previous registered hook.
6319   *
6320   * @warning Hook handlers should be registered at file scope. Registering
6321   * handlers after file scope can lead to unexpected results due to caching.
6322   */
6323  $wgHooks = array();
6324  
6325  /**
6326   * Maps jobs to their handling classes; extensions
6327   * can add to this to provide custom jobs
6328   */
6329  $wgJobClasses = array(
6330      'refreshLinks' => 'RefreshLinksJob',
6331      'refreshLinks2' => 'RefreshLinksJob2', // b/c
6332      'htmlCacheUpdate' => 'HTMLCacheUpdateJob',
6333      'sendMail' => 'EmaillingJob',
6334      'enotifNotify' => 'EnotifNotifyJob',
6335      'fixDoubleRedirect' => 'DoubleRedirectJob',
6336      'uploadFromUrl' => 'UploadFromUrlJob',
6337      'AssembleUploadChunks' => 'AssembleUploadChunksJob',
6338      'PublishStashedFile' => 'PublishStashedFileJob',
6339      'null' => 'NullJob'
6340  );
6341  
6342  /**
6343   * Jobs that must be explicitly requested, i.e. aren't run by job runners unless
6344   * special flags are set. The values here are keys of $wgJobClasses.
6345   *
6346   * These can be:
6347   * - Very long-running jobs.
6348   * - Jobs that you would never want to run as part of a page rendering request.
6349   * - Jobs that you want to run on specialized machines ( like transcoding, or a particular
6350   *   machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
6351   * These settings should be global to all wikis.
6352   */
6353  $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' );
6354  
6355  /**
6356   * Map of job types to how many job "work items" should be run per second
6357   * on each job runner process. The meaning of "work items" varies per job,
6358   * but typically would be something like "pages to update". A single job
6359   * may have a variable number of work items, as is the case with batch jobs.
6360   * This is used by runJobs.php and not jobs run via $wgJobRunRate.
6361   * These settings should be global to all wikis.
6362   * @var float[]
6363   */
6364  $wgJobBackoffThrottling = array();
6365  
6366  /**
6367   * Map of job types to configuration arrays.
6368   * This determines which queue class and storage system is used for each job type.
6369   * Job types that do not have explicit configuration will use the 'default' config.
6370   * These settings should be global to all wikis.
6371   */
6372  $wgJobTypeConf = array(
6373      'default' => array( 'class' => 'JobQueueDB', 'order' => 'random' ),
6374  );
6375  
6376  /**
6377   * Which aggregator to use for tracking which queues have jobs.
6378   * These settings should be global to all wikis.
6379   */
6380  $wgJobQueueAggregator = array(
6381      'class' => 'JobQueueAggregatorMemc'
6382  );
6383  
6384  /**
6385   * Additional functions to be performed with updateSpecialPages.
6386   * Expensive Querypages are already updated.
6387   */
6388  $wgSpecialPageCacheUpdates = array(
6389      'Statistics' => array( 'SiteStatsUpdate', 'cacheUpdate' ),
6390      'Activeusers' => array( 'SpecialActiveUsers', 'cacheUpdate' ),
6391  );
6392  
6393  /**
6394   * Hooks that are used for outputting exceptions.  Format is:
6395   *   $wgExceptionHooks[] = $funcname
6396   * or:
6397   *   $wgExceptionHooks[] = array( $class, $funcname )
6398   * Hooks should return strings or false
6399   */
6400  $wgExceptionHooks = array();
6401  
6402  /**
6403   * Page property link table invalidation lists. When a page property
6404   * changes, this may require other link tables to be updated (eg
6405   * adding __HIDDENCAT__ means the hiddencat tracking category will
6406   * have been added, so the categorylinks table needs to be rebuilt).
6407   * This array can be added to by extensions.
6408   */
6409  $wgPagePropLinkInvalidations = array(
6410      'hiddencat' => 'categorylinks',
6411  );
6412  
6413  /** @} */ # End extensions }
6414  
6415  /*************************************************************************//**
6416   * @name   Categories
6417   * @{
6418   */
6419  
6420  /**
6421   * Use experimental, DMOZ-like category browser
6422   */
6423  $wgUseCategoryBrowser = false;
6424  
6425  /**
6426   *  On  category pages, show thumbnail gallery for images belonging to that
6427   * category instead of listing them as articles.
6428   */
6429  $wgCategoryMagicGallery = true;
6430  
6431  /**
6432   * Paging limit for categories
6433   */
6434  $wgCategoryPagingLimit = 200;
6435  
6436  /**
6437   * Specify how category names should be sorted, when listed on a category page.
6438   * A sorting scheme is also known as a collation.
6439   *
6440   * Available values are:
6441   *
6442   *   - uppercase: Converts the category name to upper case, and sorts by that.
6443   *
6444   *   - identity: Does no conversion. Sorts by binary value of the string.
6445   *
6446   *   - uca-default: Provides access to the Unicode Collation Algorithm with
6447   *     the default element table. This is a compromise collation which sorts
6448   *     all languages in a mediocre way. However, it is better than "uppercase".
6449   *
6450   * To use the uca-default collation, you must have PHP's intl extension
6451   * installed. See http://php.net/manual/en/intl.setup.php . The details of the
6452   * resulting collation will depend on the version of ICU installed on the
6453   * server.
6454   *
6455   * After you change this, you must run maintenance/updateCollation.php to fix
6456   * the sort keys in the database.
6457   *
6458   * Extensions can define there own collations by subclassing Collation
6459   * and using the Collation::factory hook.
6460   */
6461  $wgCategoryCollation = 'uppercase';
6462  
6463  /** @} */ # End categories }
6464  
6465  /*************************************************************************//**
6466   * @name   Logging
6467   * @{
6468   */
6469  
6470  /**
6471   * The logging system has two levels: an event type, which describes the
6472   * general category and can be viewed as a named subset of all logs; and
6473   * an action, which is a specific kind of event that can exist in that
6474   * log type.
6475   */
6476  $wgLogTypes = array(
6477      '',
6478      'block',
6479      'protect',
6480      'rights',
6481      'delete',
6482      'upload',
6483      'move',
6484      'import',
6485      'patrol',
6486      'merge',
6487      'suppress',
6488  );
6489  
6490  /**
6491   * This restricts log access to those who have a certain right
6492   * Users without this will not see it in the option menu and can not view it
6493   * Restricted logs are not added to recent changes
6494   * Logs should remain non-transcludable
6495   * Format: logtype => permissiontype
6496   */
6497  $wgLogRestrictions = array(
6498      'suppress' => 'suppressionlog'
6499  );
6500  
6501  /**
6502   * Show/hide links on Special:Log will be shown for these log types.
6503   *
6504   * This is associative array of log type => boolean "hide by default"
6505   *
6506   * See $wgLogTypes for a list of available log types.
6507   *
6508   * @par Example:
6509   * @code
6510   *   $wgFilterLogTypes = array(
6511   *      'move' => true,
6512   *      'import' => false,
6513   *   );
6514   * @endcode
6515   *
6516   * Will display show/hide links for the move and import logs. Move logs will be
6517   * hidden by default unless the link is clicked. Import logs will be shown by
6518   * default, and hidden when the link is clicked.
6519   *
6520   * A message of the form log-show-hide-[type] should be added, and will be used
6521   * for the link text.
6522   */
6523  $wgFilterLogTypes = array(
6524      'patrol' => true
6525  );
6526  
6527  /**
6528   * Lists the message key string for each log type. The localized messages
6529   * will be listed in the user interface.
6530   *
6531   * Extensions with custom log types may add to this array.
6532   *
6533   * @since 1.19, if you follow the naming convention log-name-TYPE,
6534   * where TYPE is your log type, yoy don't need to use this array.
6535   */
6536  $wgLogNames = array(
6537      '' => 'all-logs-page',
6538      'block' => 'blocklogpage',
6539      'protect' => 'protectlogpage',
6540      'rights' => 'rightslog',
6541      'delete' => 'dellogpage',
6542      'upload' => 'uploadlogpage',
6543      'move' => 'movelogpage',
6544      'import' => 'importlogpage',
6545      'patrol' => 'patrol-log-page',
6546      'merge' => 'mergelog',
6547      'suppress' => 'suppressionlog',
6548  );
6549  
6550  /**
6551   * Lists the message key string for descriptive text to be shown at the
6552   * top of each log type.
6553   *
6554   * Extensions with custom log types may add to this array.
6555   *
6556   * @since 1.19, if you follow the naming convention log-description-TYPE,
6557   * where TYPE is your log type, yoy don't need to use this array.
6558   */
6559  $wgLogHeaders = array(
6560      '' => 'alllogstext',
6561      'block' => 'blocklogtext',
6562      'protect' => 'protectlogtext',
6563      'rights' => 'rightslogtext',
6564      'delete' => 'dellogpagetext',
6565      'upload' => 'uploadlogpagetext',
6566      'move' => 'movelogpagetext',
6567      'import' => 'importlogpagetext',
6568      'patrol' => 'patrol-log-header',
6569      'merge' => 'mergelogpagetext',
6570      'suppress' => 'suppressionlogtext',
6571  );
6572  
6573  /**
6574   * Lists the message key string for formatting individual events of each
6575   * type and action when listed in the logs.
6576   *
6577   * Extensions with custom log types may add to this array.
6578   */
6579  $wgLogActions = array(
6580      'block/block' => 'blocklogentry',
6581      'block/unblock' => 'unblocklogentry',
6582      'block/reblock' => 'reblock-logentry',
6583      'protect/protect' => 'protectedarticle',
6584      'protect/modify' => 'modifiedarticleprotection',
6585      'protect/unprotect' => 'unprotectedarticle',
6586      'protect/move_prot' => 'movedarticleprotection',
6587      'import/upload' => 'import-logentry-upload',
6588      'import/interwiki' => 'import-logentry-interwiki',
6589      'merge/merge' => 'pagemerge-logentry',
6590      'suppress/block' => 'blocklogentry',
6591      'suppress/reblock' => 'reblock-logentry',
6592  );
6593  
6594  /**
6595   * The same as above, but here values are names of functions,
6596   * not messages.
6597   * @see LogPage::actionText
6598   * @see LogFormatter
6599   */
6600  $wgLogActionsHandlers = array(
6601      'move/move' => 'MoveLogFormatter',
6602      'move/move_redir' => 'MoveLogFormatter',
6603      'delete/delete' => 'DeleteLogFormatter',
6604      'delete/restore' => 'DeleteLogFormatter',
6605      'delete/revision' => 'DeleteLogFormatter',
6606      'delete/event' => 'DeleteLogFormatter',
6607      'suppress/revision' => 'DeleteLogFormatter',
6608      'suppress/event' => 'DeleteLogFormatter',
6609      'suppress/delete' => 'DeleteLogFormatter',
6610      'patrol/patrol' => 'PatrolLogFormatter',
6611      'rights/rights' => 'RightsLogFormatter',
6612      'rights/autopromote' => 'RightsLogFormatter',
6613      'upload/upload' => 'LogFormatter',
6614      'upload/overwrite' => 'LogFormatter',
6615      'upload/revert' => 'LogFormatter',
6616  );
6617  
6618  /**
6619   * Maintain a log of newusers at Log/newusers?
6620   */
6621  $wgNewUserLog = true;
6622  
6623  /** @} */ # end logging }
6624  
6625  /*************************************************************************//**
6626   * @name   Special pages (general and miscellaneous)
6627   * @{
6628   */
6629  
6630  /**
6631   * Allow special page inclusions such as {{Special:Allpages}}
6632   */
6633  $wgAllowSpecialInclusion = true;
6634  
6635  /**
6636   * Set this to an array of special page names to prevent
6637   * maintenance/updateSpecialPages.php from updating those pages.
6638   */
6639  $wgDisableQueryPageUpdate = false;
6640  
6641  /**
6642   * List of special pages, followed by what subtitle they should go under
6643   * at Special:SpecialPages
6644   *
6645   * @deprecated since 1.21 Override SpecialPage::getGroupName instead
6646   */
6647  $wgSpecialPageGroups = array();
6648  
6649  /**
6650   * On Special:Unusedimages, consider images "used", if they are put
6651   * into a category. Default (false) is not to count those as used.
6652   */
6653  $wgCountCategorizedImagesAsUsed = false;
6654  
6655  /**
6656   * Maximum number of links to a redirect page listed on
6657   * Special:Whatlinkshere/RedirectDestination
6658   */
6659  $wgMaxRedirectLinksRetrieved = 500;
6660  
6661  /** @} */ # end special pages }
6662  
6663  /*************************************************************************//**
6664   * @name   Actions
6665   * @{
6666   */
6667  
6668  /**
6669   * Array of allowed values for the "title=foo&action=<action>" parameter. Syntax is:
6670   *     'foo' => 'ClassName'    Load the specified class which subclasses Action
6671   *     'foo' => true           Load the class FooAction which subclasses Action
6672   *                             If something is specified in the getActionOverrides()
6673   *                             of the relevant Page object it will be used
6674   *                             instead of the default class.
6675   *     'foo' => false          The action is disabled; show an error message
6676   * Unsetting core actions will probably cause things to complain loudly.
6677   */
6678  $wgActions = array(
6679      'credits' => true,
6680      'delete' => true,
6681      'edit' => true,
6682      'history' => true,
6683      'info' => true,
6684      'markpatrolled' => true,
6685      'protect' => true,
6686      'purge' => true,
6687      'raw' => true,
6688      'render' => true,
6689      'revert' => true,
6690      'revisiondelete' => true,
6691      'rollback' => true,
6692      'submit' => true,
6693      'unprotect' => true,
6694      'unwatch' => true,
6695      'view' => true,
6696      'watch' => true,
6697  );
6698  
6699  /** @} */ # end actions }
6700  
6701  /*************************************************************************//**
6702   * @name   Robot (search engine crawler) policy
6703   * See also $wgNoFollowLinks.
6704   * @{
6705   */
6706  
6707  /**
6708   * Default robot policy.  The default policy is to encourage indexing and fol-
6709   * lowing of links.  It may be overridden on a per-namespace and/or per-page
6710   * basis.
6711   */
6712  $wgDefaultRobotPolicy = 'index,follow';
6713  
6714  /**
6715   * Robot policies per namespaces. The default policy is given above, the array
6716   * is made of namespace constants as defined in includes/Defines.php.  You can-
6717   * not specify a different default policy for NS_SPECIAL: it is always noindex,
6718   * nofollow.  This is because a number of special pages (e.g., ListPages) have
6719   * many permutations of options that display the same data under redundant
6720   * URLs, so search engine spiders risk getting lost in a maze of twisty special
6721   * pages, all alike, and never reaching your actual content.
6722   *
6723   * @par Example:
6724   * @code
6725   *   $wgNamespaceRobotPolicies = array( NS_TALK => 'noindex' );
6726   * @endcode
6727   */
6728  $wgNamespaceRobotPolicies = array();
6729  
6730  /**
6731   * Robot policies per article. These override the per-namespace robot policies.
6732   * Must be in the form of an array where the key part is a properly canonicalised
6733   * text form title and the value is a robot policy.
6734   *
6735   * @par Example:
6736   * @code
6737   * $wgArticleRobotPolicies = array(
6738   *         'Main Page' => 'noindex,follow',
6739   *         'User:Bob' => 'index,follow',
6740   * );
6741   * @endcode
6742   *
6743   * @par Example that DOES NOT WORK because the names are not canonical text
6744   * forms:
6745   * @code
6746   *   $wgArticleRobotPolicies = array(
6747   *     # Underscore, not space!
6748   *     'Main_Page' => 'noindex,follow',
6749   *     # "Project", not the actual project name!
6750   *     'Project:X' => 'index,follow',
6751   *     # Needs to be "Abc", not "abc" (unless $wgCapitalLinks is false for that namespace)!
6752   *     'abc' => 'noindex,nofollow'
6753   *   );
6754   * @endcode
6755   */
6756  $wgArticleRobotPolicies = array();
6757  
6758  /**
6759   * An array of namespace keys in which the __INDEX__/__NOINDEX__ magic words
6760   * will not function, so users can't decide whether pages in that namespace are
6761   * indexed by search engines.  If set to null, default to $wgContentNamespaces.
6762   *
6763   * @par Example:
6764   * @code
6765   *   $wgExemptFromUserRobotsControl = array( NS_MAIN, NS_TALK, NS_PROJECT );
6766   * @endcode
6767   */
6768  $wgExemptFromUserRobotsControl = null;
6769  
6770  /** @} */ # End robot policy }
6771  
6772  /************************************************************************//**
6773   * @name   AJAX and API
6774   * Note: The AJAX entry point which this section refers to is gradually being
6775   * replaced by the API entry point, api.php. They are essentially equivalent.
6776   * Both of them are used for dynamic client-side features, via XHR.
6777   * @{
6778   */
6779  
6780  /**
6781   * Enable the MediaWiki API for convenient access to
6782   * machine-readable data via api.php
6783   *
6784   * See https://www.mediawiki.org/wiki/API
6785   */
6786  $wgEnableAPI = true;
6787  
6788  /**
6789   * Allow the API to be used to perform write operations
6790   * (page edits, rollback, etc.) when an authorised user
6791   * accesses it
6792   */
6793  $wgEnableWriteAPI = true;
6794  
6795  /**
6796   *
6797   *     WARNING: SECURITY THREAT - debug use only
6798   *
6799   * Disables many security checks in the API for debugging purposes.
6800   * This flag should never be used on the production servers, as it introduces
6801   * a number of potential security holes. Even when enabled, the validation
6802   * will still be performed, but instead of failing, API will return a warning.
6803   * Also, there will always be a warning notifying that this flag is set.
6804   * At this point, the flag allows GET requests to go through for modules
6805   * requiring POST.
6806   *
6807   * @since 1.21
6808   */
6809  $wgDebugAPI = false;
6810  
6811  /**
6812   * API module extensions.
6813   *
6814   * Associative array mapping module name to modules specs;
6815   * Each module spec is an associative array containing at least
6816   * the 'class' key for the module's class, and optionally a
6817   * 'factory' key for the factory function to use for the module.
6818   *
6819   * That factory function will be called with two parameters,
6820   * the parent module (an instance of ApiBase, usually ApiMain)
6821   * and the name the module was registered under. The return
6822   * value must be an instance of the class given in the 'class'
6823   * field.
6824   *
6825   * For backward compatibility, the module spec may also be a
6826   * simple string containing the module's class name. In that
6827   * case, the class' constructor will be called with the parent
6828   * module and module name as parameters, as described above.
6829   *
6830   * Examples for registering API modules:
6831   *
6832   * @code
6833   *  $wgAPIModules['foo'] = 'ApiFoo';
6834   *  $wgAPIModules['bar'] = array(
6835   *    'class' => 'ApiBar',
6836   *    'factory' => function( $main, $name ) { ... }
6837   *  );
6838   *  $wgAPIModules['xyzzy'] = array(
6839   *    'class' => 'ApiXyzzy',
6840   *    'factory' => array( 'XyzzyFactory', 'newApiModule' )
6841   *  );
6842   * @endcode
6843   *
6844   * Extension modules may override the core modules.
6845   * See ApiMain::$Modules for a list of the core modules.
6846   */
6847  $wgAPIModules = array();
6848  
6849  /**
6850   * API format module extensions.
6851   * Associative array mapping format module name to module specs (see $wgAPIModules).
6852   * Extension modules may override the core modules.
6853   *
6854   * See ApiMain::$Formats for a list of the core format modules.
6855   */
6856  $wgAPIFormatModules = array();
6857  
6858  /**
6859   * API Query meta module extensions.
6860   * Associative array mapping meta module name to module specs (see $wgAPIModules).
6861   * Extension modules may override the core modules.
6862   *
6863   * See ApiQuery::$QueryMetaModules for a list of the core meta modules.
6864   */
6865  $wgAPIMetaModules = array();
6866  
6867  /**
6868   * API Query prop module extensions.
6869   * Associative array mapping prop module name to module specs (see $wgAPIModules).
6870   * Extension modules may override the core modules.
6871   *
6872   * See ApiQuery::$QueryPropModules for a list of the core prop modules.
6873   */
6874  $wgAPIPropModules = array();
6875  
6876  /**
6877   * API Query list module extensions.
6878   * Associative array mapping list module name to module specs (see $wgAPIModules).
6879   * Extension modules may override the core modules.
6880   *
6881   * See ApiQuery::$QueryListModules for a list of the core list modules.
6882   */
6883  $wgAPIListModules = array();
6884  
6885  /**
6886   * This variable is ignored. To add your module to the API, please add it to $wgAPI*Modules
6887   * @deprecated since 1.21
6888   */
6889  $wgAPIGeneratorModules = array();
6890  
6891  /**
6892   * Maximum amount of rows to scan in a DB query in the API
6893   * The default value is generally fine
6894   */
6895  $wgAPIMaxDBRows = 5000;
6896  
6897  /**
6898   * The maximum size (in bytes) of an API result.
6899   * @warning Do not set this lower than $wgMaxArticleSize*1024
6900   */
6901  $wgAPIMaxResultSize = 8388608;
6902  
6903  /**
6904   * The maximum number of uncached diffs that can be retrieved in one API
6905   * request. Set this to 0 to disable API diffs altogether
6906   */
6907  $wgAPIMaxUncachedDiffs = 1;
6908  
6909  /**
6910   * Log file or URL (TCP or UDP) to log API requests to, or false to disable
6911   * API request logging
6912   */
6913  $wgAPIRequestLog = false;
6914  
6915  /**
6916   * Set the timeout for the API help text cache. If set to 0, caching disabled
6917   */
6918  $wgAPICacheHelpTimeout = 60 * 60;
6919  
6920  /**
6921   * The ApiQueryQueryPages module should skip pages that are redundant to true
6922   * API queries.
6923   */
6924  $wgAPIUselessQueryPages = array(
6925      'MIMEsearch', // aiprop=mime
6926      'LinkSearch', // list=exturlusage
6927      'FileDuplicateSearch', // prop=duplicatefiles
6928  );
6929  
6930  /**
6931   * Enable AJAX framework
6932   */
6933  $wgUseAjax = true;
6934  
6935  /**
6936   * List of Ajax-callable functions.
6937   * Extensions acting as Ajax callbacks must register here
6938   */
6939  $wgAjaxExportList = array();
6940  
6941  /**
6942   * Enable watching/unwatching pages using AJAX.
6943   * Requires $wgUseAjax to be true too.
6944   */
6945  $wgAjaxWatch = true;
6946  
6947  /**
6948   * Enable AJAX check for file overwrite, pre-upload
6949   */
6950  $wgAjaxUploadDestCheck = true;
6951  
6952  /**
6953   * Enable previewing licences via AJAX. Also requires $wgEnableAPI to be true.
6954   */
6955  $wgAjaxLicensePreview = true;
6956  
6957  /**
6958   * Settings for incoming cross-site AJAX requests:
6959   * Newer browsers support cross-site AJAX when the target resource allows requests
6960   * from the origin domain by the Access-Control-Allow-Origin header.
6961   * This is currently only used by the API (requests to api.php)
6962   * $wgCrossSiteAJAXdomains can be set using a wildcard syntax:
6963   *
6964   * - '*' matches any number of characters
6965   * - '?' matches any 1 character
6966   *
6967   * @par Example:
6968   * @code
6969   * $wgCrossSiteAJAXdomains = array(
6970   *     'www.mediawiki.org',
6971   *     '*.wikipedia.org',
6972   *     '*.wikimedia.org',
6973   *     '*.wiktionary.org',
6974   * );
6975   * @endcode
6976   */
6977  $wgCrossSiteAJAXdomains = array();
6978  
6979  /**
6980   * Domains that should not be allowed to make AJAX requests,
6981   * even if they match one of the domains allowed by $wgCrossSiteAJAXdomains
6982   * Uses the same syntax as $wgCrossSiteAJAXdomains
6983   */
6984  $wgCrossSiteAJAXdomainExceptions = array();
6985  
6986  /** @} */ # End AJAX and API }
6987  
6988  /************************************************************************//**
6989   * @name   Shell and process control
6990   * @{
6991   */
6992  
6993  /**
6994   * Maximum amount of virtual memory available to shell processes under linux, in KB.
6995   */
6996  $wgMaxShellMemory = 307200;
6997  
6998  /**
6999   * Maximum file size created by shell processes under linux, in KB
7000   * ImageMagick convert for example can be fairly hungry for scratch space
7001   */
7002  $wgMaxShellFileSize = 102400;
7003  
7004  /**
7005   * Maximum CPU time in seconds for shell processes under Linux
7006   */
7007  $wgMaxShellTime = 180;
7008  
7009  /**
7010   * Maximum wall clock time (i.e. real time, of the kind the clock on the wall
7011   * would measure) in seconds for shell processes under Linux
7012   */
7013  $wgMaxShellWallClockTime = 180;
7014  
7015  /**
7016   * Under Linux: a cgroup directory used to constrain memory usage of shell
7017   * commands. The directory must be writable by the user which runs MediaWiki.
7018   *
7019   * If specified, this is used instead of ulimit, which is inaccurate, and
7020   * causes malloc() to return NULL, which exposes bugs in C applications, making
7021   * them segfault or deadlock.
7022   *
7023   * A wrapper script will create a cgroup for each shell command that runs, as
7024   * a subgroup of the specified cgroup. If the memory limit is exceeded, the
7025   * kernel will send a SIGKILL signal to a process in the subgroup.
7026   *
7027   * @par Example:
7028   * @code
7029   *    mkdir -p /sys/fs/cgroup/memory/mediawiki
7030   *    mkdir -m 0777 /sys/fs/cgroup/memory/mediawiki/job
7031   *    echo '$wgShellCgroup = "/sys/fs/cgroup/memory/mediawiki/job";' >> LocalSettings.php
7032   * @endcode
7033   *
7034   * The reliability of cgroup cleanup can be improved by installing a
7035   * notify_on_release script in the root cgroup, see e.g.
7036   * https://gerrit.wikimedia.org/r/#/c/40784
7037   */
7038  $wgShellCgroup = false;
7039  
7040  /**
7041   * Executable path of the PHP cli binary (php/php5). Should be set up on install.
7042   */
7043  $wgPhpCli = '/usr/bin/php';
7044  
7045  /**
7046   * Locale for LC_CTYPE, to work around http://bugs.php.net/bug.php?id=45132
7047   * For Unix-like operating systems, set this to to a locale that has a UTF-8
7048   * character set. Only the character set is relevant.
7049   */
7050  $wgShellLocale = 'en_US.utf8';
7051  
7052  /** @} */ # End shell }
7053  
7054  /************************************************************************//**
7055   * @name   HTTP client
7056   * @{
7057   */
7058  
7059  /**
7060   * Timeout for HTTP requests done internally, in seconds.
7061   */
7062  $wgHTTPTimeout = 25;
7063  
7064  /**
7065   * Timeout for Asynchronous (background) HTTP requests, in seconds.
7066   */
7067  $wgAsyncHTTPTimeout = 25;
7068  
7069  /**
7070   * Proxy to use for CURL requests.
7071   */
7072  $wgHTTPProxy = false;
7073  
7074  /**
7075   * Timeout for connections done internally (in seconds)
7076   * Only works for curl
7077   */
7078  $wgHTTPConnectTimeout = 5e0;
7079  
7080  /** @} */ # End HTTP client }
7081  
7082  /************************************************************************//**
7083   * @name   Job queue
7084   * See also $wgEnotifUseJobQ.
7085   * @{
7086   */
7087  
7088  /**
7089   * Number of jobs to perform per request. May be less than one in which case
7090   * jobs are performed probabalistically. If this is zero, jobs will not be done
7091   * during ordinary apache requests. In this case, maintenance/runJobs.php should
7092   * be run periodically.
7093   */
7094  $wgJobRunRate = 1;
7095  
7096  /**
7097   * When $wgJobRunRate > 0, try to run jobs asynchronously, spawning a new process
7098   * to handle the job execution, instead of blocking the request until the job
7099   * execution finishes.
7100   * @since 1.23
7101   */
7102  $wgRunJobsAsync = true;
7103  
7104  /**
7105   * Number of rows to update per job
7106   */
7107  $wgUpdateRowsPerJob = 500;
7108  
7109  /**
7110   * Number of rows to update per query
7111   */
7112  $wgUpdateRowsPerQuery = 100;
7113  
7114  /** @} */ # End job queue }
7115  
7116  /************************************************************************//**
7117   * @name   Miscellaneous
7118   * @{
7119   */
7120  
7121  /**
7122   * Name of the external diff engine to use
7123   */
7124  $wgExternalDiffEngine = false;
7125  
7126  /**
7127   * Disable redirects to special pages and interwiki redirects, which use a 302
7128   * and have no "redirected from" link.
7129   *
7130   * @note This is only for articles with #REDIRECT in them. URL's containing a
7131   * local interwiki prefix (or a non-canonical special page name) are still hard
7132   * redirected regardless of this setting.
7133   */
7134  $wgDisableHardRedirects = false;
7135  
7136  /**
7137   * LinkHolderArray batch size
7138   * For debugging
7139   */
7140  $wgLinkHolderBatchSize = 1000;
7141  
7142  /**
7143   * By default MediaWiki does not register links pointing to same server in
7144   * externallinks dataset, use this value to override:
7145   */
7146  $wgRegisterInternalExternals = false;
7147  
7148  /**
7149   * Maximum number of pages to move at once when moving subpages with a page.
7150   */
7151  $wgMaximumMovedPages = 100;
7152  
7153  /**
7154   * Fix double redirects after a page move.
7155   * Tends to conflict with page move vandalism, use only on a private wiki.
7156   */
7157  $wgFixDoubleRedirects = false;
7158  
7159  /**
7160   * Allow redirection to another page when a user logs in.
7161   * To enable, set to a string like 'Main Page'
7162   */
7163  $wgRedirectOnLogin = null;
7164  
7165  /**
7166   * Configuration for processing pool control, for use in high-traffic wikis.
7167   * An implementation is provided in the PoolCounter extension.
7168   *
7169   * This configuration array maps pool types to an associative array. The only
7170   * defined key in the associative array is "class", which gives the class name.
7171   * The remaining elements are passed through to the class as constructor
7172   * parameters.
7173   *
7174   * @par Example:
7175   * @code
7176   *   $wgPoolCounterConf = array( 'ArticleView' => array(
7177   *     'class' => 'PoolCounter_Client',
7178   *     'timeout' => 15, // wait timeout in seconds
7179   *     'workers' => 5, // maximum number of active threads in each pool
7180   *     'maxqueue' => 50, // maximum number of total threads in each pool
7181   *     ... any extension-specific options...
7182   *   );
7183   * @endcode
7184   */
7185  $wgPoolCounterConf = null;
7186  
7187  /**
7188   * To disable file delete/restore temporarily
7189   */
7190  $wgUploadMaintenance = false;
7191  
7192  /**
7193   * Associative array mapping namespace IDs to the name of the content model pages in that namespace
7194   * should have by default (use the CONTENT_MODEL_XXX constants). If no special content type is
7195   * defined for a given namespace, pages in that namespace will use the CONTENT_MODEL_WIKITEXT
7196   * (except for the special case of JS and CS pages).
7197   *
7198   * @since 1.21
7199   */
7200  $wgNamespaceContentModels = array();
7201  
7202  /**
7203   * How to react if a plain text version of a non-text Content object is requested using
7204   * ContentHandler::getContentText():
7205   *
7206   * * 'ignore': return null
7207   * * 'fail': throw an MWException
7208   * * 'serialize': serialize to default format
7209   *
7210   * @since 1.21
7211   */
7212  $wgContentHandlerTextFallback = 'ignore';
7213  
7214  /**
7215   * Set to false to disable use of the database fields introduced by the ContentHandler facility.
7216   * This way, the ContentHandler facility can be used without any additional information in the
7217   * database. A page's content model is then derived solely from the page's title. This however
7218   * means that changing a page's default model (e.g. using $wgNamespaceContentModels) will break
7219   * the page and/or make the content inaccessible. This also means that pages can not be moved to
7220   * a title that would default to a different content model.
7221   *
7222   * Overall, with $wgContentHandlerUseDB = false, no database updates are needed, but content
7223   * handling is less robust and less flexible.
7224   *
7225   * @since 1.21
7226   */
7227  $wgContentHandlerUseDB = true;
7228  
7229  /**
7230   * Determines which types of text are parsed as wikitext. This does not imply that these kinds
7231   * of texts are also rendered as wikitext, it only means that links, magic words, etc will have
7232   * the effect on the database they would have on a wikitext page.
7233   *
7234   * @todo On the long run, it would be nice to put categories etc into a separate structure,
7235   * or at least parse only the contents of comments in the scripts.
7236   *
7237   * @since 1.21
7238   */
7239  $wgTextModelsToParse = array(
7240      CONTENT_MODEL_WIKITEXT, // Just for completeness, wikitext will always be parsed.
7241      CONTENT_MODEL_JAVASCRIPT, // Make categories etc work, people put them into comments.
7242      CONTENT_MODEL_CSS, // Make categories etc work, people put them into comments.
7243  );
7244  
7245  /**
7246   * Whether the user must enter their password to change their e-mail address
7247   *
7248   * @since 1.20
7249   */
7250  $wgRequirePasswordforEmailChange = true;
7251  
7252  /**
7253   * Register handlers for specific types of sites.
7254   *
7255   * @since 1.20
7256   */
7257  $wgSiteTypes = array(
7258      'mediawiki' => 'MediaWikiSite',
7259  );
7260  
7261  /**
7262   * Whether the page_props table has a pp_sortkey column. Set to false in case
7263   * the respective database schema change was not applied.
7264   * @since 1.23
7265   */
7266  $wgPagePropsHaveSortkey = true;
7267  
7268  /**
7269   * Port where you have HTTPS running
7270   * Supports HTTPS on non-standard ports
7271   * @see bug 65184
7272   * @since 1.24
7273   */
7274  $wgHttpsPort = 443;
7275  
7276  /**
7277   * Secret and algorithm for hmac-based key derivation function (fast,
7278   * cryptographically secure random numbers).
7279   * This should be set in LocalSettings.php, otherwise wgSecretKey will
7280   * be used.
7281   * @since 1.24
7282   */
7283  $wgHKDFSecret = false;
7284  $wgHKDFAlgorithm = 'sha256';
7285  
7286  /**
7287   * Enable page language feature
7288   * Allows setting page language in database
7289   * @var bool
7290   * @since 1.24
7291   */
7292  $wgPageLanguageUseDB = false;
7293  
7294  /**
7295   * Enable use of the *_namespace fields of the pagelinks, redirect, and templatelinks tables.
7296   * Set this only if the fields are fully populated. This may be removed in 1.25.
7297   * @var bool
7298   * @since 1.24
7299   */
7300  $wgUseLinkNamespaceDBFields = true;
7301  
7302  /**
7303   * For really cool vim folding this needs to be at the end:
7304   * vim: foldmarker=@{,@} foldmethod=marker
7305   * @}
7306   */


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1