diff options
Diffstat (limited to 'includes/DefaultSettings.php')
-rw-r--r-- | includes/DefaultSettings.php | 1432 |
1 files changed, 945 insertions, 487 deletions
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index ef1ef402..8216beb8 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1,6 +1,7 @@ <?php /** - * @file + * Default values for MediaWiki configuration settings. + * * * NEVER EDIT THIS FILE * @@ -15,25 +16,50 @@ * * Documentation is in the source and on: * http://www.mediawiki.org/wiki/Manual:Configuration_settings + * + * @warning Note: this (and other things) will break if the autoloader is not + * enabled. Please include includes/AutoLoader.php before including this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * @defgroup Globalsettings Global settings */ /** * @cond file_level_code - * This is not a valid entry point, perform no further processing unless MEDIAWIKI is defined + * This is not a valid entry point, perform no further processing unless + * MEDIAWIKI is defined */ if( !defined( 'MEDIAWIKI' ) ) { echo "This file is part of MediaWiki and is not a valid entry point\n"; die( 1 ); } -# Create a site configuration object. Not used for much in a default install. -# Note: this (and other things) will break if the autoloader is not enabled. -# Please include includes/AutoLoader.php before including this file. +/** + * wgConf hold the site configuration. + * Not used for much in a default install. + */ $wgConf = new SiteConfiguration; -/** @endcond */ /** MediaWiki version number */ -$wgVersion = '1.19.3'; +$wgVersion = '1.20.2'; /** Name of the site. It must be changed in LocalSettings.php */ $wgSitename = 'MediaWiki'; @@ -41,10 +67,10 @@ $wgSitename = 'MediaWiki'; /** * URL of the server. * - * Example: - * <code> + * @par Example: + * @code * $wgServer = 'http://example.com'; - * </code> + * @endcode * * This is usually detected correctly by MediaWiki. If MediaWiki detects the * wrong server, it will redirect incorrectly after you save a page. In that @@ -110,28 +136,6 @@ $wgUsePathInfo = */ $wgScriptExtension = '.php'; -/** - * The URL path to index.php. - * - * Will default to "{$wgScriptPath}/index{$wgScriptExtension}" in Setup.php - */ -$wgScript = false; - -/** - * The URL path to redirect.php. This is a script that is used by the Nostalgia - * skin. - * - * Will default to "{$wgScriptPath}/redirect{$wgScriptExtension}" in Setup.php - */ -$wgRedirectScript = false; - -/** - * The URL path to load.php. - * - * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}". - */ -$wgLoadScript = false; - /**@}*/ @@ -154,7 +158,30 @@ $wgLoadScript = false; */ /** - * The URL path of the skins directory. Will default to "{$wgScriptPath}/skins" in Setup.php + * The URL path to index.php. + * + * Defaults to "{$wgScriptPath}/index{$wgScriptExtension}". + */ +$wgScript = false; + +/** + * The URL path to redirect.php. This is a script that is used by the Nostalgia + * skin. + * + * Defaults to "{$wgScriptPath}/redirect{$wgScriptExtension}". + */ +$wgRedirectScript = false; + +/** + * The URL path to load.php. + * + * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}". + */ +$wgLoadScript = false; + +/** + * The URL path of the skins directory. + * Defaults to "{$wgScriptPath}/skins". */ $wgStylePath = false; $wgStyleSheetPath = &$wgStylePath; @@ -173,7 +200,8 @@ $wgLocalStylePath = false; $wgExtensionAssetsPath = false; /** - * Filesystem stylesheets directory. Will default to "{$IP}/skins" in Setup.php + * Filesystem stylesheets directory. + * Defaults to "{$IP}/skins". */ $wgStyleDirectory = false; @@ -181,29 +209,31 @@ $wgStyleDirectory = false; * The URL path for primary article page views. This path should contain $1, * which is replaced by the article title. * - * Will default to "{$wgScript}/$1" or "{$wgScript}?title=$1" in Setup.php, + * Defaults to "{$wgScript}/$1" or "{$wgScript}?title=$1", * depending on $wgUsePathInfo. */ $wgArticlePath = false; /** - * The URL path for the images directory. Will default to "{$wgScriptPath}/images" in Setup.php + * The URL path for the images directory. + * Defaults to "{$wgScriptPath}/images". */ $wgUploadPath = false; /** - * The maximum age of temporary (incomplete) uploaded files + * The filesystem path of the images directory. Defaults to "{$IP}/images". */ -$wgUploadStashMaxAge = 6 * 3600; // 6 hours +$wgUploadDirectory = false; /** - * The filesystem path of the images directory. Defaults to "{$IP}/images". + * Directory where the cached page will be saved. + * Defaults to "{$wgUploadDirectory}/cache". */ -$wgUploadDirectory = false; +$wgFileCacheDirectory = false; /** * The URL path of the wiki logo. The logo size should be 135x135 pixels. - * Will default to "{$wgStylePath}/common/images/wiki.png" in Setup.php + * Defaults to "{$wgStylePath}/common/images/wiki.png". */ $wgLogo = false; @@ -222,7 +252,16 @@ $wgAppleTouchIcon = false; * The local filesystem path to a temporary directory. This is not required to * be web accessible. * - * Will default to "{$wgUploadDirectory}/tmp" in Setup.php + * When this setting is set to false, its value will be set through a call + * to wfTempDir(). See that methods implementation for the actual detection + * logic. + * + * Developers should use the global function wfTempDir() instead of this + * variable. + * + * @see wfTempDir() + * @note Default changed to false in MediaWiki 1.20. + * */ $wgTmpDirectory = false; @@ -242,11 +281,16 @@ $wgUploadStashScalerBaseUrl = false; /** * To set 'pretty' URL paths for actions other than - * plain page views, add to this array. For instance: + * plain page views, add to this array. + * + * @par Example: + * Set pretty URL for the edit action: + * @code * 'edit' => "$wgScriptPath/edit/$1" + * @endcode * - * There must be an appropriate script or rewrite rule - * in place to handle these URLs. + * There must be an appropriate script or rewrite rule in place to handle these + * URLs. */ $wgActionPaths = array(); @@ -260,11 +304,16 @@ $wgActionPaths = array(); /** Uploads have to be specially set up to be secure */ $wgEnableUploads = false; +/** + * The maximum age of temporary (incomplete) uploaded files + */ +$wgUploadStashMaxAge = 6 * 3600; // 6 hours + /** Allows to move images and other media files */ $wgAllowImageMoving = true; /** - * These are additional characters that should be replaced with '-' in file names + * These are additional characters that should be replaced with '-' in filenames */ $wgIllegalFileChars = ":"; @@ -274,9 +323,10 @@ $wgIllegalFileChars = ":"; $wgFileStore = array(); /** - * What directory to place deleted uploads in + * What directory to place deleted uploads in. + * Defaults to "{$wgUploadDirectory}/deleted". */ -$wgDeletedDirectory = false; // Defaults to $wgUploadDirectory/deleted +$wgDeletedDirectory = false; /** * Set this to true if you use img_auth and want the user to see details on why access failed. @@ -308,11 +358,15 @@ $wgImgAuthPublicTest = true; * * For most core repos: * - zones Associative array of zone names that each map to an array with: - * container : backend container name the zone is in - * directory : root path within container for the zone - * Zones default to using <repo name>-<zone> as the - * container name and the container root as the zone directory. - * - url Base public URL + * container : backend container name the zone is in + * directory : root path within container for the zone + * url : base URL to the root of the zone + * handlerUrl : base script handled URL to the root of the zone + * (see FileRepo::getZoneHandlerUrl() function) + * Zones default to using "<repo name>-<zone name>" as the container name + * and default to using the container root as the zone's root directory. + * Nesting of zone locations within other zones should be avoided. + * - url Public zone URL. The 'zones' settings take precedence. * - hashLevels The number of directory levels for hash-based division of files * - thumbScriptUrl The URL for thumb.php (optional, not recommended) * - transformVia404 Whether to skip media file transformation on parse and rely on a 404 @@ -329,9 +383,11 @@ $wgImgAuthPublicTest = true; * is 0644. * - directory The local filesystem directory where public files are stored. Not used for * some remote repos. - * - thumbDir The base thumbnail directory. Defaults to <directory>/thumb. - * - thumbUrl The base thumbnail URL. Defaults to <url>/thumb. - * + * - thumbDir The base thumbnail directory. Defaults to "<directory>/thumb". + * - thumbUrl The base thumbnail URL. Defaults to "<url>/thumb". + * - isPrivate Set this if measures should always be taken to keep the files private. + * One should not trust this to assure that the files are not web readable; + * the server configuration should be done manually depending on the backend. * * These settings describe a foreign MediaWiki installation. They are optional, and will be ignored * for local repositories: @@ -343,7 +399,9 @@ $wgImgAuthPublicTest = true; * * - articleUrl Equivalent to $wgArticlePath, e.g. http://en.wikipedia.org/wiki/$1 * - fetchDescription Fetch the text of the remote file description page. Equivalent to - * $wgFetchCommonsDescriptions. + * $wgFetchCommonsDescriptions. + * - abbrvThreshold File names over this size will use the short form of thumbnail names. + * Short thumbnail names only have the width, parameters, and the extension. * * ForeignDBRepo: * - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags @@ -380,10 +438,11 @@ $wgUseInstantCommons = false; * File backend structure configuration. * This is an array of file backend configuration arrays. * Each backend configuration has the following parameters: - * 'name' : A unique name for the backend - * 'class' : The file backend class to use - * 'wikiId' : A unique string that identifies the wiki (container prefix) - * 'lockManager' : The name of a lock manager (see $wgLockManagers) + * - 'name' : A unique name for the backend + * - 'class' : The file backend class to use + * - 'wikiId' : A unique string that identifies the wiki (container prefix) + * - 'lockManager' : The name of a lock manager (see $wgLockManagers) + * * Additional parameters are specific to the class used. */ $wgFileBackends = array(); @@ -391,8 +450,8 @@ $wgFileBackends = array(); /** * Array of configuration arrays for each lock manager. * Each backend configuration has the following parameters: - * 'name' : A unique name for the lock manger - * 'class' : The lock manger class to use + * - 'name' : A unique name for the lock manager + * - 'class' : The lock manger class to use * Additional parameters are specific to the class used. */ $wgLockManagers = array(); @@ -401,12 +460,13 @@ $wgLockManagers = array(); * Show EXIF data, on by default if available. * Requires PHP's EXIF extension: http://www.php.net/manual/en/ref.exif.php * - * NOTE FOR WINDOWS USERS: - * To enable EXIF functions, add the following lines to the - * "Windows extensions" section of php.ini: - * + * @note FOR WINDOWS USERS: + * To enable EXIF functions, add the following lines to the "Windows + * extensions" section of php.ini: + * @code{.ini} * extension=extensions/php_mbstring.dll * extension=extensions/php_exif.dll + * @endcode */ $wgShowEXIF = function_exists( 'exif_read_data' ); @@ -431,23 +491,32 @@ $wgUpdateCompatibleMetadata = false; * $wgForeignFileRepos variable. */ $wgUseSharedUploads = false; + /** Full path on the web server where shared uploads can be found */ $wgSharedUploadPath = "http://commons.wikimedia.org/shared/images"; + /** Fetch commons image description pages and display them on the local wiki? */ $wgFetchCommonsDescriptions = false; + /** Path on the file system where shared uploads can be found. */ $wgSharedUploadDirectory = "/var/www/wiki3/images"; + /** DB name with metadata about shared directory. Set this to false if the uploads do not come from a wiki. */ $wgSharedUploadDBname = false; + /** Optional table prefix used in database. */ $wgSharedUploadDBprefix = ''; + /** Cache shared metadata in memcached. Don't do this if the commons wiki is in a different memcached domain */ $wgCacheSharedUploads = true; + /** -* Allow for upload to be copied from an URL. Requires Special:Upload?source=web -* The timeout for copy uploads is set by $wgHTTPTimeout. -*/ + * Allow for upload to be copied from an URL. + * The timeout for copy uploads is set by $wgHTTPTimeout. + * You have to assign the user right 'upload_by_url' to a user group, to use this. + */ $wgAllowCopyUploads = false; + /** * Allow asynchronous copy uploads. * This feature is experimental and broken as of r81612. @@ -455,16 +524,31 @@ $wgAllowCopyUploads = false; $wgAllowAsyncCopyUploads = false; /** + * A list of domains copy uploads can come from + * + * @since 1.20 + */ +$wgCopyUploadsDomains = array(); + +/** + * Proxy to use for copy upload requests. + * @since 1.20 + */ +$wgCopyUploadProxy = false; + +/** * Max size for uploads, in bytes. If not set to an array, applies to all * uploads. If set to an array, per upload type maximums can be set, using the * file and url keys. If the * key is set this value will be used as maximum * for non-specified types. * - * For example: + * @par Example: + * @code * $wgMaxUploadSize = array( * '*' => 250 * 1024, * 'url' => 500 * 1024, * ); + * @endcode * Sets the maximum for all uploads to 250 kB except for upload-by-url, which * will have a maximum of 500 kB. * @@ -474,27 +558,37 @@ $wgMaxUploadSize = 1024*1024*100; # 100MB /** * Point the upload navigation link to an external URL * Useful if you want to use a shared repository by default - * without disabling local uploads (use $wgEnableUploads = false for that) - * e.g. $wgUploadNavigationUrl = 'http://commons.wikimedia.org/wiki/Special:Upload'; + * without disabling local uploads (use $wgEnableUploads = false for that). + * + * @par Example: + * @code + * $wgUploadNavigationUrl = 'http://commons.wikimedia.org/wiki/Special:Upload'; + * @endcode */ $wgUploadNavigationUrl = false; /** * Point the upload link for missing files to an external URL, as with - * $wgUploadNavigationUrl. The URL will get (?|&)wpDestFile=<filename> + * $wgUploadNavigationUrl. The URL will get "(?|&)wpDestFile=<filename>" * appended to it as appropriate. */ $wgUploadMissingFileUrl = false; /** - * Give a path here to use thumb.php for thumbnail generation on client request, instead of - * generating them on render and outputting a static URL. This is necessary if some of your - * apache servers don't have read/write access to the thumbnail path. + * Give a path here to use thumb.php for thumbnail generation on client + * request, instead of generating them on render and outputting a static URL. + * This is necessary if some of your apache servers don't have read/write + * access to the thumbnail path. * - * Example: + * @par Example: + * @code * $wgThumbnailScriptPath = "{$wgScriptPath}/thumb{$wgScriptExtension}"; + * @endcode */ $wgThumbnailScriptPath = false; +/** + * @see $wgThumbnailScriptPath + */ $wgSharedThumbnailScriptPath = false; /** @@ -507,7 +601,8 @@ $wgSharedThumbnailScriptPath = false; * maintenance/rebuildImages.php to register them in the database. This is no * longer recommended, use maintenance/importImages.php instead. * - * Note that this variable may be ignored if $wgLocalFileRepo is set. + * @note That this variable may be ignored if $wgLocalFileRepo is set. + * @todo Deprecate the setting and ultimately remove it from Core. */ $wgHashedUploadDirectory = true; @@ -532,13 +627,17 @@ $wgRepositoryBaseUrl = "http://commons.wikimedia.org/wiki/File:"; * This is the list of preferred extensions for uploading files. Uploading files * with extensions not in this list will trigger a warning. * - * WARNING: If you add any OpenOffice or Microsoft Office file formats here, + * @warning If you add any OpenOffice or Microsoft Office file formats here, * such as odt or doc, and untrusted users are allowed to upload files, then * your wiki will be vulnerable to cross-site request forgery (CSRF). */ $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' ); -/** Files with these extensions will never be allowed as uploads. */ +/** + * Files with these extensions will never be allowed as uploads. + * An array of file extensions to blacklist. You should append to this array + * if you want to blacklist additional files. + * */ $wgFileBlacklist = array( # HTML may contain cookie-stealing JavaScript and web bugs 'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht', @@ -576,7 +675,7 @@ $wgAllowJavaUploads = false; /** * This is a flag to determine whether or not to check file extensions on upload. * - * WARNING: setting this to false is insecure for public wikis. + * @warning Setting this to false is insecure for public wikis. */ $wgCheckFileExtensions = true; @@ -584,18 +683,21 @@ $wgCheckFileExtensions = true; * If this is turned off, users may override the warning for files not covered * by $wgFileExtensions. * - * WARNING: setting this to false is insecure for public wikis. + * @warning Setting this to false is insecure for public wikis. */ $wgStrictFileExtensions = true; /** * Setting this to true will disable the upload system's checks for HTML/JavaScript. - * THIS IS VERY DANGEROUS on a publicly editable site, so USE wgGroupPermissions - * TO RESTRICT UPLOADING to only those that you trust + * + * @warning THIS IS VERY DANGEROUS on a publicly editable site, so USE + * $wgGroupPermissions TO RESTRICT UPLOADING to only those that you trust */ $wgDisableUploadScriptChecks = false; -/** Warn if uploaded files are larger than this (in bytes), or false to disable*/ +/** + * Warn if uploaded files are larger than this (in bytes), or false to disable + */ $wgUploadSizeWarning = false; /** @@ -622,18 +724,18 @@ $wgTrustedMediaFormats = array( * Each entry in the array maps a MIME type to a class name */ $wgMediaHandlers = array( - 'image/jpeg' => 'JpegHandler', - 'image/png' => 'PNGHandler', - 'image/gif' => 'GIFHandler', - 'image/tiff' => 'TiffHandler', + 'image/jpeg' => 'JpegHandler', + 'image/png' => 'PNGHandler', + 'image/gif' => 'GIFHandler', + 'image/tiff' => 'TiffHandler', 'image/x-ms-bmp' => 'BmpHandler', - 'image/x-bmp' => 'BmpHandler', - 'image/x-xcf' => 'XCFHandler', - 'image/svg+xml' => 'SvgHandler', // official - 'image/svg' => 'SvgHandler', // compat + 'image/x-bmp' => 'BmpHandler', + 'image/x-xcf' => 'XCFHandler', + 'image/svg+xml' => 'SvgHandler', // official + 'image/svg' => 'SvgHandler', // compat 'image/vnd.djvu' => 'DjVuHandler', // official - 'image/x.djvu' => 'DjVuHandler', // compat - 'image/x-djvu' => 'DjVuHandler', // compat + 'image/x.djvu' => 'DjVuHandler', // compat + 'image/x-djvu' => 'DjVuHandler', // compat ); /** @@ -667,17 +769,18 @@ $wgImageMagickTempDir = false; * %s will be replaced with the source path, %d with the destination * %w and %h will be replaced with the width and height. * - * Example for GraphicMagick: - * <code> + * @par Example for GraphicMagick: + * @code * $wgCustomConvertCommand = "gm convert %s -resize %wx%h %d" - * </code> + * @endcode * * Leave as false to skip this. */ $wgCustomConvertCommand = false; /** - * Some tests and extensions use exiv2 to manipulate the EXIF metadata in some image formats. + * Some tests and extensions use exiv2 to manipulate the EXIF metadata in some + * image formats. */ $wgExiv2Command = '/usr/bin/exiv2'; @@ -699,22 +802,31 @@ $wgSVGConverters = array( 'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output', 'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ), ); + /** Pick a converter defined in $wgSVGConverters */ $wgSVGConverter = 'ImageMagick'; + /** If not in the executable PATH, specify the SVG converter path. */ $wgSVGConverterPath = ''; + /** Don't scale a SVG larger than this */ $wgSVGMaxSize = 2048; + /** Don't read SVG metadata beyond this point. - * Default is 1024*256 bytes */ + * Default is 1024*256 bytes + */ $wgSVGMetadataCutoff = 262144; /** - * MediaWiki will reject HTMLesque tags in uploaded files due to idiotic browsers which can't - * perform basic stuff like MIME detection and which are vulnerable to further idiots uploading - * crap files as images. When this directive is on, <title> will be allowed in files with - * an "image/svg+xml" MIME type. You should leave this disabled if your web server is misconfigured - * and doesn't send appropriate MIME types for SVG images. + * Disallow <title> element in SVG files. + * + * MediaWiki will reject HTMLesque tags in uploaded files due to idiotic + * browsers which can not perform basic stuff like MIME detection and which are + * vulnerable to further idiots uploading crap files as images. + * + * When this directive is on, "<title>" will be allowed in files with an + * "image/svg+xml" MIME type. You should leave this disabled if your web server + * is misconfigured and doesn't send appropriate MIME types for SVG images. */ $wgAllowTitlesInSVG = false; @@ -744,13 +856,13 @@ $wgMaxAnimatedGifArea = 1.25e7; * For inline display, we need to convert to PNG or JPEG. * Note scaling should work with ImageMagick, but may not with GD scaling. * - * Example: - * <code> + * @par Example: + * @code * // PNG is lossless, but inefficient for photos * $wgTiffThumbnailType = array( 'png', 'image/png' ); * // JPEG is good for photos, but has no transparency support. Bad for diagrams. * $wgTiffThumbnailType = array( 'jpg', 'image/jpeg' ); - * </code> + * @endcode */ $wgTiffThumbnailType = false; @@ -763,7 +875,7 @@ $wgMaxAnimatedGifArea = 1.25e7; $wgThumbnailEpoch = '20030516000000'; /** - * If set, inline scaled images will still produce <img> tags ready for + * If set, inline scaled images will still produce "<img>" tags ready for * output instead of showing an error message. * * This may be useful if errors are transitory, especially if the site @@ -855,20 +967,6 @@ $wgAntivirusSetup = array( 'messagepattern' => '/.*?:(.*)/sim', ), - - #setup for f-prot - 'f-prot' => array ( - 'command' => "f-prot ", - - 'codemap' => array ( - "0" => AV_NO_VIRUS, # no virus - "3" => AV_VIRUS_FOUND, # virus found - "6" => AV_VIRUS_FOUND, # virus found - "*" => AV_SCAN_FAILED, # else scan failed - ), - - 'messagepattern' => '/.*?Infection:(.*)$/m', - ), ); @@ -898,10 +996,11 @@ $wgLoadFileinfoExtension = false; * the mime type to standard output. * The name of the file to process will be appended to the command given here. * If not set or NULL, mime_content_type will be used if available. - * Example: - * <code> + * + * @par Example: + * @code * #$wgMimeDetectorCommand = "file -bi"; # use external mime detector (Linux) - * </code> + * @endcode */ $wgMimeDetectorCommand = null; @@ -937,8 +1036,7 @@ $wgImageLimits = array( array( 640, 480 ), array( 800, 600 ), array( 1024, 768 ), - array( 1280, 1024 ), - array( 10000, 10000 ) + array( 1280, 1024 ) ); /** @@ -956,7 +1054,7 @@ $wgThumbLimits = array( ); /** - * Default parameters for the <gallery> tag + * Default parameters for the "<gallery>" tag */ $wgGalleryOptions = array ( 'imagesPerRow' => 0, // Default number of images per-row in the gallery. 0 -> Adapt to screensize @@ -979,7 +1077,10 @@ $wgThumbUpright = 0.75; $wgDirectoryMode = 0777; /** - * DJVU settings + * @name DJVU settings + * @{ + */ +/** * Path of the djvudump executable * Enable this and $wgDjvuRenderer to enable djvu rendering */ @@ -1004,15 +1105,18 @@ $wgDjvuTxt = null; * Path of the djvutoxml executable * This works like djvudump except much, much slower as of version 3.5. * - * For now I recommend you use djvudump instead. The djvuxml output is + * For now we recommend you use djvudump instead. The djvuxml output is * probably more stable, so we'll switch back to it as soon as they fix * the efficiency problem. * http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583 + * + * @par Example: + * @code + * $wgDjvuToXML = 'djvutoxml'; + * @endcode */ -# $wgDjvuToXML = 'djvutoxml'; $wgDjvuToXML = null; - /** * Shell command for the DJVU post processor * Default: pnmtopng, since ddjvu generates ppm output @@ -1023,6 +1127,7 @@ $wgDjvuPostProcessor = 'pnmtojpeg'; * File extension for the DJVU post processor output */ $wgDjvuOutputExtension = 'jpg'; +/** @} */ # end of DJvu } /** @} */ # end of file uploads } @@ -1099,17 +1204,21 @@ $wgNewPasswordExpiry = 3600 * 24 * 7; $wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60; /** - * SMTP Mode + * SMTP Mode. + * * For using a direct (authenticated) SMTP server connection. * Default to false or fill an array : - * <code> - * "host" => 'SMTP domain', - * "IDHost" => 'domain for MessageID', - * "port" => "25", - * "auth" => true/false, - * "username" => user, - * "password" => password - * </code> + * + * @code + * $wgSMTP = array( + * 'host' => 'SMTP domain', + * 'IDHost' => 'domain for MessageID', + * 'port' => '25', + * 'auth' => [true|false], + * 'username' => [SMTP username], + * 'password' => [SMTP password], + * ); + * @endcode */ $wgSMTP = false; @@ -1131,9 +1240,9 @@ $wgEnotifFromEditor = false; # It call this to be a "user-preferences-option (UPO)" /** - * Require email authentication before sending mail to an email addres. This is - * highly recommended. It prevents MediaWiki from being used as an open spam - * relay. + * Require email authentication before sending mail to an email address. + * This is highly recommended. It prevents MediaWiki from being used as an open + * spam relay. */ $wgEmailAuthentication = true; @@ -1211,6 +1320,10 @@ $wgDBuser = 'wikiuser'; $wgDBpassword = ''; /** Database type */ $wgDBtype = 'mysql'; +/** Whether to use SSL in DB connection. */ +$wgDBssl = false; +/** Whether to use compression in DB connection. */ +$wgDBcompress = false; /** Separate username for maintenance tasks. Leave as null to use the default. */ $wgDBadminuser = null; @@ -1295,6 +1408,9 @@ $wgSharedTables = array( 'user', 'user_properties' ); * - DBO_TRX -- wrap entire request in a transaction * - DBO_IGNORE -- ignore errors (not useful in LocalSettings.php) * - DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php) + * - DBO_PERSISTENT -- enables persistent database connections + * - DBO_SSL -- uses SSL/TLS encryption in database connections, if available + * - DBO_COMPRESS -- uses internal compression in database connections, if available * * - max lag: (optional) Maximum replication lag before a slave will taken out of rotation * - max threads: (optional) Maximum number of running threads @@ -1311,9 +1427,9 @@ $wgSharedTables = array( 'user', 'user_properties' ); * accidental misconfiguration or MediaWiki bugs, set read_only=1 on all your * slaves in my.cnf. You can set read_only mode at runtime using: * - * <code> + * @code * SET @@read_only=1; - * </code> + * @endcode * * Since the effect of writing to a slave is so damaging and difficult to clean * up, we at Wikimedia set read_only=1 in my.cnf on all our DB servers, even @@ -1339,23 +1455,41 @@ $wgMasterWaitTimeout = 10; /** File to log database errors to */ $wgDBerrorLog = false; +/** + * Timezone to use in the error log. + * Defaults to the wiki timezone ($wgLocaltimezone). + * + * A list of useable timezones can found at: + * http://php.net/manual/en/timezones.php + * + * @par Examples: + * @code + * $wgLocaltimezone = 'UTC'; + * $wgLocaltimezone = 'GMT'; + * $wgLocaltimezone = 'PST8PDT'; + * $wgLocaltimezone = 'Europe/Sweden'; + * $wgLocaltimezone = 'CET'; + * @endcode + * + * @since 1.20 + */ +$wgDBerrorLogTZ = false; + /** When to give an error message */ $wgDBClusterTimeout = 10; /** - * Scale load balancer polling time so that under overload conditions, the database server - * receives a SHOW STATUS query at an average interval of this many microseconds + * Scale load balancer polling time so that under overload conditions, the + * database server receives a SHOW STATUS query at an average interval of this + * many microseconds */ $wgDBAvgStatusPoll = 2000; -/** Set to true if using InnoDB tables */ -$wgDBtransactions = false; - /** * Set to true to engage MySQL 4.1/5.0 charset-related features; * for now will just cause sending of 'SET NAMES=utf8' on connect. * - * WARNING: THIS IS EXPERIMENTAL! + * @warning THIS IS EXPERIMENTAL! * * May break if you're not using the table defs from mysql5/tables.sql. * May break if you're upgrading an existing wiki if set differently. @@ -1408,19 +1542,30 @@ $wgCompressRevisions = false; /** * External stores allow including content - * from non database sources following URL links + * from non database sources following URL links. * * Short names of ExternalStore classes may be specified in an array here: + * @code * $wgExternalStores = array("http","file","custom")... + * @endcode * * CAUTION: Access to database might lead to code execution */ $wgExternalStores = false; /** - * An array of external mysql servers, e.g. - * $wgExternalServers = array( 'cluster1' => array( 'srv28', 'srv29', 'srv30' ) ); - * Used by LBFactory_Simple, may be ignored if $wgLBFactoryConf is set to another class. + * An array of external MySQL servers. + * + * @par Example: + * Create a cluster named 'cluster1' containing three servers: + * @code + * $wgExternalServers = array( + * 'cluster1' => array( 'srv28', 'srv29', 'srv30' ) + * ); + * @endcode + * + * Used by LBFactory_Simple, may be ignored if $wgLBFactoryConf is set to + * another class. */ $wgExternalServers = array(); @@ -1429,9 +1574,12 @@ $wgExternalServers = array(); * Part of a URL, e.g. DB://cluster1 * * Can be an array instead of a single string, to enable data distribution. Keys - * must be consecutive integers, starting at zero. Example: + * must be consecutive integers, starting at zero. * + * @par Example: + * @code * $wgDefaultExternalStore = array( 'DB://cluster1', 'DB://cluster2' ); + * @endcode * * @var array */ @@ -1471,17 +1619,10 @@ $wgUseDumbLinkUpdate = false; /** * Anti-lock flags - bitfield - * - ALF_PRELOAD_LINKS: - * Preload links during link update for save - * - ALF_PRELOAD_EXISTENCE: - * Preload cur_id during replaceLinkHolders * - ALF_NO_LINK_LOCK: * Don't use locking reads when updating the link table. This is * necessary for wikis with a high edit rate for performance * reasons, but may cause link table inconsistency - * - ALF_NO_BLOCK_LOCK: - * As for ALF_LINK_LOCK, this flag is a necessity for high-traffic - * wikis. */ $wgAntiLockFlags = 0; @@ -1552,11 +1693,29 @@ $wgMessageCacheType = CACHE_ANYTHING; $wgParserCacheType = CACHE_ANYTHING; /** + * The cache type for storing session data. Used if $wgSessionsInObjectCache is true. + * + * For available types see $wgMainCacheType. + */ +$wgSessionCacheType = CACHE_ANYTHING; + +/** + * The cache type for storing language conversion tables, + * which are used when parsing certain text and interface messages. + * + * For available types see $wgMainCacheType. + * + * @since 1.20 + */ +$wgLanguageConverterCacheType = CACHE_ANYTHING; + +/** * Advanced object cache configuration. * * Use this to define the class names and constructor parameters which are used * for the various cache types. Custom cache types may be defined here and - * referenced from $wgMainCacheType, $wgMessageCacheType or $wgParserCacheType. + * referenced from $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, + * or $wgLanguageConverterCacheType. * * The format is an associative array where the key is a cache identifier, and * the value is an associative array of parameters. The "class" parameter is the @@ -1580,28 +1739,44 @@ $wgObjectCaches = array( 'xcache' => array( 'class' => 'XCacheBagOStuff' ), 'wincache' => array( 'class' => 'WinCacheBagOStuff' ), 'memcached-php' => array( 'class' => 'MemcachedPhpBagOStuff' ), + 'memcached-pecl' => array( 'class' => 'MemcachedPeclBagOStuff' ), 'hash' => array( 'class' => 'HashBagOStuff' ), ); /** - * The expiry time for the parser cache, in seconds. The default is 86.4k - * seconds, otherwise known as a day. + * The expiry time for the parser cache, in seconds. + * The default is 86400 (one day). */ $wgParserCacheExpireTime = 86400; /** - * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php> to use as CACHE_DBA backend + * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php> + * to use as CACHE_DBA backend. */ $wgDBAhandler = 'db3'; /** - * Store sessions in MemCached. This can be useful to improve performance, or to - * avoid the locking behaviour of PHP's default session handler, which tends to - * prevent multiple requests for the same user from acting concurrently. + * Deprecated alias for $wgSessionsInObjectCache. + * + * @deprecated Use $wgSessionsInObjectCache */ $wgSessionsInMemcached = false; /** + * Store sessions in an object cache, configured by $wgSessionCacheType. This + * can be useful to improve performance, or to avoid the locking behaviour of + * PHP's default session handler, which tends to prevent multiple requests for + * the same user from acting concurrently. + */ +$wgSessionsInObjectCache = false; + +/** + * The expiry time to use for session storage when $wgSessionsInObjectCache is + * enabled, in seconds. + */ +$wgObjectCacheSessionExpiry = 3600; + +/** * This is used for setting php's session.save_handler. In practice, you will * almost never need to change this ever. Other options might be 'user' or * 'session_mysql.' Setting to null skips setting this entirely (which might be @@ -1624,7 +1799,7 @@ $wgMemCachedPersistent = false; /** * Read/write timeout for MemCached server communication, in microseconds. */ -$wgMemCachedTimeout = 100000; +$wgMemCachedTimeout = 500000; /** * Set this to true to make a local copy of the message cache, for use in @@ -1633,9 +1808,9 @@ $wgMemCachedTimeout = 100000; $wgUseLocalMessageCache = false; /** - * Defines format of local cache - * true - Serialized object - * false - PHP source file (Warning - security risk) + * Defines format of local cache. + * - true: Serialized object + * - false: PHP source file (Warning - security risk) */ $wgLocalMessageCacheSerialized = true; @@ -1648,23 +1823,23 @@ $wgAdaptiveMessageCache = false; /** * Localisation cache configuration. Associative array with keys: - * class: The class to use. May be overridden by extensions. + * class: The class to use. May be overridden by extensions. * - * store: The location to store cache data. May be 'files', 'db' or - * 'detect'. If set to "files", data will be in CDB files. If set - * to "db", data will be stored to the database. If set to - * "detect", files will be used if $wgCacheDirectory is set, - * otherwise the database will be used. + * store: The location to store cache data. May be 'files', 'db' or + * 'detect'. If set to "files", data will be in CDB files. If set + * to "db", data will be stored to the database. If set to + * "detect", files will be used if $wgCacheDirectory is set, + * otherwise the database will be used. * - * storeClass: The class name for the underlying storage. If set to a class - * name, it overrides the "store" setting. + * storeClass: The class name for the underlying storage. If set to a class + * name, it overrides the "store" setting. * - * storeDirectory: If the store class puts its data in files, this is the - * directory it will use. If this is false, $wgCacheDirectory - * will be used. + * storeDirectory: If the store class puts its data in files, this is the + * directory it will use. If this is false, $wgCacheDirectory + * will be used. * - * manualRecache: Set this to true to disable cache updates on web requests. - * Use maintenance/rebuildLocalisationCache.php instead. + * manualRecache: Set this to true to disable cache updates on web requests. + * Use maintenance/rebuildLocalisationCache.php instead. */ $wgLocalisationCacheConf = array( 'class' => 'LocalisationCache', @@ -1679,14 +1854,17 @@ $wgCachePages = true; /** * Set this to current time to invalidate all prior cached pages. Affects both - * client- and server-side caching. + * client-side and server-side caching. * You can get the current date on your server by using the command: + * @verbatim * date +%Y%m%d%H%M%S + * @endverbatim */ $wgCacheEpoch = '20030516000000'; /** * Bump this number when changing the global style sheets and JavaScript. + * * It should be appended in the query string of static CSS and JS includes, * to ensure that client-side caches do not keep obsolete copies of global * styles. @@ -1703,12 +1881,6 @@ $wgStyleVersion = '303'; $wgUseFileCache = false; /** - * Directory where the cached page will be saved. - * Will default to "{$wgUploadDirectory}/cache" in Setup.php - */ -$wgFileCacheDirectory = false; - -/** * Depth of the subdirectory hierarchy to be created under * $wgFileCacheDirectory. The subdirectories will be named based on * the MD5 hash of the title. A value of 0 means all cache files will @@ -1752,8 +1924,6 @@ $wgSidebarCacheExpiry = 86400; /** * When using the file cache, we can store the cached HTML gzipped to save disk * space. Pages will then also be served compressed to clients that support it. - * THIS IS NOT COMPATIBLE with ob_gzhandler which is now enabled if supported in - * the default LocalSettings.php! If you enable this, remove that setting first. * * Requires zlib support enabled in PHP. */ @@ -1820,10 +1990,12 @@ $wgUseXVO = false; $wgVaryOnXFP = false; /** - * Internal server name as known to Squid, if different. Example: - * <code> + * Internal server name as known to Squid, if different. + * + * @par Example: + * @code * $wgInternalServer = 'http://yourinternal.tld:8000'; - * </code> + * @endcode */ $wgInternalServer = false; @@ -1860,22 +2032,61 @@ $wgSquidServersNoPurge = array(); $wgMaxSquidPurgeTitles = 400; /** + * Routing configuration for HTCP multicast purging. Add elements here to + * enable HTCP and determine which purges are sent where. If set to an empty + * array, HTCP is disabled. + * + * Each key in this array is a regular expression to match against the purged + * URL, or an empty string to match all URLs. The purged URL is matched against + * the regexes in the order specified, and the first rule whose regex matches + * is used. + * + * Example configuration to send purges for upload.wikimedia.org to one + * multicast group and all other purges to another: + * @code + * $wgHTCPMulticastRouting = array( + * '|^https?://upload\.wikimedia\.org|' => array( + * 'host' => '239.128.0.113', + * 'port' => 4827, + * ), + * '' => array( + * 'host' => '239.128.0.112', + * 'port' => 4827, + * ), + * ); + * @endcode + * + * @since 1.20 + * + * @see $wgHTCPMulticastTTL + */ +$wgHTCPMulticastRouting = array(); + +/** * HTCP multicast address. Set this to a multicast IP address to enable HTCP. * * Note that MediaWiki uses the old non-RFC compliant HTCP format, which was * present in the earliest Squid implementations of the protocol. + * + * This setting is DEPRECATED in favor of $wgHTCPMulticastRouting , and kept + * for backwards compatibility only. If $wgHTCPMulticastRouting is set, this + * setting is ignored. If $wgHTCPMulticastRouting is not set and this setting + * is, it is used to populate $wgHTCPMulticastRouting. + * + * @deprecated in favor of $wgHTCPMulticastRouting */ $wgHTCPMulticastAddress = false; /** * HTCP multicast port. + * @deprecated in favor of $wgHTCPMulticastRouting * @see $wgHTCPMulticastAddress */ $wgHTCPPort = 4827; /** * HTCP multicast TTL. - * @see $wgHTCPMulticastAddress + * @see $wgHTCPMulticastRouting */ $wgHTCPMulticastTTL = 1; @@ -1894,11 +2105,12 @@ $wgLanguageCode = 'en'; /** * Some languages need different word forms, usually for different cases. - * Used in Language::convertGrammar(). Example: + * Used in Language::convertGrammar(). * - * <code> + * @par Example: + * @code * $wgGrammarForms['en']['genitive']['car'] = 'car\'s'; - * </code> + * @endcode */ $wgGrammarForms = array(); @@ -1981,7 +2193,7 @@ $wgAllUnicodeFixes = false; * converting a wiki from MediaWiki 1.4 or earlier to UTF-8 without the * burdensome mass conversion of old text data. * - * NOTE! This DOES NOT touch any fields other than old_text.Titles, comments, + * @note This DOES NOT touch any fields other than old_text. Titles, comments, * user names, etc still must be converted en masse in the database before * continuing as a UTF-8 wiki. */ @@ -2090,28 +2302,27 @@ $wgCanonicalLanguageLinks = true; $wgDefaultLanguageVariant = false; /** - * Disabled variants array of language variant conversion. Example: - * <code> + * Disabled variants array of language variant conversion. + * + * @par Example: + * @code * $wgDisabledVariants[] = 'zh-mo'; * $wgDisabledVariants[] = 'zh-my'; - * </code> - * - * or: - * - * <code> - * $wgDisabledVariants = array('zh-mo', 'zh-my'); - * </code> + * @endcode */ $wgDisabledVariants = array(); /** * Like $wgArticlePath, but on multi-variant wikis, this provides a * path format that describes which parts of the URL contain the - * language variant. For Example: + * language variant. * - * $wgLanguageCode = 'sr'; - * $wgVariantArticlePath = '/$2/$1'; - * $wgArticlePath = '/wiki/$1'; + * @par Example: + * @code + * $wgLanguageCode = 'sr'; + * $wgVariantArticlePath = '/$2/$1'; + * $wgArticlePath = '/wiki/$1'; + * @endcode * * A link to /wiki/ would be redirected to /sr/Главна_страна * @@ -2128,19 +2339,23 @@ $wgVariantArticlePath = false; $wgLoginLanguageSelector = false; /** - * When translating messages with wfMsg(), it is not always clear what should - * be considered UI messages and what should be content messages. + * When translating messages with wfMessage(), it is not always clear what + * should be considered UI messages and what should be content messages. * * For example, for the English Wikipedia, there should be only one 'mainpage', * so when getting the link for 'mainpage', we should treat it as site content - * and call wfMsgForContent(), but for rendering the text of the link, we call - * wfMsg(). The code behaves this way by default. However, sites like the - * Wikimedia Commons do offer different versions of 'mainpage' and the like for - * different languages. This array provides a way to override the default - * behavior. For example, to allow language-specific main page and community - * portal, set - * - * $wgForceUIMsgAsContentMsg = array( 'mainpage', 'portal-url' ); + * and call ->inContentLanguage()->text(), but for rendering the text of the + * link, we call ->text(). The code behaves this way by default. However, + * sites like the Wikimedia Commons do offer different versions of 'mainpage' + * and the like for different languages. This array provides a way to override + * the default behavior. + * + * @par Example: + * To allow language-specific main page and community + * portal: + * @code + * $wgForceUIMsgAsContentMsg = array( 'mainpage', 'portal-url' ); + * @endcode */ $wgForceUIMsgAsContentMsg = array(); @@ -2155,13 +2370,17 @@ $wgForceUIMsgAsContentMsg = array(); * Timezones can be translated by editing MediaWiki messages of type * timezone-nameinlowercase like timezone-utc. * - * Examples: - * <code> + * A list of useable timezones can found at: + * http://php.net/manual/en/timezones.php + * + * @par Examples: + * @code + * $wgLocaltimezone = 'UTC'; * $wgLocaltimezone = 'GMT'; * $wgLocaltimezone = 'PST8PDT'; * $wgLocaltimezone = 'Europe/Sweden'; * $wgLocaltimezone = 'CET'; - * </code> + * @endcode */ $wgLocaltimezone = null; @@ -2182,7 +2401,7 @@ $wgLocalTZoffset = null; * language variant conversion is disabled in interface messages. Setting this * to true re-enables it. * - * This variable should be removed (implicitly false) in 1.20 or earlier. + * @todo This variable should be removed (implicitly false) in 1.20 or earlier. */ $wgBug34832TransitionalRollback = true; @@ -2255,11 +2474,6 @@ $wgAllowRdfaAttributes = false; $wgAllowMicrodataAttributes = false; /** - * Cleanup as much presentational html like valign -> css vertical-align as we can - */ -$wgCleanupPresentationalAttributes = true; - -/** * Should we try to make our HTML output well-formed XML? If set to false, * output will be a few bytes shorter, and the HTML will arguably be more * readable. If set to true, life will be much easier for the authors of @@ -2279,10 +2493,14 @@ $wgWellFormedXml = true; /** * Permit other namespaces in addition to the w3.org default. - * Use the prefix for the key and the namespace for the value. For - * example: + * + * Use the prefix for the key and the namespace for the value. + * + * @par Example: + * @code * $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg'; - * Normally we wouldn't have to define this in the root <html> + * @endCode + * Normally we wouldn't have to define this in the root "<html>" * element, but IE needs it there in some circumstances. * * This is ignored if $wgHtml5 is true, for the same reason as @@ -2293,7 +2511,7 @@ $wgXhtmlNamespaces = array(); /** * Show IP address, for non-logged in users. It's necessary to switch this off * for some forms of caching. - * Will disable file cache. + * @warning Will disable file cache. */ $wgShowIPinHeader = true; @@ -2464,15 +2682,16 @@ $wgExperimentalHtmlIds = false; * The value should be either a string or an array. If it is a string it will be output * directly as html, however some skins may choose to ignore it. An array is the preferred format * for the icon, the following keys are used: - * src: An absolute url to the image to use for the icon, this is recommended + * - src: An absolute url to the image to use for the icon, this is recommended * but not required, however some skins will ignore icons without an image - * url: The url to use in the <a> arround the text or icon, if not set an <a> will not be outputted - * alt: This is the text form of the icon, it will be displayed without an image in + * - url: The url to use in the a element arround the text or icon, if not set an a element will not be outputted + * - alt: This is the text form of the icon, it will be displayed without an image in * skins like Modern or if src is not set, and will otherwise be used as * the alt="" for the image. This key is required. - * width and height: If the icon specified by src is not of the standard size + * - width and height: If the icon specified by src is not of the standard size * you can specify the size of image to use with these keys. * Otherwise they will default to the standard 88x31. + * @todo Reformat documentation. */ $wgFooterIcons = array( "copyright" => array( @@ -2488,23 +2707,24 @@ $wgFooterIcons = array( ); /** - * Login / create account link behavior when it's possible for anonymous users to create an account - * true = use a combined login / create account link - * false = split login and create account into two separate links + * Login / create account link behavior when it's possible for anonymous users + * to create an account. + * - true = use a combined login / create account link + * - false = split login and create account into two separate links */ -$wgUseCombinedLoginLink = true; +$wgUseCombinedLoginLink = false; /** - * Search form behavior for Vector skin only - * true = use an icon search button - * false = use Go & Search buttons + * Search form look for Vector skin only. + * - true = use an icon search button + * - false = use Go & Search buttons */ $wgVectorUseSimpleSearch = false; /** - * Watch and unwatch as an icon rather than a link for Vector skin only - * true = use an icon watch/unwatch button - * false = use watch/unwatch text link + * Watch and unwatch as an icon rather than a link for Vector skin only. + * - true = use an icon watch/unwatch button + * - false = use watch/unwatch text link */ $wgVectorUseIconWatch = false; @@ -2534,6 +2754,16 @@ $wgBetterDirectionality = true; */ $wgSend404Code = true; + +/** + * The $wgShowRollbackEditCount variable is used to show how many edits will be + * rollback. The numeric value of the varible are the limit up to are counted. + * If the value is false or 0, the edits are not counted. + * + * @since 1.20 + */ +$wgShowRollbackEditCount = 10; + /** @} */ # End of output format settings } /*************************************************************************//** @@ -2542,17 +2772,21 @@ $wgSend404Code = true; */ /** - * Client-side resource modules. Extensions should add their module definitions - * here. + * Client-side resource modules. + * + * Extensions should add their resource loader module definitions + * to the $wgResourceModules variable. * - * Example: + * @par Example: + * @code * $wgResourceModules['ext.myExtension'] = array( * 'scripts' => 'myExtension.js', * 'styles' => 'myExtension.css', * 'dependencies' => array( 'jquery.cookie', 'jquery.tabIndex' ), - * 'localBasePath' => dirname( __FILE__ ), + * 'localBasePath' => __DIR__, * 'remoteExtPath' => 'MyExtension', * ); + * @endcode */ $wgResourceModules = array(); @@ -2561,22 +2795,26 @@ $wgResourceModules = array(); * built-in source that is not in this array, but defined by * ResourceLoader::__construct() so that it cannot be unset. * - * Example: + * @par Example: + * @code * $wgResourceLoaderSources['foo'] = array( * 'loadScript' => 'http://example.org/w/load.php', * 'apiScript' => 'http://example.org/w/api.php' * ); + * @endcode */ $wgResourceLoaderSources = array(); /** - * Default 'remoteBasePath' value for resource loader modules. + * Default 'remoteBasePath' value for instances of ResourceLoaderFileModule. * If not set, then $wgScriptPath will be used as a fallback. */ $wgResourceBasePath = null; /** - * Maximum time in seconds to cache resources served by the resource loader + * Maximum time in seconds to cache resources served by the resource loader. + * + * @todo Document array structure */ $wgResourceLoaderMaxage = array( 'versioned' => array( @@ -2592,8 +2830,9 @@ $wgResourceLoaderMaxage = array( ); /** - * The default debug mode (on/off) for of ResourceLoader requests. This will still - * be overridden when the debug URL parameter is used. + * The default debug mode (on/off) for of ResourceLoader requests. + * + * This will still be overridden when the debug URL parameter is used. */ $wgResourceLoaderDebug = false; @@ -2619,33 +2858,54 @@ $wgResourceLoaderMinifierMaxLineLength = 1000; /** * Whether to include the mediawiki.legacy JS library (old wikibits.js), and its - * dependencies + * dependencies. */ $wgIncludeLegacyJavaScript = true; /** - * Whether to preload the mediawiki.util module as blocking module in the top queue. - * Before MediaWiki 1.19, modules used to load slower/less asynchronous which allowed - * modules to lack dependencies on 'popular' modules that were likely loaded already. + * Whether to preload the mediawiki.util module as blocking module in the top + * queue. + * + * Before MediaWiki 1.19, modules used to load slower/less asynchronous which + * allowed modules to lack dependencies on 'popular' modules that were likely + * loaded already. + * * This setting is to aid scripts during migration by providing mediawiki.util * unconditionally (which was the most commonly missed dependency). - * It doesn't cover all missing dependencies obviously but should fix most of them. + * It doesn't cover all missing dependencies obviously but should fix most of + * them. + * * This should be removed at some point after site/user scripts have been fixed. - * Enable this if your wiki has a large amount of user/site scripts that are lacking - * dependencies. + * Enable this if your wiki has a large amount of user/site scripts that are + * lacking dependencies. + * @todo Deprecate */ $wgPreloadJavaScriptMwUtil = false; /** - * Whether or not to assing configuration variables to the global window object. - * If this is set to false, old code using deprecated variables like: - * " if ( window.wgRestrictionEdit ) ..." + * Whether or not to assign configuration variables to the global window object. + * + * If this is set to false, old code using deprecated variables will no longer + * work. + * + * @par Example of legacy code: + * @code{,js} + * if ( window.wgRestrictionEdit ) { ... } + * @endcode * or: - * " if ( wgIsArticle ) ..." - * will no longer work and needs to use mw.config instead. For example: - * " if ( mw.config.exists('wgRestrictionEdit') )" - * or - * " if ( mw.config.get('wgIsArticle') )". + * @code{,js} + * if ( wgIsArticle ) { ... } + * @endcode + * + * Instead, one needs to use mw.config. + * @par Example using mw.config global configuration: + * @code{,js} + * if ( mw.config.exists('wgRestrictionEdit') ) { ... } + * @endcode + * or: + * @code{,js} + * if ( mw.config.get('wgIsArticle') ) { ... } + * @endcode */ $wgLegacyJavaScriptGlobals = true; @@ -2663,8 +2923,8 @@ $wgLegacyJavaScriptGlobals = true; $wgResourceLoaderMaxQueryLength = -1; /** - * If set to true, JavaScript modules loaded from wiki pages will be parsed prior - * to minification to validate it. + * If set to true, JavaScript modules loaded from wiki pages will be parsed + * prior to minification to validate it. * * Parse errors will result in a JS exception being thrown during module load, * which avoids breaking other modules loaded in the same request. @@ -2682,7 +2942,7 @@ $wgResourceLoaderValidateJS = true; $wgResourceLoaderValidateStaticJS = false; /** - * If set to true, asynchronous loading of bottom-queue scripts in the <head> + * If set to true, asynchronous loading of bottom-queue scripts in the "<head>" * will be enabled. This is an experimental feature that's supposed to make * JavaScript load faster. */ @@ -2718,19 +2978,25 @@ $wgMetaNamespaceTalk = false; * names of existing namespaces. Extensions developers should use * $wgCanonicalNamespaceNames. * - * PLEASE NOTE: Once you delete a namespace, the pages in that namespace will + * @warning Once you delete a namespace, the pages in that namespace will * no longer be accessible. If you rename it, then you can access them through * the new namespace name. * * Custom namespaces should start at 100 to avoid conflicting with standard * namespaces, and should always follow the even/odd main/talk pattern. + * + * @par Example: + * @code + * $wgExtraNamespaces = array( + * 100 => "Hilfe", + * 101 => "Hilfe_Diskussion", + * 102 => "Aide", + * 103 => "Discussion_Aide" + * ); + * @endcode + * + * @todo Add a note about maintenance/namespaceDupes.php */ -# $wgExtraNamespaces = array( -# 100 => "Hilfe", -# 101 => "Hilfe_Diskussion", -# 102 => "Aide", -# 103 => "Discussion_Aide" -# ); $wgExtraNamespaces = array(); /** @@ -2742,18 +3008,22 @@ $wgExtraNamespaces = array(); $wgExtraGenderNamespaces = array(); /** - * Namespace aliases + * Namespace aliases. + * * These are alternate names for the primary localised namespace names, which * are defined by $wgExtraNamespaces and the language file. If a page is * requested with such a prefix, the request will be redirected to the primary * name. * * Set this to a map from namespace names to IDs. - * Example: + * + * @par Example: + * @code * $wgNamespaceAliases = array( * 'Wikipedian' => NS_USER, * 'Help' => 100, * ); + * @endcode */ $wgNamespaceAliases = array(); @@ -2768,8 +3038,8 @@ $wgNamespaceAliases = array(); * - + Enabled by default, but doesn't work with path to query rewrite rules, corrupted by apache * - ? Enabled by default, but doesn't work with path to PATH_INFO rewrites * - * All three of these punctuation problems can be avoided by using an alias, instead of a - * rewrite rule of either variety. + * All three of these punctuation problems can be avoided by using an alias, + * instead of a rewrite rule of either variety. * * The problem with % is that when using a path to query rewrite rule, URLs are * double-unescaped: once by Apache's path conversion code, and again by PHP. So @@ -2795,33 +3065,47 @@ $wgLocalInterwiki = false; */ $wgInterwikiExpiry = 10800; -/** Interwiki caching settings. - $wgInterwikiCache specifies path to constant database file - This cdb database is generated by dumpInterwiki from maintenance - and has such key formats: - dbname:key - a simple key (e.g. enwiki:meta) - _sitename:key - site-scope key (e.g. wiktionary:meta) - __global:key - global-scope key (e.g. __global:meta) - __sites:dbname - site mapping (e.g. __sites:enwiki) - Sites mapping just specifies site name, other keys provide - "local url" data layout. - $wgInterwikiScopes specify number of domains to check for messages: - 1 - Just wiki(db)-level - 2 - wiki and global levels - 3 - site levels - $wgInterwikiFallbackSite - if unable to resolve from cache +/** + * @name Interwiki caching settings. + * @{ + */ +/** + *$wgInterwikiCache specifies path to constant database file. + * + * This cdb database is generated by dumpInterwiki from maintenance and has + * such key formats: + * - dbname:key - a simple key (e.g. enwiki:meta) + * - _sitename:key - site-scope key (e.g. wiktionary:meta) + * - __global:key - global-scope key (e.g. __global:meta) + * - __sites:dbname - site mapping (e.g. __sites:enwiki) + * + * Sites mapping just specifies site name, other keys provide "local url" + * data layout. */ $wgInterwikiCache = false; +/** + * Specify number of domains to check for messages. + * - 1: Just wiki(db)-level + * - 2: wiki and global levels + * - 3: site levels + */ $wgInterwikiScopes = 3; +/** + * $wgInterwikiFallbackSite - if unable to resolve from cache + */ $wgInterwikiFallbackSite = 'wiki'; +/** @} */ # end of Interwiki caching settings. /** * If local interwikis are set up which allow redirects, * set this regexp to restrict URLs which will be displayed * as 'redirected from' links. * + * @par Example: * It might look something like this: + * @code * $wgRedirectSources = '!^https?://[a-z-]+\.wikipedia\.org/!'; + * @endcode * * Leave at false to avoid displaying any incoming redirect markers. * This does not affect intra-wiki redirects, which don't change @@ -2831,7 +3115,8 @@ $wgRedirectSources = false; /** * Set this to false to avoid forcing the first letter of links to capitals. - * WARNING: may break links! This makes links COMPLETELY case-sensitive. Links + * + * @warning may break links! This makes links COMPLETELY case-sensitive. Links * appearing with a capital at the beginning of a sentence will *not* go to the * same place as links in the middle of a sentence using a lowercase initial. */ @@ -2845,7 +3130,11 @@ $wgCapitalLinks = true; * associated content namespaces, the values for those are ignored in favor of the * subject namespace's setting. Setting for NS_MEDIA is taken automatically from * NS_FILE. - * EX: $wgCapitalLinkOverrides[ NS_FILE ] = false; + * + * @par Example: + * @code + * $wgCapitalLinkOverrides[ NS_FILE ] = false; + * @endcode */ $wgCapitalLinkOverrides = array(); @@ -2930,11 +3219,19 @@ $wgParserConf = array( $wgMaxTocLevel = 999; /** - * A complexity limit on template expansion + * A complexity limit on template expansion: the maximum number of nodes visited + * by PPFrame::expand() */ $wgMaxPPNodeCount = 1000000; /** + * A complexity limit on template expansion: the maximum number of nodes + * generated by Preprocessor::preprocessToObj() + */ +$wgMaxGeneratedPPNodeCount = 1000000; + + +/** * Maximum recursion depth for templates within templates. * The current parser adds two levels to the PHP call stack for each template, * and xdebug limits the call stack to 100 by default. So this should hopefully @@ -2978,11 +3275,11 @@ $wgAllowExternalImages = false; * You can use this to set up a trusted, simple repository of images. * You may also specify an array of strings to allow multiple sites * - * Examples: - * <code> + * @par Examples: + * @code * $wgAllowExternalImagesFrom = 'http://127.0.0.1/'; * $wgAllowExternalImagesFrom = array( 'http://127.0.0.1/', 'http://example.com' ); - * </code> + * @endcode */ $wgAllowExternalImagesFrom = ''; @@ -2997,7 +3294,7 @@ $wgAllowExternalImagesFrom = ''; $wgEnableImageWhitelist = true; /** - * A different approach to the above: simply allow the <img> tag to be used. + * A different approach to the above: simply allow the "<img>" tag to be used. * This allows you to specify alt text and other attributes, copy-paste HTML to * your wiki more easily, etc. However, allowing external images in any manner * will allow anyone with editing rights to snoop on your visitors' IP @@ -3039,7 +3336,7 @@ $wgTidyInternal = extension_loaded( 'tidy' ); */ $wgDebugTidy = false; -/** Allow raw, unchecked HTML in <html>...</html> sections. +/** Allow raw, unchecked HTML in "<html>...</html>" sections. * THIS IS VERY DANGEROUS on a publicly editable site, so USE wgGroupPermissions * TO RESTRICT EDITING to only those that you trust */ @@ -3245,7 +3542,6 @@ $wgDefaultUserOptions = array( 'gender' => 'unknown', 'hideminor' => 0, 'hidepatrolled' => 0, - 'highlightbroken' => 1, 'imagesize' => 2, 'justify' => 0, 'math' => 1, @@ -3308,7 +3604,7 @@ $wgInvalidUsernameCharacters = '@'; /** * Character used as a delimiter when testing for interwiki userrights * (In Special:UserRights, it is possible to modify users on different - * databases if the delimiter is used, e.g. Someuser@enwiki). + * databases if the delimiter is used, e.g. "Someuser@enwiki"). * * It is recommended that you have this delimiter in * $wgInvalidUsernameCharacters above, or you will not be able to @@ -3405,12 +3701,19 @@ $wgSysopEmailBans = true; * Limits on the possible sizes of range blocks. * * CIDR notation is hard to understand, it's easy to mistakenly assume that a - * /1 is a small range and a /31 is a large range. Setting this to half the - * number of bits avoids such errors. + * /1 is a small range and a /31 is a large range. For IPv4, setting a limit of + * half the number of bits avoids such errors, and allows entire ISPs to be + * blocked using a small number of range blocks. + * + * For IPv6, RFC 3177 recommends that a /48 be allocated to every residential + * customer, so range blocks larger than /64 (half the number of bits) will + * plainly be required. RFC 4692 implies that a very large ISP may be + * allocated a /19 if a generous HD-Ratio of 0.8 is used, so we will use that + * as our limit. As of 2012, blocking the whole world would require a /4 range. */ $wgBlockCIDRLimit = array( 'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed - 'IPv6' => 64, # 2^64 = ~1.8x10^19 addresses + 'IPv6' => 19, ); /** @@ -3423,18 +3726,19 @@ $wgBlockCIDRLimit = array( $wgBlockDisablesLogin = false; /** - * Pages anonymous user may see as an array, e.g. + * Pages anonymous user may see, set as an array of pages titles. * - * <code> + * @par Example: + * @code * $wgWhitelistRead = array ( "Main Page", "Wikipedia:Help"); - * </code> + * @endcode * * Special:Userlogin and Special:ChangePassword are always whitelisted. * - * NOTE: This will only work if $wgGroupPermissions['*']['read'] is false -- + * @note This will only work if $wgGroupPermissions['*']['read'] is false -- * see below. Otherwise, ALL pages are accessible, regardless of this setting. * - * Also note that this will only protect _pages in the wiki_. Uploaded files + * @note Also that this will only protect _pages in the wiki_. Uploaded files * will remain readable. You can use img_auth.php to protect uploaded files, * see http://www.mediawiki.org/wiki/Manual:Image_Authorization */ @@ -3448,6 +3752,7 @@ $wgEmailConfirmToEdit = false; /** * Permission keys given to users in each group. + * * This is an array where the keys are all groups and each value is an * array of the format (right => boolean). * @@ -3538,7 +3843,6 @@ $wgGroupPermissions['sysop']['reupload'] = true; $wgGroupPermissions['sysop']['reupload-shared'] = true; $wgGroupPermissions['sysop']['unwatchedpages'] = true; $wgGroupPermissions['sysop']['autoconfirmed'] = true; -$wgGroupPermissions['sysop']['upload_by_url'] = true; $wgGroupPermissions['sysop']['ipblock-exempt'] = true; $wgGroupPermissions['sysop']['blockemail'] = true; $wgGroupPermissions['sysop']['markbotedits'] = true; @@ -3548,6 +3852,7 @@ $wgGroupPermissions['sysop']['noratelimit'] = true; $wgGroupPermissions['sysop']['movefile'] = true; $wgGroupPermissions['sysop']['unblockself'] = true; $wgGroupPermissions['sysop']['suppressredirect'] = true; +#$wgGroupPermissions['sysop']['upload_by_url'] = true; #$wgGroupPermissions['sysop']['mergehistory'] = true; // Permission to change users' group assignments @@ -3558,6 +3863,7 @@ $wgGroupPermissions['bureaucrat']['noratelimit'] = true; // Permission to export pages including linked pages regardless of $wgExportMaxLinkDepth #$wgGroupPermissions['bureaucrat']['override-export-depth'] = true; +#$wgGroupPermissions['sysop']['deletelogentry'] = true; #$wgGroupPermissions['sysop']['deleterevision'] = true; // To hide usernames from users and Sysops #$wgGroupPermissions['suppress']['hideuser'] = true; @@ -3578,6 +3884,7 @@ $wgGroupPermissions['bureaucrat']['noratelimit'] = true; /** * Permission keys revoked from users in each group. + * * This acts the same way as wgGroupPermissions above, except that * if the user is in a group here, the permission will be removed from them. * @@ -3595,16 +3902,20 @@ $wgImplicitGroups = array( '*', 'user', 'autoconfirmed' ); * A map of group names that the user is in, to group names that those users * are allowed to add or revoke. * - * Setting the list of groups to add or revoke to true is equivalent to "any group". - * - * For example, to allow sysops to add themselves to the "bot" group: + * Setting the list of groups to add or revoke to true is equivalent to "any + * group". * + * @par Example: + * To allow sysops to add themselves to the "bot" group: + * @code * $wgGroupsAddToSelf = array( 'sysop' => array( 'bot' ) ); + * @endcode * + * @par Example: * Implicit groups may be used for the source group, for instance: - * + * @code * $wgGroupsRemoveFromSelf = array( '*' => true ); - * + * @endcode * This allows users in the '*' group (i.e. any user) to remove themselves from * any group that they happen to be in. * @@ -3640,13 +3951,16 @@ $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' ); * namespace. If you list more than one permission, a user must * have all of them to edit pages in that namespace. * - * Note: NS_MEDIAWIKI is implicitly restricted to editinterface. + * @note NS_MEDIAWIKI is implicitly restricted to 'editinterface'. */ $wgNamespaceProtection = array(); /** * Pages in namespaces in this array can not be used as templates. - * Elements must be numeric namespace ids. + * + * Elements MUST be numeric namespace ids, you can safely use the MediaWiki + * namespaces constants (NS_USER, NS_MAIN...). + * * Among other things, this may be useful to enforce read-restrictions * which may otherwise be bypassed by using the template machanism. */ @@ -3662,11 +3976,15 @@ $wgNonincludableNamespaces = array(); * * When left at 0, all registered accounts will pass. * - * Example: - * <code> + * @par Example: + * Set automatic confirmation to 10 minutes (which is 600 seconds): + * @code * $wgAutoConfirmAge = 600; // ten minutes + * @endcode + * Set age to one day: + * @code * $wgAutoConfirmAge = 3600*24; // one day - * </code> + * @endcode */ $wgAutoConfirmAge = 0; @@ -3674,14 +3992,18 @@ $wgAutoConfirmAge = 0; * Number of edits an account requires before it is autoconfirmed. * Passing both this AND the time requirement is needed. Example: * - * <code> + * @par Example: + * @code * $wgAutoConfirmCount = 50; - * </code> + * @endcode */ $wgAutoConfirmCount = 0; /** * Automatically add a usergroup to any user who matches certain conditions. + * + * @todo Redocument $wgAutopromote + * * The format is * array( '&' or '|' or '^' or '!', cond1, cond2, ... ) * where cond1, cond2, ... are themselves conditions; *OR* @@ -3709,14 +4031,19 @@ $wgAutopromote = array( /** * Automatically add a usergroup to any user who matches certain conditions. + * * Does not add the user to the group again if it has been removed. * Also, does not remove the group if the user no longer meets the criteria. * - * The format is + * The format is: + * @code * array( event => criteria, ... ) - * where event is - * 'onEdit' (when user edits) or 'onView' (when user views the wiki) - * and criteria has the same format as $wgAutopromote + * @endcode + * Where event is either: + * - 'onEdit' (when user edits) + * - 'onView' (when user views the wiki) + * + * Criteria has the same format as $wgAutopromote * * @see $wgAutopromote * @since 1.18 @@ -3734,16 +4061,23 @@ $wgAutopromoteOnceLogInRC = true; /** * $wgAddGroups and $wgRemoveGroups can be used to give finer control over who - * can assign which groups at Special:Userrights. Example configuration: + * can assign which groups at Special:Userrights. * + * @par Example: + * Bureaucrats can add any group: * @code - * // Bureaucrat can add any group * $wgAddGroups['bureaucrat'] = true; - * // Bureaucrats can only remove bots and sysops + * @endcode + * Bureaucrats can only remove bots and sysops: + * @code * $wgRemoveGroups['bureaucrat'] = array( 'bot', 'sysop' ); - * // Sysops can make bots + * @endcode + * Sysops can make bots: + * @code * $wgAddGroups['sysop'] = array( 'bot' ); - * // Sysops can disable other sysops in an emergency, and disable bots + * @endcode + * Sysops can disable other sysops in an emergency, and disable bots: + * @code * $wgRemoveGroups['sysop'] = array( 'sysop', 'bot' ); * @endcode */ @@ -3763,8 +4097,10 @@ $wgAvailableRights = array(); */ $wgDeleteRevisionsLimit = 0; -/** Number of accounts each IP address may create, 0 to disable. - * Requires memcached */ +/** + * Number of accounts each IP address may create, 0 to disable. + * + * @warning Requires memcached */ $wgAccountCreationThrottle = 0; /** @@ -3774,8 +4110,9 @@ $wgAccountCreationThrottle = 0; * There's no administrator override on-wiki, so be careful what you set. :) * May be an array of regexes or a single string for backwards compatibility. * - * See http://en.wikipedia.org/wiki/Regular_expression - * Note that each regex needs a beginning/end delimiter, eg: # or / + * @see http://en.wikipedia.org/wiki/Regular_expression + * + * @note Each regex needs a beginning/end delimiter, eg: # or / */ $wgSpamRegex = array(); @@ -3783,54 +4120,46 @@ $wgSpamRegex = array(); $wgSummarySpamRegex = array(); /** - * Similarly you can get a function to do the job. The function will be given - * the following args: - * - a Title object for the article the edit is made on - * - the text submitted in the textarea (wpTextbox1) - * - the section number. - * The return should be boolean indicating whether the edit matched some evilness: - * - true : block it - * - false : let it through - * - * @deprecated since 1.17 Use hooks. See SpamBlacklist extension. - * @var $wgFilterCallback bool|string|Closure - */ -$wgFilterCallback = false; - -/** - * Whether to use DNS blacklists in $wgDnsBlacklistUrls to check for open proxies + * Whether to use DNS blacklists in $wgDnsBlacklistUrls to check for open + * proxies * @since 1.16 */ $wgEnableDnsBlacklist = false; /** - * @deprecated since 1.17 Use $wgEnableDnsBlacklist instead, only kept for backward - * compatibility + * @deprecated since 1.17 Use $wgEnableDnsBlacklist instead, only kept for + * backward compatibility. */ $wgEnableSorbs = false; /** - * List of DNS blacklists to use, if $wgEnableDnsBlacklist is true. This is an - * array of either a URL or an array with the URL and a key (should the blacklist - * require a key). For example: + * List of DNS blacklists to use, if $wgEnableDnsBlacklist is true. + * + * This is an array of either a URL or an array with the URL and a key (should + * the blacklist require a key). + * + * @par Example: * @code * $wgDnsBlacklistUrls = array( * // String containing URL - * 'http.dnsbl.sorbs.net', + * 'http.dnsbl.sorbs.net.', * // Array with URL and key, for services that require a key - * array( 'dnsbl.httpbl.net', 'mykey' ), + * array( 'dnsbl.httpbl.net.', 'mykey' ), * // Array with just the URL. While this works, it is recommended that you * // just use a string as shown above - * array( 'opm.tornevall.org' ) + * array( 'opm.tornevall.org.' ) * ); * @endcode + * + * @note You should end the domain name with a . to avoid searching your + * eventual domain search suffixes. * @since 1.16 */ $wgDnsBlacklistUrls = array( 'http.dnsbl.sorbs.net.' ); /** - * @deprecated since 1.17 Use $wgDnsBlacklistUrls instead, only kept for backward - * compatibility + * @deprecated since 1.17 Use $wgDnsBlacklistUrls instead, only kept for + * backward compatibility. */ $wgSorbsUrl = array(); @@ -3841,13 +4170,24 @@ $wgSorbsUrl = array(); $wgProxyWhitelist = array(); /** - * Simple rate limiter options to brake edit floods. Maximum number actions - * allowed in the given number of seconds; after that the violating client re- - * ceives HTTP 500 error pages until the period elapses. + * Simple rate limiter options to brake edit floods. + * + * Maximum number actions allowed in the given number of seconds; after that + * the violating client receives HTTP 500 error pages until the period + * elapses. + * + * @par Example: + * To set a generic maximum of 4 hits in 60 seconds: + * @code + * $wgRateLimits = array( 4, 60 ); + * @endcode * - * array( 4, 60 ) for a maximum of 4 hits in 60 seconds. + * You could also limit per action and then type of users. See the inline + * code for a template to use. * - * This option set is experimental and likely to change. Requires memcached. + * This option set is experimental and likely to change. + * + * @warning Requires memcached. */ $wgRateLimits = array( 'edit' => array( @@ -3896,7 +4236,8 @@ $wgQueryPageDefaultLimit = 50; /** * Limit password attempts to X attempts per Y seconds per IP per account. - * Requires memcached. + * + * @warning Requires memcached. */ $wgPasswordAttemptThrottle = array( 'count' => 5, 'seconds' => 300 ); @@ -3911,10 +4252,10 @@ $wgPasswordAttemptThrottle = array( 'count' => 5, 'seconds' => 300 ); * If you enable this, every editor's IP address will be scanned for open HTTP * proxies. * - * Don't enable this. Many sysops will report "hostile TCP port scans" to your - * ISP and ask for your server to be shut down. - * + * @warning Don't enable this. Many sysops will report "hostile TCP port scans" + * to your ISP and ask for your server to be shut down. * You have been warned. + * */ $wgBlockOpenProxies = false; /** Port we want to scan for a proxy */ @@ -4048,22 +4389,29 @@ $wgDebugRedirects = false; /** * If true, log debugging data from action=raw and load.php. - * This is normally false to avoid overlapping debug entries due to gen=css and - * gen=js requests. + * This is normally false to avoid overlapping debug entries due to gen=css + * and gen=js requests. */ $wgDebugRawPage = false; /** * Send debug data to an HTML comment in the output. * - * This may occasionally be useful when supporting a non-technical end-user. It's - * more secure than exposing the debug log file to the web, since the output only - * contains private data for the current user. But it's not ideal for development - * use since data is lost on fatal errors and redirects. + * This may occasionally be useful when supporting a non-technical end-user. + * It's more secure than exposing the debug log file to the web, since the + * output only contains private data for the current user. But it's not ideal + * for development use since data is lost on fatal errors and redirects. */ $wgDebugComments = false; /** + * Extensive database transaction state debugging + * + * @since 1.20 + */ +$wgDebugDBTransactions = false; + +/** * Write SQL queries to the debug log */ $wgDebugDumpSql = false; @@ -4120,11 +4468,23 @@ $wgShowExceptionDetails = false; $wgShowDBErrorBacktrace = false; /** + * If true, send the exception backtrace to the error log + */ +$wgLogExceptionBacktrace = true; + +/** * Expose backend server host names through the API and various HTML comments */ $wgShowHostnames = false; /** + * Override server hostname detection with a hardcoded value. + * Should be a string, default false. + * @since 1.20 + */ +$wgOverrideHostname = false; + +/** * If set to true MediaWiki will throw notices for some possible error * conditions and for deprecated functions. */ @@ -4135,7 +4495,7 @@ $wgDevelopmentWarnings = false; * development warnings will not be generated for deprecations added in releases * after the limit. */ -$wgDeprecationReleaseLimit = '1.17'; +$wgDeprecationReleaseLimit = false; /** Only record profiling info for pages that took longer than this */ $wgProfileLimit = 0.0; @@ -4201,6 +4561,14 @@ $wgAggregateStatsID = false; $wgDisableCounters = false; /** + * Set this to an integer to only do synchronous site_stats updates + * one every *this many* updates. The other requests go into pending + * delta values in $wgMemc. Make sure that $wgMemc is a global cache. + * If set to -1, updates *only* go to $wgMemc (useful for daemons). + */ +$wgSiteStatsAsyncFactor = false; + +/** * Parser test suite files to be run by parserTests.php when no specific * filename is passed to it. * @@ -4228,7 +4596,7 @@ $wgParserTestFiles = array( * ); */ $wgParserTestRemote = false; - + /** * Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit). */ @@ -4239,7 +4607,17 @@ $wgEnableJavaScriptTest = false; */ $wgJavaScriptTestConfig = array( 'qunit' => array( + // Page where documentation can be found relevant to the QUnit test suite being ran. + // Used in the intro paragraph on [[Special:JavaScriptTest/qunit]] for the + // documentation link in the "javascripttest-qunit-intro" message. 'documentation' => '//www.mediawiki.org/wiki/Manual:JavaScript_unit_testing', + // If you are submitting the QUnit test suite to a TestSwarm instance, + // point this to the "inject.js" script of that instance. This is was registers + // the QUnit hooks to extract the test results and push them back up into the + // TestSwarm database. + // @example 'http://localhost/testswarm/js/inject.js' + // @example '//integration.mediawiki.org/testswarm/js/inject.js' + 'testswarm-injectjs' => false, ), ); @@ -4307,16 +4685,10 @@ $wgCountTotalSearchHits = false; $wgOpenSearchTemplate = false; /** - * Enable suggestions while typing in search boxes - * (results are passed around in OpenSearch format) - * Requires $wgEnableOpenSearchSuggest = true; - */ -$wgEnableMWSuggest = false; - -/** * Enable OpenSearch suggestions requested by MediaWiki. Set this to - * false if you've disabled MWSuggest or another suggestion script and - * want reduce load caused by cached scripts pulling suggestions. + * false if you've disabled scripts that use api?action=opensearch and + * want reduce load caused by cached scripts still pulling suggestions. + * It will let the API fallback by responding with an empty array. */ $wgEnableOpenSearchSuggest = true; @@ -4326,26 +4698,19 @@ $wgEnableOpenSearchSuggest = true; $wgSearchSuggestCacheExpiry = 1200; /** - * Template for internal MediaWiki suggestion engine, defaults to API action=opensearch - * - * Placeholders: {searchTerms}, {namespaces}, {dbname} - * - */ -$wgMWSuggestTemplate = false; - -/** * If you've disabled search semi-permanently, this also disables updates to the * table. If you ever re-enable, be sure to rebuild the search table. */ $wgDisableSearchUpdate = false; /** - * List of namespaces which are searched by default. Example: + * List of namespaces which are searched by default. * - * <code> + * @par Example: + * @code * $wgNamespacesToBeSearchedDefault[NS_MAIN] = true; * $wgNamespacesToBeSearchedDefault[NS_PROJECT] = true; - * </code> + * @endcode */ $wgNamespacesToBeSearchedDefault = array( NS_MAIN => true, @@ -4353,9 +4718,9 @@ $wgNamespacesToBeSearchedDefault = array( /** * Namespaces to be searched when user clicks the "Help" tab - * on Special:Search + * on Special:Search. * - * Same format as $wgNamespacesToBeSearchedDefault + * Same format as $wgNamespacesToBeSearchedDefault. */ $wgNamespacesToBeSearchedHelp = array( NS_PROJECT => true, @@ -4363,8 +4728,10 @@ $wgNamespacesToBeSearchedHelp = array( ); /** - * If set to true the 'searcheverything' preference will be effective only for logged-in users. - * Useful for big wikis to maintain different search profiles for anonymous and logged-in users. + * If set to true the 'searcheverything' preference will be effective only for + * logged-in users. + * Useful for big wikis to maintain different search profiles for anonymous and + * logged-in users. * */ $wgSearchEverythingOnlyLoggedIn = false; @@ -4380,18 +4747,22 @@ $wgDisableInternalSearch = false; * If the URL includes '$1', this will be replaced with the URL-encoded * search term. * - * For example, to forward to Google you'd have something like: - * $wgSearchForwardUrl = 'http://www.google.com/search?q=$1' . - * '&domains=http://example.com' . - * '&sitesearch=http://example.com' . - * '&ie=utf-8&oe=utf-8'; + * @par Example: + * To forward to Google you'd have something like: + * @code + * $wgSearchForwardUrl = + * 'http://www.google.com/search?q=$1' . + * '&domains=http://example.com' . + * '&sitesearch=http://example.com' . + * '&ie=utf-8&oe=utf-8'; + * @endcode */ $wgSearchForwardUrl = null; /** - * Search form behavior - * true = use Go & Search buttons - * false = use Go button & Advanced search link + * Search form behavior. + * - true = use Go & Search buttons + * - false = use Go button & Advanced search link */ $wgUseTwoButtonsSearchForm = true; @@ -4408,11 +4779,13 @@ $wgSitemapNamespaces = false; * maintenance/generateSitemap.php script. * * This should be a map of namespace IDs to priority - * Example: + * @par Example: + * @code * $wgSitemapNamespacesPriorities = array( * NS_USER => '0.9', * NS_HELP => '0.0', * ); + * @endcode */ $wgSitemapNamespacesPriorities = false; @@ -4530,6 +4903,22 @@ $wgReadOnlyFile = false; */ $wgUpgradeKey = false; +/** + * Map GIT repository URLs to viewer URLs to provide links in Special:Version + * + * Key is a pattern passed to preg_match() and preg_replace(), + * without the delimiters (which are #) and must match the whole URL. + * The value is the replacement for the key (it can contain $1, etc.) + * %h will be replaced by the short SHA-1 (7 first chars) and %H by the + * full SHA-1 of the HEAD revision. + * + * @since 1.20 + */ +$wgGitRepositoryViewers = array( + 'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H', + 'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H', +); + /** @} */ # End of maintenance } /************************************************************************//** @@ -4627,18 +5016,23 @@ $wgFeedDiffCutoff = 32768; /** Override the site's default RSS/ATOM feed for recentchanges that appears on * every page. Some sites might have a different feed they'd like to promote * instead of the RC feed (maybe like a "Recent New Articles" or "Breaking news" one). - * Ex: $wgSiteFeed['format'] = "http://example.com/somefeed.xml"; Format can be one - * of either 'rss' or 'atom'. + * Should be a format as key (either 'rss' or 'atom') and an URL to the feed + * as value. + * @par Example: + * Configure the 'atom' feed to http://example.com/somefeed.xml + * @code + * $wgSiteFeed['atom'] = "http://example.com/somefeed.xml"; + * @endcode */ $wgOverrideSiteFeed = array(); /** - * Available feeds objects + * Available feeds objects. * Should probably only be defined when a page is syndicated ie when - * $wgOut->isSyndicated() is true + * $wgOut->isSyndicated() is true. */ $wgFeedClasses = array( - 'rss' => 'RSSFeed', + 'rss' => 'RSSFeed', 'atom' => 'AtomFeed', ); @@ -4797,9 +5191,9 @@ $wgExportAllowListContributors = false; * can become *insanely large* and could easily break your wiki, * it's disabled by default for now. * - * There's a HARD CODED limit of 5 levels of recursion to prevent a - * crazy-big export from being done by someone setting the depth - * number too high. In other words, last resort safety net. + * @warning There's a HARD CODED limit of 5 levels of recursion to prevent a + * crazy-big export from being done by someone setting the depth number too + * high. In other words, last resort safety net. */ $wgExportMaxLinkDepth = 0; @@ -4821,7 +5215,8 @@ $wgExportAllowAll = false; */ /** - * A list of callback functions which are called once MediaWiki is fully initialised + * A list of callback functions which are called once MediaWiki is fully + * initialised */ $wgExtensionFunctions = array(); @@ -4836,9 +5231,10 @@ $wgExtensionFunctions = array(); * Variables defined in extensions will override conflicting variables defined * in the core. * - * Example: - * $wgExtensionMessagesFiles['ConfirmEdit'] = dirname(__FILE__).'/ConfirmEdit.i18n.php'; - * + * @par Example: + * @code + * $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php'; + * @endcode */ $wgExtensionMessagesFiles = array(); @@ -4852,7 +5248,9 @@ $wgExtensionMessagesFiles = array(); * Registration is done with $pout->addOutputHook( $tag, $data ). * * The callback has the form: + * @code * function outputHook( $outputPage, $parserOutput, $data ) { ... } + * @endcode */ $wgParserOutputHooks = array(); @@ -4883,7 +5281,7 @@ $wgAutoloadClasses = array(); * urls, descriptions and pointers to localized description msgs. Note that * the version, url, description and descriptionmsg key can be omitted. * - * <code> + * @code * $wgExtensionCredits[$type][] = array( * 'name' => 'Example extension', * 'version' => 1.9, @@ -4893,7 +5291,7 @@ $wgAutoloadClasses = array(); * 'description' => 'An example extension', * 'descriptionmsg' => 'exampleextension-desc', * ); - * </code> + * @endcode * * Where $type is 'specialpage', 'parserhook', 'variable', 'media' or 'other'. * Where 'descriptionmsg' can be an array with message key and parameters: @@ -4909,12 +5307,30 @@ $wgAuth = null; /** * Global list of hooks. - * Add a hook by doing: + * + * The key is one of the events made available by MediaWiki, you can find + * a description for most of them in docs/hooks.txt. The array is used + * internally by Hook:run(). + * + * The value can be one of: + * + * - A function name: + * @code * $wgHooks['event_name'][] = $function; - * or: + * @endcode + * - A function with some data: + * @code * $wgHooks['event_name'][] = array($function, $data); - * or: + * @endcode + * - A an object method: + * @code * $wgHooks['event_name'][] = array($object, 'method'); + * @endcode + * + * @warning You should always append to an event array or you will end up + * deleting a previous registered hook. + * + * @todo Does it support PHP closures? */ $wgHooks = array(); @@ -5068,17 +5484,19 @@ $wgLogRestrictions = array( * * See $wgLogTypes for a list of available log types. * - * For example: + * @par Example: + * @code * $wgFilterLogTypes => array( * 'move' => true, * 'import' => false, * ); + * @endcode * * Will display show/hide links for the move and import logs. Move logs will be * hidden by default unless the link is clicked. Import logs will be shown by * default, and hidden when the link is clicked. * - * A message of the form log-show-hide-<type> should be added, and will be used + * A message of the form log-show-hide-[type] should be added, and will be used * for the link text. */ $wgFilterLogTypes = array( @@ -5091,7 +5509,7 @@ $wgFilterLogTypes = array( * * Extensions with custom log types may add to this array. * - * Since 1.19, if you follow the naming convention log-name-TYPE, + * @since 1.19, if you follow the naming convention log-name-TYPE, * where TYPE is your log type, yoy don't need to use this array. */ $wgLogNames = array( @@ -5114,7 +5532,7 @@ $wgLogNames = array( * * Extensions with custom log types may add to this array. * - * Since 1.19, if you follow the naming convention log-description-TYPE, + * @since 1.19, if you follow the naming convention log-description-TYPE, * where TYPE is your log type, yoy don't need to use this array. */ $wgLogHeaders = array( @@ -5164,10 +5582,12 @@ $wgLogActions = array( * @see LogFormatter */ $wgLogActionsHandlers = array( - // move, move_redir - 'move/*' => 'MoveLogFormatter', - // delete, restore, revision, event - 'delete/*' => 'DeleteLogFormatter', + 'move/move' => 'MoveLogFormatter', + 'move/move_redir' => 'MoveLogFormatter', + 'delete/delete' => 'DeleteLogFormatter', + 'delete/restore' => 'DeleteLogFormatter', + 'delete/revision' => 'DeleteLogFormatter', + 'delete/event' => 'DeleteLogFormatter', 'suppress/revision' => 'DeleteLogFormatter', 'suppress/event' => 'DeleteLogFormatter', 'suppress/delete' => 'DeleteLogFormatter', @@ -5266,6 +5686,7 @@ $wgSpecialPageGroups = array( 'Mostlinkedtemplates' => 'highuse', 'Mostcategories' => 'highuse', 'Mostimages' => 'highuse', + 'Mostinterwikis' => 'highuse', 'Mostrevisions' => 'highuse', 'Allpages' => 'pages', @@ -5328,7 +5749,7 @@ $wgMaxRedirectLinksRetrieved = 500; */ /** - * Array of allowed values for the title=foo&action=<action> parameter. Syntax is: + * Array of allowed values for the "title=foo&action=<action>" parameter. Syntax is: * 'foo' => 'ClassName' Load the specified class which subclasses Action * 'foo' => true Load the class FooAction which subclasses Action * If something is specified in the getActionOverrides() @@ -5364,11 +5785,6 @@ $wgActions = array( */ $wgDisabledActions = array(); -/** - * Allow the "info" action, very inefficient at the moment - */ -$wgAllowPageInfo = false; - /** @} */ # end actions } /*************************************************************************//** @@ -5393,8 +5809,10 @@ $wgDefaultRobotPolicy = 'index,follow'; * URLs, so search engine spiders risk getting lost in a maze of twisty special * pages, all alike, and never reaching your actual content. * - * Example: + * @par Example: + * @code * $wgNamespaceRobotPolicies = array( NS_TALK => 'noindex' ); + * @endcode */ $wgNamespaceRobotPolicies = array(); @@ -5402,10 +5820,18 @@ $wgNamespaceRobotPolicies = array(); * Robot policies per article. These override the per-namespace robot policies. * Must be in the form of an array where the key part is a properly canonical- * ised text form title and the value is a robot policy. - * Example: - * $wgArticleRobotPolicies = array( 'Main Page' => 'noindex,follow', - * 'User:Bob' => 'index,follow' ); - * Example that DOES NOT WORK because the names are not canonical text forms: + * + * @par Example: + * @code + * $wgArticleRobotPolicies = array( + * 'Main Page' => 'noindex,follow', + * 'User:Bob' => 'index,follow', + * ); + * @endcode + * + * @par Example that DOES NOT WORK because the names are not canonical text + * forms: + * @code * $wgArticleRobotPolicies = array( * # Underscore, not space! * 'Main_Page' => 'noindex,follow', @@ -5414,6 +5840,7 @@ $wgNamespaceRobotPolicies = array(); * # Needs to be "Abc", not "abc" (unless $wgCapitalLinks is false for that namespace)! * 'abc' => 'noindex,nofollow' * ); + * @endcode */ $wgArticleRobotPolicies = array(); @@ -5421,8 +5848,11 @@ $wgArticleRobotPolicies = array(); * An array of namespace keys in which the __INDEX__/__NOINDEX__ magic words * will not function, so users can't decide whether pages in that namespace are * indexed by search engines. If set to null, default to $wgContentNamespaces. - * Example: + * + * @par Example: + * @code * $wgExemptFromUserRobotsControl = array( NS_MAIN, NS_TALK, NS_PROJECT ); + * @endcode */ $wgExemptFromUserRobotsControl = null; @@ -5452,9 +5882,10 @@ $wgEnableAPI = true; $wgEnableWriteAPI = true; /** - * API module extensions + * API module extensions. * Associative array mapping module name to class name. * Extension modules may override the core modules. + * @todo Describe each of the variables, group them and add examples */ $wgAPIModules = array(); $wgAPIMetaModules = array(); @@ -5469,7 +5900,7 @@ $wgAPIMaxDBRows = 5000; /** * The maximum size (in bytes) of an API result. - * Don't set this lower than $wgMaxArticleSize*1024 + * @warning Do not set this lower than $wgMaxArticleSize*1024 */ $wgAPIMaxResultSize = 8388608; @@ -5524,17 +5955,18 @@ $wgAjaxLicensePreview = true; * This is currently only used by the API (requests to api.php) * $wgCrossSiteAJAXdomains can be set using a wildcard syntax: * - * '*' matches any number of characters - * '?' matches any 1 character - * - * Example: - $wgCrossSiteAJAXdomains = array( - 'www.mediawiki.org', - '*.wikipedia.org', - '*.wikimedia.org', - '*.wiktionary.org', - ); + * - '*' matches any number of characters + * - '?' matches any 1 character * + * @par Example: + * @code + * $wgCrossSiteAJAXdomains = array( + * 'www.mediawiki.org', + * '*.wikipedia.org', + * '*.wikimedia.org', + * '*.wiktionary.org', + * ); + * @endcode */ $wgCrossSiteAJAXdomains = array(); @@ -5638,7 +6070,7 @@ $wgUpdateRowsPerQuery = 100; /** * The build directory for HipHop compilation. - * Defaults to $IP/maintenance/hiphop/build. + * Defaults to '$IP/maintenance/hiphop/build'. */ $wgHipHopBuildDirectory = false; @@ -5658,8 +6090,9 @@ $wgHipHopCompilerProcs = 'detect'; * * To compile extensions with HipHop, set $wgExtensionsDirectory correctly, * and use code like: - * + * @code * require( MWInit::extensionSetupPath( 'Extension/Extension.php' ) ); + * @endcode * * to include the extension setup file from LocalSettings.php. It is not * necessary to set this variable unless you use MWInit::extensionSetupPath(). @@ -5682,6 +6115,19 @@ $wgCompiledFiles = array(); /************************************************************************//** + * @name Mobile support + * @{ + */ + +/** + * Name of the class used for mobile device detection, must be inherited from + * IDeviceDetector. + */ +$wgDeviceDetectionClass = 'DeviceDetection'; + +/** @} */ # End of Mobile support } + +/************************************************************************//** * @name Miscellaneous * @{ */ @@ -5691,9 +6137,11 @@ $wgExternalDiffEngine = false; /** * Disable redirects to special pages and interwiki redirects, which use a 302 - * and have no "redirected from" link. Note this is only for articles with #Redirect - * in them. URL's containing a local interwiki prefix (or a non-canonical special - * page name) are still hard redirected regardless of this setting. + * and have no "redirected from" link. + * + * @note This is only for articles with #REDIRECT in them. URL's containing a + * local interwiki prefix (or a non-canonical special page name) are still hard + * redirected regardless of this setting. */ $wgDisableHardRedirects = false; @@ -5704,8 +6152,8 @@ $wgDisableHardRedirects = false; $wgLinkHolderBatchSize = 1000; /** - * By default MediaWiki does not register links pointing to same server in externallinks dataset, - * use this value to override: + * By default MediaWiki does not register links pointing to same server in + * externallinks dataset, use this value to override: */ $wgRegisterInternalExternals = false; @@ -5733,8 +6181,10 @@ $wgRedirectOnLogin = null; * This configuration array maps pool types to an associative array. The only * defined key in the associative array is "class", which gives the class name. * The remaining elements are passed through to the class as constructor - * parameters. Example: + * parameters. * + * @par Example: + * @code * $wgPoolCounterConf = array( 'ArticleView' => array( * 'class' => 'PoolCounter_Client', * 'timeout' => 15, // wait timeout in seconds @@ -5742,6 +6192,7 @@ $wgRedirectOnLogin = null; * 'maxqueue' => 50, // maximum number of total threads in each pool * ... any extension-specific options... * ); + * @endcode */ $wgPoolCounterConf = null; @@ -5760,6 +6211,13 @@ $wgDBtestuser = ''; //db user that has permission to create and drop the test da $wgDBtestpassword = ''; /** + * Whether the user must enter their password to change their e-mail address + * + * @since 1.20 + */ +$wgRequirePasswordforEmailChange = true; + +/** * For really cool vim folding this needs to be at the end: * vim: foldmarker=@{,@} foldmethod=marker * @} |