From 08aa4418c30cfc18ccc69a0f0f9cb9e17be6c196 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Mon, 12 Aug 2013 09:28:15 +0200 Subject: Update to MediaWiki 1.21.1 --- includes/DefaultSettings.php | 1266 +++++++++++++++++++++++++----------------- 1 file changed, 748 insertions(+), 518 deletions(-) (limited to 'includes/DefaultSettings.php') diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 710605ad..9d024c86 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -47,7 +47,7 @@ * This is not a valid entry point, perform no further processing unless * MEDIAWIKI is defined */ -if( !defined( 'MEDIAWIKI' ) ) { +if ( !defined( 'MEDIAWIKI' ) ) { echo "This file is part of MediaWiki and is not a valid entry point\n"; die( 1 ); } @@ -55,13 +55,19 @@ if( !defined( 'MEDIAWIKI' ) ) { /** * wgConf hold the site configuration. * Not used for much in a default install. + * @since 1.5 */ $wgConf = new SiteConfiguration; -/** MediaWiki version number */ -$wgVersion = '1.20.6'; +/** + * MediaWiki version number + * @since 1.2 + */ +$wgVersion = '1.21.1'; -/** Name of the site. It must be changed in LocalSettings.php */ +/** + * Name of the site. It must be changed in LocalSettings.php + */ $wgSitename = 'MediaWiki'; /** @@ -87,6 +93,7 @@ $wgServer = WebRequest::detectServer(); * Must be fully qualified, even if $wgServer is protocol-relative. * * Defaults to $wgServer, expanded to a fully qualified http:// URL if needed. + * @since 1.18 */ $wgCanonicalServer = false; @@ -104,7 +111,7 @@ $wgCanonicalServer = false; * Other paths will be set to defaults based on it unless they are directly * set in LocalSettings.php */ -$wgScriptPath = '/wiki'; +$wgScriptPath = '/wiki'; /** * Whether to support URLs like index.php/Page_title These often break when PHP @@ -121,11 +128,11 @@ $wgScriptPath = '/wiki'; * The default $wgArticlePath will be set based on this value at runtime, but if * you have customized it, having this incorrectly set to true can cause * redirect loops when "pretty URLs" are used. + * @since 1.2.1 */ -$wgUsePathInfo = - ( strpos( php_sapi_name(), 'cgi' ) === false ) && - ( strpos( php_sapi_name(), 'apache2filter' ) === false ) && - ( strpos( php_sapi_name(), 'isapi' ) === false ); +$wgUsePathInfo = ( strpos( PHP_SAPI, 'cgi' ) === false ) && + ( strpos( PHP_SAPI, 'apache2filter' ) === false ) && + ( strpos( PHP_SAPI, 'isapi' ) === false ); /** * The extension to append to script names by default. This can either be .php @@ -133,9 +140,9 @@ $wgUsePathInfo = * * Some hosting providers use PHP 4 for *.php files, and PHP 5 for *.php5. This * variable is provided to support those providers. + * @since 1.11 */ -$wgScriptExtension = '.php'; - +$wgScriptExtension = '.php'; /**@}*/ @@ -176,12 +183,14 @@ $wgRedirectScript = false; * The URL path to load.php. * * Defaults to "{$wgScriptPath}/load{$wgScriptExtension}". + * @since 1.17 */ $wgLoadScript = false; /** * The URL path of the skins directory. * Defaults to "{$wgScriptPath}/skins". + * @since 1.3 */ $wgStylePath = false; $wgStyleSheetPath = &$wgStylePath; @@ -189,6 +198,7 @@ $wgStyleSheetPath = &$wgStylePath; /** * The URL path of the skins directory. Should not point to an external domain. * Defaults to "{$wgScriptPath}/skins". + * @since 1.17 */ $wgLocalStylePath = false; @@ -202,6 +212,7 @@ $wgExtensionAssetsPath = false; /** * Filesystem stylesheets directory. * Defaults to "{$IP}/skins". + * @since 1.3 */ $wgStyleDirectory = false; @@ -239,12 +250,14 @@ $wgLogo = false; /** * The URL path of the shortcut icon. + * @since 1.6 */ $wgFavicon = '/favicon.ico'; /** * The URL path of the icon for iPhone and iPod Touch web app bookmarks. * Defaults to no icon. + * @since 1.12 */ $wgAppleTouchIcon = false; @@ -268,6 +281,7 @@ $wgTmpDirectory = false; /** * If set, this URL is added to the start of $wgUploadPath to form a complete * upload URL. + * @since 1.4 */ $wgUploadBaseUrl = ''; @@ -276,6 +290,7 @@ $wgUploadBaseUrl = ''; * Full thumbnail URL will be like $wgUploadStashScalerBaseUrl/e/e6/Foo.jpg/123px-Foo.jpg * where 'e6' are the first two characters of the MD5 hash of the file name. * If $wgUploadStashScalerBaseUrl is set to false, thumbs are rendered locally as needed. + * @since 1.17 */ $wgUploadStashScalerBaseUrl = false; @@ -291,6 +306,7 @@ $wgUploadStashScalerBaseUrl = false; * * There must be an appropriate script or rewrite rule in place to handle these * URLs. + * @since 1.5 */ $wgActionPaths = array(); @@ -312,6 +328,20 @@ $wgUploadStashMaxAge = 6 * 3600; // 6 hours /** Allows to move images and other media files */ $wgAllowImageMoving = true; +/** + * Enable deferred upload tasks that use the job queue. + * Only enable this if job runners are set up for both the + * 'AssembleUploadChunks' and 'PublishStashedFile' job types. + */ +$wgEnableAsyncUploads = false; + +/** + * Allow chunked uploads. This should only really be needed if you + * use the UploadWizard extension or allow huge file uploads. + * https://www.mediawiki.org/wiki/API:Upload#Chunked_uploading + */ +$wgAllowChunkedUploads = false; + /** * These are additional characters that should be replaced with '-' in filenames */ @@ -353,7 +383,7 @@ $wgImgAuthPublicTest = true; * FSRepo is also supported for backwards compatibility. * * - name A unique name for the repository (but $wgLocalFileRepo should be 'local'). - * The name should consist of alpha-numberic characters. + * The name should consist of alpha-numeric characters. * - backend A file backend name (see $wgFileBackends). * * For most core repos: @@ -361,7 +391,9 @@ $wgImgAuthPublicTest = true; * 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 + * urlsByExt : map of file extension types to base URLs + * (useful for using a different cache for videos) + * handlerUrl : base script-handled URL to the root of the zone * (see FileRepo::getZoneHandlerUrl() function) * Zones default to using "-" as the container name * and default to using the container root as the zone's root directory. @@ -405,7 +437,7 @@ $wgImgAuthPublicTest = true; * * ForeignDBRepo: * - dbType, dbServer, dbUser, dbPassword, dbName, dbFlags - * equivalent to the corresponding member of $wgDBservers + * equivalent to the corresponding member of $wgDBservers * - tablePrefix Table prefix, the foreign wiki's $wgDBprefix * - hasSharedCache True if the wiki's shared cache is accessible via the local $wgMemc * @@ -416,7 +448,7 @@ $wgImgAuthPublicTest = true; * If you leave $wgLocalFileRepo set to false, Setup will fill in appropriate values. * Otherwise, set $wgLocalFileRepo to a repository structure as described above. * If you set $wgUseInstantCommons to true, it will add an entry for Commons. - * If you set $wgForeignFileRepos to an array of repostory structures, those will + * If you set $wgForeignFileRepos to an array of repository structures, those will * be searched after the local file repo. * Otherwise, you will only have access to local media files. * @@ -436,14 +468,34 @@ $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) - * - * Additional parameters are specific to the class used. + * - '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) + * + * See FileBackend::__construct() for more details. + * Additional parameters are specific to the file backend class used. + * These settings should be global to all wikis when possible. + * + * There are two particularly important aspects about each backend: + * - a) Whether it is fully qualified or wiki-relative. + * By default, the paths of files are relative to the current wiki, + * which works via prefixing them with the current wiki ID when accessed. + * Setting 'wikiId' forces the backend to be fully qualified by prefixing + * all paths with the specified value instead. This can be useful if + * multiple wikis need to share the same data. Note that 'name' is *not* + * part of any prefix and thus should not be relied upon for namespacing. + * - b) Whether it is only defined for some wikis or is defined on all + * wikis in the wiki farm. Defining a backend globally is useful + * if multiple wikis need to share the same data. + * One should be aware of these aspects when configuring a backend for use with + * any basic feature or plugin. For example, suppose an extension stores data for + * different wikis in different directories and sometimes needs to access data from + * a foreign wiki's directory in order to render a page on given wiki. The extension + * would need a fully qualified backend that is defined on all wikis in the wiki farm. */ $wgFileBackends = array(); @@ -452,7 +504,10 @@ $wgFileBackends = array(); * Each backend configuration has the following parameters: * - 'name' : A unique name for the lock manager * - 'class' : The lock manger class to use - * Additional parameters are specific to the class used. + * + * See LockManager::__construct() for more details. + * Additional parameters are specific to the lock manager class used. + * These settings should be global to all wikis. */ $wgLockManagers = array(); @@ -530,6 +585,13 @@ $wgAllowAsyncCopyUploads = false; */ $wgCopyUploadsDomains = array(); +/** + * Enable copy uploads from Special:Upload. $wgAllowCopyUploads must also be + * true. If $wgAllowCopyUploads is true, but this is false, you will only be + * able to perform copy uploads from the API or extensions (e.g. UploadWizard). + */ +$wgCopyUploadsFromSpecialUpload = false; + /** * Proxy to use for copy upload requests. * @since 1.20 @@ -553,7 +615,7 @@ $wgCopyUploadProxy = false; * will have a maximum of 500 kB. * */ -$wgMaxUploadSize = 1024*1024*100; # 100MB +$wgMaxUploadSize = 1024 * 1024 * 100; # 100MB /** * Point the upload navigation link to an external URL @@ -654,7 +716,7 @@ $wgFileBlacklist = array( */ $wgMimeTypeBlacklist = array( # HTML may contain cookie-stealing JavaScript and web bugs - 'text/html', 'text/javascript', 'text/x-javascript', 'application/x-shellscript', + 'text/html', 'text/javascript', 'text/x-javascript', 'application/x-shellscript', # PHP scripts may execute arbitrary code on the server 'application/x-php', 'text/x-php', # Other types that may be interpreted by some servers @@ -712,10 +774,10 @@ $wgUploadSizeWarning = false; */ $wgTrustedMediaFormats = array( MEDIATYPE_BITMAP, //all bitmap formats - MEDIATYPE_AUDIO, //all audio formats - MEDIATYPE_VIDEO, //all plain video formats - "image/svg+xml", //svg (only needed if inline rendering of svg is not supported) - "application/pdf", //PDF files + MEDIATYPE_AUDIO, //all audio formats + MEDIATYPE_VIDEO, //all plain video formats + "image/svg+xml", //svg (only needed if inline rendering of svg is not supported) + "application/pdf", //PDF files #"application/x-shockwave-flash", //flash/shockwave movie ); @@ -724,18 +786,35 @@ $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 +); + +/** + * Plugins for page content model handling. + * Each entry in the array maps a model id to a class name. + * + * @since 1.21 + */ +$wgContentHandlers = array( + // the usual case + CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler', + // dumb version, no syntax highlighting + CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler', + // dumb version, no syntax highlighting + CONTENT_MODEL_CSS => 'CssContentHandler', + // plain text, for use by extensions etc + CONTENT_MODEL_TEXT => 'TextContentHandler', ); /** @@ -778,6 +857,13 @@ $wgImageMagickTempDir = false; */ $wgCustomConvertCommand = false; +/** used for lossless jpeg rotation + * + * @since 1.21 + * **/ +$wgJpegTran = '/usr/bin/jpegtran'; + + /** * Some tests and extensions use exiv2 to manipulate the EXIF metadata in some * image formats. @@ -798,10 +884,10 @@ $wgSVGConverters = array( 'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output', 'inkscape' => '$path/inkscape -z -w $width -f $input -e $output', 'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input', - 'rsvg' => '$path/rsvg -w$width -h$height $input $output', + 'rsvg' => '$path/rsvg -w $width -h $height $input $output', 'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output', 'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ), - ); +); /** Pick a converter defined in $wgSVGConverters */ $wgSVGConverter = 'ImageMagick'; @@ -864,7 +950,7 @@ $wgMaxAnimatedGifArea = 1.25e7; * $wgTiffThumbnailType = array( 'jpg', 'image/jpeg' ); * @endcode */ - $wgTiffThumbnailType = false; +$wgTiffThumbnailType = false; /** * If rendered thumbnail files are older than this timestamp, they @@ -897,8 +983,8 @@ $wgIgnoreImageErrors = false; $wgGenerateThumbnailOnParse = true; /** -* Show thumbnails for old images on the image description page -*/ + * Show thumbnails for old images on the image description page + */ $wgShowArchiveThumbnails = true; /** Obsolete, always true, kept for compatibility with extensions */ @@ -912,7 +998,7 @@ $wgUseImageResize = true; $wgEnableAutoRotation = null; /** - * Internal name of virus scanner. This servers as a key to the + * Internal name of virus scanner. This serves as a key to the * $wgAntivirusSetup array. Set this to NULL to disable virus scanning. If not * null, every file uploaded will be scanned for viruses. */ @@ -930,7 +1016,7 @@ $wgAntivirus = null; * "command" is the full command to call the virus scanner - %f will be * replaced with the name of the file to scan. If not present, the filename * will be appended to the command. Note that this must be overwritten if the - * scanner is not in the system path; in that case, plase set + * scanner is not in the system path; in that case, please set * $wgAntivirusSetup[$wgAntivirus]['command'] to the desired command with full * path. * @@ -940,8 +1026,8 @@ $wgAntivirus = null; * the scan to be failed. This will pass the file if $wgAntivirusRequired * is not set. * - An exit code mapped to AV_SCAN_ABORTED causes the function to consider - * the file to have an usupported format, which is probably imune to - * virusses. This causes the file to pass. + * the file to have an unsupported format, which is probably immune to + * viruses. This causes the file to pass. * - An exit code mapped to AV_NO_VIRUS will cause the file to pass, meaning * no virus was found. * - All other codes (like AV_VIRUS_FOUND) will cause the function to report @@ -955,21 +1041,18 @@ $wgAntivirus = null; $wgAntivirusSetup = array( #setup for clamav - 'clamav' => array ( - 'command' => "clamscan --no-summary ", - - 'codemap' => array ( - "0" => AV_NO_VIRUS, # no virus - "1" => AV_VIRUS_FOUND, # virus found - "52" => AV_SCAN_ABORTED, # unsupported file format (probably imune) - "*" => AV_SCAN_FAILED, # else scan failed + 'clamav' => array( + 'command' => 'clamscan --no-summary ', + 'codemap' => array( + "0" => AV_NO_VIRUS, # no virus + "1" => AV_VIRUS_FOUND, # virus found + "52" => AV_SCAN_ABORTED, # unsupported file format (probably immune) + "*" => AV_SCAN_FAILED, # else scan failed ), - 'messagepattern' => '/.*?:(.*)/sim', ), ); - /** Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected. */ $wgAntivirusRequired = true; @@ -977,13 +1060,13 @@ $wgAntivirusRequired = true; $wgVerifyMimeType = true; /** Sets the mime type definition file to use by MimeMagic.php. */ -$wgMimeTypeFile = "includes/mime.types"; -#$wgMimeTypeFile= "/etc/mime.types"; -#$wgMimeTypeFile= null; #use built-in defaults only. +$wgMimeTypeFile = 'includes/mime.types'; +#$wgMimeTypeFile = '/etc/mime.types'; +#$wgMimeTypeFile = null; #use built-in defaults only. /** Sets the mime type info file to use by MimeMagic.php. */ -$wgMimeInfoFile= "includes/mime.info"; -#$wgMimeInfoFile= null; #use built-in defaults only. +$wgMimeInfoFile = 'includes/mime.info'; +#$wgMimeInfoFile = null; #use built-in defaults only. /** * Switch for loading the FileInfo extension by PECL at runtime. @@ -1016,11 +1099,11 @@ $wgTrivialMimeDetection = false; * array = ( 'rootElement' => 'associatedMimeType' ) */ $wgXMLMimeTypes = array( - 'http://www.w3.org/2000/svg:svg' => 'image/svg+xml', - 'svg' => 'image/svg+xml', + 'http://www.w3.org/2000/svg:svg' => 'image/svg+xml', + 'svg' => 'image/svg+xml', 'http://www.lysator.liu.se/~alla/dia/:diagram' => 'application/x-dia-diagram', - 'http://www.w3.org/1999/xhtml:html' => 'text/html', // application/xhtml+xml? - 'html' => 'text/html', // application/xhtml+xml? + 'http://www.w3.org/1999/xhtml:html' => 'text/html', // application/xhtml+xml? + 'html' => 'text/html', // application/xhtml+xml? ); /** @@ -1056,7 +1139,7 @@ $wgThumbLimits = array( /** * Default parameters for the "" tag */ -$wgGalleryOptions = array ( +$wgGalleryOptions = array( 'imagesPerRow' => 0, // Default number of images per-row in the gallery. 0 -> Adapt to screensize 'imageWidth' => 120, // Width of the cells containing images in galleries (in "px") 'imageHeight' => 120, // Height of the cells containing images in galleries (in "px") @@ -1076,6 +1159,16 @@ $wgThumbUpright = 0.75; */ $wgDirectoryMode = 0777; +/** + * Generate and use thumbnails suitable for screens with 1.5 and 2.0 pixel densities. + * + * This means a 320x240 use of an image on the wiki will also generate 480x360 and 640x480 + * thumbnails, output via data-src-1-5 and data-src-2-0. Runtime JavaScript switches the + * images in after loading the original low-resolution versions depending on the reported + * window.devicePixelRatio. + */ +$wgResponsiveImages = true; + /** * @name DJVU settings * @{ @@ -1182,7 +1275,7 @@ $wgEnableUserEmail = true; * instead of From. ($wgEmergencyContact will be used as From.) * * Some mailers (eg sSMTP) set the SMTP envelope sender to the From value, - * which can cause problems with SPF validation and leak recipient addressses + * which can cause problems with SPF validation and leak recipient addresses * when bounces are sent to the sender. */ $wgUserEmailUseReplyTo = false; @@ -1211,12 +1304,12 @@ $wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60; * * @code * $wgSMTP = array( - * 'host' => 'SMTP domain', - * 'IDHost' => 'domain for MessageID', - * 'port' => '25', - * 'auth' => [true|false], - * 'username' => [SMTP username], - * 'password' => [SMTP password], + * 'host' => 'SMTP domain', + * 'IDHost' => 'domain for MessageID', + * 'port' => '25', + * 'auth' => [true|false], + * 'username' => [SMTP username], + * 'password' => [SMTP password], * ); * @endcode */ @@ -1228,6 +1321,12 @@ $wgSMTP = false; */ $wgAdditionalMailParams = null; +/** + * For parts of the system that have been updated to provide HTML email content, send + * both text and HTML parts as the body of the email + */ +$wgAllowHTMLEmail = false; + /** * True: from page editor if s/he opted-in. False: Enotif mails appear to come * from $wgEmergencyContact @@ -1375,12 +1474,16 @@ $wgAllDBsAreLocalhost = false; * preferences shared (preferences were stored in the user table prior to 1.16) * * $wgSharedTables may be customized with a list of tables to share in the shared - * datbase. However it is advised to limit what tables you do share as many of + * database. However it is advised to limit what tables you do share as many of * MediaWiki's tables may have side effects if you try to share them. - * EXPERIMENTAL * * $wgSharedPrefix is the table prefix for the shared database. It defaults to * $wgDBprefix. + * + * @deprecated In new code, use the $wiki parameter to wfGetLB() to access + * remote databases. Using wfGetLB() allows the shared database to reside on + * separate servers to the wiki's own database, with suitable configuration + * of $wgLBFactoryConf. */ $wgSharedDB = null; @@ -1459,7 +1562,7 @@ $wgDBerrorLog = false; * Timezone to use in the error log. * Defaults to the wiki timezone ($wgLocaltimezone). * - * A list of useable timezones can found at: + * A list of usable timezones can found at: * http://php.net/manual/en/timezones.php * * @par Examples: @@ -1526,7 +1629,6 @@ $wgOldChangeTagsIndex = false; /**@}*/ # End of DB settings } - /************************************************************************//** * @name Text storage * @{ @@ -1560,7 +1662,7 @@ $wgExternalStores = false; * Create a cluster named 'cluster1' containing three servers: * @code * $wgExternalServers = array( - * 'cluster1' => array( 'srv28', 'srv29', 'srv30' ) + * 'cluster1' => array( 'srv28', 'srv29', 'srv30' ) * ); * @endcode * @@ -1758,13 +1860,13 @@ $wgDBAhandler = 'db3'; /** * Deprecated alias for $wgSessionsInObjectCache. * - * @deprecated Use $wgSessionsInObjectCache + * @deprecated since 1.20; 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 + * can be useful to improve performance, or to avoid the locking behavior of * PHP's default session handler, which tends to prevent multiple requests for * the same user from acting concurrently. */ @@ -1815,9 +1917,10 @@ $wgUseLocalMessageCache = false; $wgLocalMessageCacheSerialized = true; /** - * Instead of caching everything, keep track which messages are requested and - * load only most used messages. This only makes sense if there is lots of - * interface messages customised in the wiki (like hundreds in many languages). + * Instead of caching everything, only cache those messages which have + * been customised in the site content language. This means that + * MediaWiki:Foo/ja is ignored if MediaWiki:Foo doesn't exist. + * This option is probably only useful for translatewiki.net. */ $wgAdaptiveMessageCache = false; @@ -2031,6 +2134,27 @@ $wgSquidServersNoPurge = array(); /** Maximum number of titles to purge in any one client operation */ $wgMaxSquidPurgeTitles = 400; +/** + * Whether to use a Host header in purge requests sent to the proxy servers + * configured in $wgSquidServers. Set this to false to support Squid + * configured in forward-proxy mode. + * + * If this is set to true, a Host header will be sent, and only the path + * component of the URL will appear on the request line, as if the request + * were a non-proxy HTTP 1.1 request. Varnish only supports this style of + * request. Squid supports this style of request only if reverse-proxy mode + * (http_port ... accel) is enabled. + * + * If this is set to false, no Host header will be sent, and the absolute URL + * will be sent in the request line, as is the standard for an HTTP proxy + * request in both HTTP 1.0 and 1.1. This style of request is not supported + * by Varnish, but is supported by Squid in either configuration (forward or + * reverse). + * + * @since 1.21 + */ +$wgSquidPurgeUseHostHeader = true; + /** * Routing configuration for HTCP multicast purging. Add elements here to * enable HTCP and determine which purges are sent where. If set to an empty @@ -2073,13 +2197,13 @@ $wgHTCPMulticastRouting = array(); * setting is ignored. If $wgHTCPMulticastRouting is not set and this setting * is, it is used to populate $wgHTCPMulticastRouting. * - * @deprecated in favor of $wgHTCPMulticastRouting + * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting */ $wgHTCPMulticastAddress = false; /** * HTCP multicast port. - * @deprecated in favor of $wgHTCPMulticastRouting + * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting * @see $wgHTCPMulticastAddress */ $wgHTCPPort = 4827; @@ -2100,9 +2224,29 @@ $wgUsePrivateIPs = false; * @{ */ -/** Site language code, should be one of ./languages/Language(.*).php */ +/** + * Site language code. See languages/Names.php for languages supported by + * MediaWiki out of the box. Not all languages listed there have translations, + * see languages/messages/ for the list of languages with some localisation. + * + * Warning: Don't use language codes listed in $wgDummyLanguageCodes like "no" + * for Norwegian (use "nb" instead), or things will break unexpectedly. + * + * This defines the default interface language for all users, but users can + * change it in their preferences. + * + * This also defines the language of pages in the wiki. The content is wrapped + * in a html element with lang=XX attribute. This behavior can be overridden + * via hooks, see Title::getPageLanguage. + */ $wgLanguageCode = 'en'; +/** + * Language cache size, or really how many languages can we handle + * simultaneously without degrading to crawl speed. + */ +$wgLangObjCacheSize = 10; + /** * Some languages need different word forms, usually for different cases. * Used in Language::convertGrammar(). @@ -2125,7 +2269,7 @@ $wgExtraLanguageNames = array(); /** * List of language codes that don't correspond to an actual language. - * These codes are mostly leftoffs from renames, or other legacy things. + * These codes are mostly left-offs from renames, or other legacy things. * This array makes them not appear as a selectable language on the installer, * and excludes them when running the transstat.php script. */ @@ -2249,24 +2393,16 @@ $wgBrowserBlackList = array( * requires that the cur table be kept around for those revisions * to remain viewable. * - * maintenance/migrateCurStubs.php can be used to complete the - * migration in the background once the wiki is back online. - * * This option affects the updaters *only*. Any present cur stub * revisions will be readable at runtime regardless of this setting. */ $wgLegacySchemaConversion = false; -/** - * Enable to allow rewriting dates in page text. - * DOES NOT FORMAT CORRECTLY FOR MOST LANGUAGES. - */ -$wgUseDynamicDates = false; /** * Enable dates like 'May 12' instead of '12 May', this only takes effect if * the interface is set to English. */ -$wgAmericanDates = false; +$wgAmericanDates = false; /** * For Hindi and Arabic use local numerals instead of Western style (0-9) * numerals in interface. @@ -2295,7 +2431,7 @@ $wgDisableLangConversion = false; /** Whether to enable language variant conversion for links. */ $wgDisableTitleConversion = false; -/** Whether to enable cononical language links in meta data. */ +/** Whether to enable canonical language links in meta data. */ $wgCanonicalLanguageLinks = true; /** Default variant code, if false, the default will be the language code */ @@ -2319,9 +2455,9 @@ $wgDisabledVariants = array(); * * @par Example: * @code - * $wgLanguageCode = 'sr'; - * $wgVariantArticlePath = '/$2/$1'; - * $wgArticlePath = '/wiki/$1'; + * $wgLanguageCode = 'sr'; + * $wgVariantArticlePath = '/$2/$1'; + * $wgArticlePath = '/wiki/$1'; * @endcode * * A link to /wiki/ would be redirected to /sr/Главна_страна @@ -2354,7 +2490,7 @@ $wgLoginLanguageSelector = false; * To allow language-specific main page and community * portal: * @code - * $wgForceUIMsgAsContentMsg = array( 'mainpage', 'portal-url' ); + * $wgForceUIMsgAsContentMsg = array( 'mainpage', 'portal-url' ); * @endcode */ $wgForceUIMsgAsContentMsg = array(); @@ -2370,7 +2506,7 @@ $wgForceUIMsgAsContentMsg = array(); * Timezones can be translated by editing MediaWiki messages of type * timezone-nameinlowercase like timezone-utc. * - * A list of useable timezones can found at: + * A list of usable timezones can found at: * http://php.net/manual/en/timezones.php * * @par Examples: @@ -2389,23 +2525,12 @@ $wgLocaltimezone = null; * for anonymous users and new user accounts. * * This setting is used for most date/time displays in the software, and is - * overrideable in user preferences. It is *not* used for signature timestamps. + * overridable in user preferences. It is *not* used for signature timestamps. * * By default, this will be set to match $wgLocaltimezone. */ $wgLocalTZoffset = null; -/** - * If set to true, this will roll back a few bug fixes introduced in 1.19, - * emulating the 1.18 behaviour, to avoid introducing bug 34832. In 1.19, - * language variant conversion is disabled in interface messages. Setting this - * to true re-enables it. - * - * @todo This variable should be removed (implicitly false) in 1.20 or earlier. - */ -$wgBug34832TransitionalRollback = true; - - /** @} */ # End of language/charset settings /*************************************************************************//** @@ -2499,7 +2624,7 @@ $wgWellFormedXml = true; * @par Example: * @code * $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg'; - * @endCode + * @endcode * Normally we wouldn't have to define this in the root "" * element, but IE needs it there in some circumstances. * @@ -2527,12 +2652,12 @@ $wgSiteNotice = ''; /** * A subtitle to add to the tagline, for skins that have it/ */ -$wgExtraSubtitle = ''; +$wgExtraSubtitle = ''; /** * If this is set, a "donate" link will appear in the sidebar. Set it to a URL. */ -$wgSiteSupportPage = ''; +$wgSiteSupportPage = ''; /** * Validate the overall output using tidy and refuse @@ -2684,7 +2809,7 @@ $wgExperimentalHtmlIds = false; * for the icon, the following keys are used: * - 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 element arround the text or icon, if not set an a element will not be outputted + * - url: The url to use in the a element around 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. @@ -2719,7 +2844,7 @@ $wgUseCombinedLoginLink = false; * - true = use an icon search button * - false = use Go & Search buttons */ -$wgVectorUseSimpleSearch = false; +$wgVectorUseSimpleSearch = true; /** * Watch and unwatch as an icon rather than a link for Vector skin only. @@ -2754,16 +2879,24 @@ $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. + * rollback. The numeric value of the variable are the limit up to are counted. + * If the value is false or 0, the edits are not counted. Disabling this will + * furthermore prevent MediaWiki from hiding some useless rollback links. * * @since 1.20 */ $wgShowRollbackEditCount = 10; +/** + * Output a tag on every page indicating the canonical + * server which should be used, i.e. $wgServer or $wgCanonicalServer. Since + * detection of the current server is unreliable, the link is sent + * unconditionally. + */ +$wgEnableCanonicalServerLink = false; + /** @} */ # End of output format settings } /*************************************************************************//** @@ -2890,21 +3023,21 @@ $wgPreloadJavaScriptMwUtil = false; * * @par Example of legacy code: * @code{,js} - * if ( window.wgRestrictionEdit ) { ... } + * if ( window.wgRestrictionEdit ) { ... } * @endcode * or: * @code{,js} - * if ( wgIsArticle ) { ... } + * if ( wgIsArticle ) { ... } * @endcode * * Instead, one needs to use mw.config. * @par Example using mw.config global configuration: * @code{,js} - * if ( mw.config.exists('wgRestrictionEdit') ) { ... } + * if ( mw.config.exists('wgRestrictionEdit') ) { ... } * @endcode * or: * @code{,js} - * if ( mw.config.get('wgIsArticle') ) { ... } + * if ( mw.config.get('wgIsArticle') ) { ... } * @endcode */ $wgLegacyJavaScriptGlobals = true; @@ -2950,7 +3083,6 @@ $wgResourceLoaderExperimentalAsyncLoading = false; /** @} */ # End of resource loader settings } - /*************************************************************************//** * @name Page title and interwiki link settings * @{ @@ -3085,13 +3217,13 @@ $wgInterwikiExpiry = 10800; $wgInterwikiCache = false; /** * Specify number of domains to check for messages. - * - 1: Just wiki(db)-level - * - 2: wiki and global levels - * - 3: site levels + * - 1: Just wiki(db)-level + * - 2: wiki and global levels + * - 3: site levels */ $wgInterwikiScopes = 3; /** - * $wgInterwikiFallbackSite - if unable to resolve from cache + * $wgInterwikiFallbackSite - if unable to resolve from cache */ $wgInterwikiFallbackSite = 'wiki'; /** @} */ # end of Interwiki caching settings. @@ -3133,7 +3265,7 @@ $wgCapitalLinks = true; * * @par Example: * @code - * $wgCapitalLinkOverrides[ NS_FILE ] = false; + * $wgCapitalLinkOverrides[ NS_FILE ] = false; * @endcode */ $wgCapitalLinkOverrides = array(); @@ -3142,16 +3274,18 @@ $wgCapitalLinkOverrides = array(); * See Language.php for a list of namespaces. */ $wgNamespacesWithSubpages = array( - NS_TALK => true, - NS_USER => true, - NS_USER_TALK => true, - NS_PROJECT_TALK => true, - NS_FILE_TALK => true, - NS_MEDIAWIKI => true, + NS_TALK => true, + NS_USER => true, + NS_USER_TALK => true, + NS_PROJECT => true, + NS_PROJECT_TALK => true, + NS_FILE_TALK => true, + NS_MEDIAWIKI => true, NS_MEDIAWIKI_TALK => true, - NS_TEMPLATE_TALK => true, - NS_HELP_TALK => true, - NS_CATEGORY_TALK => true + NS_TEMPLATE_TALK => true, + NS_HELP => true, + NS_HELP_TALK => true, + NS_CATEGORY_TALK => true ); /** @@ -3195,7 +3329,7 @@ $wgInvalidRedirectTargets = array( 'Filepath', 'Mypage', 'Mytalk' ); * class The class name * * preprocessorClass The preprocessor class. Two classes are currently available: - * Preprocessor_Hash, which uses plain PHP arrays for tempoarary + * Preprocessor_Hash, which uses plain PHP arrays for temporary * storage, and Preprocessor_DOM, which uses the DOM module for * temporary storage. Preprocessor_DOM generally uses less memory; * the speed of the two is roughly the same. @@ -3225,12 +3359,16 @@ $wgMaxTocLevel = 999; $wgMaxPPNodeCount = 1000000; /** - * A complexity limit on template expansion: the maximum number of nodes - * generated by Preprocessor::preprocessToObj() + * A complexity limit on template expansion: the maximum number of elements + * generated by Preprocessor::preprocessToObj(). This allows you to limit the + * amount of memory used by the Preprocessor_DOM node cache: testing indicates + * that each element uses about 160 bytes of memory on a 64-bit processor, so + * this default corresponds to about 155 MB. + * + * When the limit is exceeded, an exception is thrown. */ $wgMaxGeneratedPPNodeCount = 1000000; - /** * Maximum recursion depth for templates within templates. * The current parser adds two levels to the PHP call stack for each template, @@ -3248,7 +3386,7 @@ $wgUrlProtocols = array( 'https://', 'ftp://', 'irc://', - 'ircs://', // @bug 28503 + 'ircs://', // @bug 28503 'gopher://', 'telnet://', // Well if we're going to support the above.. -ævar 'nntp://', // @bug 3808 RFC 1738 @@ -3324,7 +3462,7 @@ $wgAlwaysUseTidy = false; /** @see $wgUseTidy */ $wgTidyBin = 'tidy'; /** @see $wgUseTidy */ -$wgTidyConf = $IP.'/includes/tidy.conf'; +$wgTidyConf = $IP . '/includes/tidy.conf'; /** @see $wgUseTidy */ $wgTidyOpts = ''; /** @see $wgUseTidy */ @@ -3520,77 +3658,70 @@ $wgReservedUsernames = array( * */ $wgDefaultUserOptions = array( - 'ccmeonemails' => 0, - 'cols' => 80, - 'date' => 'default', - 'diffonly' => 0, - 'disablemail' => 0, - 'disablesuggest' => 0, - 'editfont' => 'default', - 'editondblclick' => 0, - 'editsection' => 1, + 'ccmeonemails' => 0, + 'cols' => 80, + 'date' => 'default', + 'diffonly' => 0, + 'disablemail' => 0, + 'disablesuggest' => 0, + 'editfont' => 'default', + 'editondblclick' => 0, + 'editsection' => 1, 'editsectiononrightclick' => 0, - 'enotifminoredits' => 0, - 'enotifrevealaddr' => 0, - 'enotifusertalkpages' => 1, - 'enotifwatchlistpages' => 0, - 'extendwatchlist' => 0, - 'externaldiff' => 0, - 'externaleditor' => 0, - 'fancysig' => 0, - 'forceeditsummary' => 0, - 'gender' => 'unknown', - 'hideminor' => 0, - 'hidepatrolled' => 0, - 'imagesize' => 2, - 'justify' => 0, - 'math' => 1, - 'minordefault' => 0, - 'newpageshidepatrolled' => 0, - 'nocache' => 0, - 'noconvertlink' => 0, - 'norollbackdiff' => 0, - 'numberheadings' => 0, - 'previewonfirst' => 0, - 'previewontop' => 1, - 'quickbar' => 5, - 'rcdays' => 7, - 'rclimit' => 50, - 'rememberpassword' => 0, - 'rows' => 25, - 'searchlimit' => 20, - 'showhiddencats' => 0, - 'showjumplinks' => 1, - 'shownumberswatching' => 1, - 'showtoc' => 1, - 'showtoolbar' => 1, - 'skin' => false, - 'stubthreshold' => 0, - 'thumbsize' => 2, - 'underline' => 2, - 'uselivepreview' => 0, - 'usenewrc' => 0, - 'watchcreations' => 0, - 'watchdefault' => 0, - 'watchdeletion' => 0, - 'watchlistdays' => 3.0, - 'watchlisthideanons' => 0, - 'watchlisthidebots' => 0, - 'watchlisthideliu' => 0, - 'watchlisthideminor' => 0, - 'watchlisthideown' => 0, - 'watchlisthidepatrolled' => 0, - 'watchmoves' => 0, - 'wllimit' => 250, + 'enotifminoredits' => 0, + 'enotifrevealaddr' => 0, + 'enotifusertalkpages' => 1, + 'enotifwatchlistpages' => 0, + 'extendwatchlist' => 0, + 'externaldiff' => 0, + 'externaleditor' => 0, + 'fancysig' => 0, + 'forceeditsummary' => 0, + 'gender' => 'unknown', + 'hideminor' => 0, + 'hidepatrolled' => 0, + 'imagesize' => 2, + 'justify' => 0, + 'math' => 1, + 'minordefault' => 0, + 'newpageshidepatrolled' => 0, + 'nocache' => 0, + 'noconvertlink' => 0, + 'norollbackdiff' => 0, + 'numberheadings' => 0, + 'previewonfirst' => 0, + 'previewontop' => 1, + 'quickbar' => 5, + 'rcdays' => 7, + 'rclimit' => 50, + 'rememberpassword' => 0, + 'rows' => 25, + 'searchlimit' => 20, + 'showhiddencats' => 0, + 'showjumplinks' => 1, + 'shownumberswatching' => 1, + 'showtoc' => 1, + 'showtoolbar' => 1, + 'skin' => false, + 'stubthreshold' => 0, + 'thumbsize' => 2, + 'underline' => 2, + 'uselivepreview' => 0, + 'usenewrc' => 0, + 'watchcreations' => 0, + 'watchdefault' => 0, + 'watchdeletion' => 0, + 'watchlistdays' => 3.0, + 'watchlisthideanons' => 0, + 'watchlisthidebots' => 0, + 'watchlisthideliu' => 0, + 'watchlisthideminor' => 0, + 'watchlisthideown' => 0, + 'watchlisthidepatrolled' => 0, + 'watchmoves' => 0, + 'wllimit' => 250, ); -/** - * Whether or not to allow and use real name fields. - * @deprecated since 1.16, use $wgHiddenPrefs[] = 'realname' below to disable real - * names - */ -$wgAllowRealName = true; - /** An array of preferences to not show for the user */ $wgHiddenPrefs = array(); @@ -3672,11 +3803,18 @@ $wgAllowPrefChange = array(); /** * This is to let user authenticate using https when they come from http. * Based on an idea by George Herbert on wikitech-l: - * http://lists.wikimedia.org/pipermail/wikitech-l/2010-October/050065.html + * http://lists.wikimedia.org/pipermail/wikitech-l/2010-October/050039.html * @since 1.17 */ $wgSecureLogin = false; +/** + * By default, keep users logged in via HTTPS when $wgSecureLogin is also + * true. Users opt-out of HTTPS when they login by de-selecting the checkbox. + * @since 1.21 + */ +$wgSecureLoginDefaultHTTPS = true; + /** @} */ # end user accounts } /************************************************************************//** @@ -3744,6 +3882,34 @@ $wgBlockDisablesLogin = false; */ $wgWhitelistRead = false; +/** + * Pages anonymous user may see, set as an array of regular expressions. + * + * This function will match the regexp against the title name, which + * is without underscore. + * + * @par Example: + * To whitelist [[Main Page]]: + * @code + * $wgWhitelistReadRegexp = array( "/Main Page/" ); + * @endcode + * + * @note Unless ^ and/or $ is specified, a regular expression might match + * pages not intended to be whitelisted. The above example will also + * whitelist a page named 'Security Main Page'. + * + * @par Example: + * To allow reading any page starting with 'User' regardless of the case: + * @code + * $wgWhitelistReadRegexp = array( "@^UsEr.*@i" ); + * @endcode + * Will allow both [[User is banned]] and [[User:JohnDoe]] + * + * @note This will only work if $wgGroupPermissions['*']['read'] is false -- + * see below. Otherwise, ALL pages are accessible, regardless of this setting. + */ +$wgWhitelistReadRegexp = false; + /** * Should editors be required to have a validated e-mail * address before being allowed to edit? @@ -3778,93 +3944,93 @@ $wgGroupPermissions = array(); /** @cond file_level_code */ // Implicit group for all visitors -$wgGroupPermissions['*']['createaccount'] = true; -$wgGroupPermissions['*']['read'] = true; -$wgGroupPermissions['*']['edit'] = true; -$wgGroupPermissions['*']['createpage'] = true; -$wgGroupPermissions['*']['createtalk'] = true; -$wgGroupPermissions['*']['writeapi'] = true; -//$wgGroupPermissions['*']['patrolmarks'] = false; // let anons see what was patrolled +$wgGroupPermissions['*']['createaccount'] = true; +$wgGroupPermissions['*']['read'] = true; +$wgGroupPermissions['*']['edit'] = true; +$wgGroupPermissions['*']['createpage'] = true; +$wgGroupPermissions['*']['createtalk'] = true; +$wgGroupPermissions['*']['writeapi'] = true; +#$wgGroupPermissions['*']['patrolmarks'] = false; // let anons see what was patrolled // Implicit group for all logged-in accounts -$wgGroupPermissions['user']['move'] = true; -$wgGroupPermissions['user']['move-subpages'] = true; +$wgGroupPermissions['user']['move'] = true; +$wgGroupPermissions['user']['move-subpages'] = true; $wgGroupPermissions['user']['move-rootuserpages'] = true; // can move root userpages -$wgGroupPermissions['user']['movefile'] = true; -$wgGroupPermissions['user']['read'] = true; -$wgGroupPermissions['user']['edit'] = true; -$wgGroupPermissions['user']['createpage'] = true; -$wgGroupPermissions['user']['createtalk'] = true; -$wgGroupPermissions['user']['writeapi'] = true; -$wgGroupPermissions['user']['upload'] = true; -$wgGroupPermissions['user']['reupload'] = true; -$wgGroupPermissions['user']['reupload-shared'] = true; -$wgGroupPermissions['user']['minoredit'] = true; -$wgGroupPermissions['user']['purge'] = true; // can use ?action=purge without clicking "ok" -$wgGroupPermissions['user']['sendemail'] = true; +$wgGroupPermissions['user']['movefile'] = true; +$wgGroupPermissions['user']['read'] = true; +$wgGroupPermissions['user']['edit'] = true; +$wgGroupPermissions['user']['createpage'] = true; +$wgGroupPermissions['user']['createtalk'] = true; +$wgGroupPermissions['user']['writeapi'] = true; +$wgGroupPermissions['user']['upload'] = true; +$wgGroupPermissions['user']['reupload'] = true; +$wgGroupPermissions['user']['reupload-shared'] = true; +$wgGroupPermissions['user']['minoredit'] = true; +$wgGroupPermissions['user']['purge'] = true; // can use ?action=purge without clicking "ok" +$wgGroupPermissions['user']['sendemail'] = true; // Implicit group for accounts that pass $wgAutoConfirmAge $wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true; // Users with bot privilege can have their edits hidden // from various log pages by default -$wgGroupPermissions['bot']['bot'] = true; -$wgGroupPermissions['bot']['autoconfirmed'] = true; -$wgGroupPermissions['bot']['nominornewtalk'] = true; -$wgGroupPermissions['bot']['autopatrol'] = true; +$wgGroupPermissions['bot']['bot'] = true; +$wgGroupPermissions['bot']['autoconfirmed'] = true; +$wgGroupPermissions['bot']['nominornewtalk'] = true; +$wgGroupPermissions['bot']['autopatrol'] = true; $wgGroupPermissions['bot']['suppressredirect'] = true; -$wgGroupPermissions['bot']['apihighlimits'] = true; -$wgGroupPermissions['bot']['writeapi'] = true; -#$wgGroupPermissions['bot']['editprotected'] = true; // can edit all protected pages without cascade protection enabled +$wgGroupPermissions['bot']['apihighlimits'] = true; +$wgGroupPermissions['bot']['writeapi'] = true; +#$wgGroupPermissions['bot']['editprotected'] = true; // can edit all protected pages without cascade protection enabled // Most extra permission abilities go to this group -$wgGroupPermissions['sysop']['block'] = true; -$wgGroupPermissions['sysop']['createaccount'] = true; -$wgGroupPermissions['sysop']['delete'] = true; -$wgGroupPermissions['sysop']['bigdelete'] = true; // can be separately configured for pages with > $wgDeleteRevisionsLimit revs -$wgGroupPermissions['sysop']['deletedhistory'] = true; // can view deleted history entries, but not see or restore the text -$wgGroupPermissions['sysop']['deletedtext'] = true; // can view deleted revision text -$wgGroupPermissions['sysop']['undelete'] = true; -$wgGroupPermissions['sysop']['editinterface'] = true; -$wgGroupPermissions['sysop']['editusercss'] = true; -$wgGroupPermissions['sysop']['edituserjs'] = true; -$wgGroupPermissions['sysop']['import'] = true; -$wgGroupPermissions['sysop']['importupload'] = true; -$wgGroupPermissions['sysop']['move'] = true; -$wgGroupPermissions['sysop']['move-subpages'] = true; +$wgGroupPermissions['sysop']['block'] = true; +$wgGroupPermissions['sysop']['createaccount'] = true; +$wgGroupPermissions['sysop']['delete'] = true; +$wgGroupPermissions['sysop']['bigdelete'] = true; // can be separately configured for pages with > $wgDeleteRevisionsLimit revs +$wgGroupPermissions['sysop']['deletedhistory'] = true; // can view deleted history entries, but not see or restore the text +$wgGroupPermissions['sysop']['deletedtext'] = true; // can view deleted revision text +$wgGroupPermissions['sysop']['undelete'] = true; +$wgGroupPermissions['sysop']['editinterface'] = true; +$wgGroupPermissions['sysop']['editusercss'] = true; +$wgGroupPermissions['sysop']['edituserjs'] = true; +$wgGroupPermissions['sysop']['import'] = true; +$wgGroupPermissions['sysop']['importupload'] = true; +$wgGroupPermissions['sysop']['move'] = true; +$wgGroupPermissions['sysop']['move-subpages'] = true; $wgGroupPermissions['sysop']['move-rootuserpages'] = true; -$wgGroupPermissions['sysop']['patrol'] = true; -$wgGroupPermissions['sysop']['autopatrol'] = true; -$wgGroupPermissions['sysop']['protect'] = true; -$wgGroupPermissions['sysop']['proxyunbannable'] = true; -$wgGroupPermissions['sysop']['rollback'] = true; -$wgGroupPermissions['sysop']['upload'] = true; -$wgGroupPermissions['sysop']['reupload'] = true; -$wgGroupPermissions['sysop']['reupload-shared'] = true; -$wgGroupPermissions['sysop']['unwatchedpages'] = true; -$wgGroupPermissions['sysop']['autoconfirmed'] = true; -$wgGroupPermissions['sysop']['ipblock-exempt'] = true; -$wgGroupPermissions['sysop']['blockemail'] = true; -$wgGroupPermissions['sysop']['markbotedits'] = true; -$wgGroupPermissions['sysop']['apihighlimits'] = true; -$wgGroupPermissions['sysop']['browsearchive'] = true; -$wgGroupPermissions['sysop']['noratelimit'] = true; -$wgGroupPermissions['sysop']['movefile'] = true; -$wgGroupPermissions['sysop']['unblockself'] = true; +$wgGroupPermissions['sysop']['patrol'] = true; +$wgGroupPermissions['sysop']['autopatrol'] = true; +$wgGroupPermissions['sysop']['protect'] = true; +$wgGroupPermissions['sysop']['proxyunbannable'] = true; +$wgGroupPermissions['sysop']['rollback'] = true; +$wgGroupPermissions['sysop']['upload'] = true; +$wgGroupPermissions['sysop']['reupload'] = true; +$wgGroupPermissions['sysop']['reupload-shared'] = true; +$wgGroupPermissions['sysop']['unwatchedpages'] = true; +$wgGroupPermissions['sysop']['autoconfirmed'] = true; +$wgGroupPermissions['sysop']['ipblock-exempt'] = true; +$wgGroupPermissions['sysop']['blockemail'] = true; +$wgGroupPermissions['sysop']['markbotedits'] = true; +$wgGroupPermissions['sysop']['apihighlimits'] = true; +$wgGroupPermissions['sysop']['browsearchive'] = true; +$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; +#$wgGroupPermissions['sysop']['upload_by_url'] = true; +#$wgGroupPermissions['sysop']['mergehistory'] = true; // Permission to change users' group assignments -$wgGroupPermissions['bureaucrat']['userrights'] = true; +$wgGroupPermissions['bureaucrat']['userrights'] = true; $wgGroupPermissions['bureaucrat']['noratelimit'] = true; // Permission to change users' groups assignments across wikis #$wgGroupPermissions['bureaucrat']['userrights-interwiki'] = 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; +#$wgGroupPermissions['sysop']['deletelogentry'] = true; +#$wgGroupPermissions['sysop']['deleterevision'] = true; // To hide usernames from users and Sysops #$wgGroupPermissions['suppress']['hideuser'] = true; // To hide revisions/log items from users and Sysops @@ -3962,7 +4128,7 @@ $wgNamespaceProtection = array(); * 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. + * which may otherwise be bypassed by using the template mechanism. */ $wgNonincludableNamespaces = array(); @@ -4037,11 +4203,11 @@ $wgAutopromote = array( * * The format is: * @code - * array( event => criteria, ... ) + * array( event => criteria, ... ) * @endcode * Where event is either: - * - 'onEdit' (when user edits) - * - 'onView' (when user views the wiki) + * - 'onEdit' (when user edits) + * - 'onView' (when user views the wiki) * * Criteria has the same format as $wgAutopromote * @@ -4100,7 +4266,8 @@ $wgDeleteRevisionsLimit = 0; /** * Number of accounts each IP address may create, 0 to disable. * - * @warning Requires memcached */ + * @warning Requires memcached + */ $wgAccountCreationThrottle = 0; /** @@ -4191,25 +4358,25 @@ $wgProxyWhitelist = array(); */ $wgRateLimits = array( 'edit' => array( - 'anon' => null, // for any and all anonymous edits (aggregate) - 'user' => null, // for each logged-in user + 'anon' => null, // for any and all anonymous edits (aggregate) + 'user' => null, // for each logged-in user 'newbie' => null, // for each recent (autoconfirmed) account; overrides 'user' - 'ip' => null, // for each anon and recent account + 'ip' => null, // for each anon and recent account 'subnet' => null, // ... with final octet removed - ), + ), 'move' => array( - 'user' => null, + 'user' => null, 'newbie' => null, - 'ip' => null, + 'ip' => null, 'subnet' => null, - ), + ), 'mailpassword' => array( 'anon' => null, - ), + ), 'emailuser' => array( 'user' => null, - ), - ); + ), +); /** * Set to a filename to log rate limiter hits. @@ -4225,6 +4392,7 @@ $wgRateLimitsExcludedIPs = array(); /** * Log IP addresses in the recentchanges table; can be accessed only by * extensions (e.g. CheckUser) or a DB admin + * Used for retroactive autoblocks */ $wgPutIPinRC = true; @@ -4261,14 +4429,26 @@ $wgBlockOpenProxies = false; /** Port we want to scan for a proxy */ $wgProxyPorts = array( 80, 81, 1080, 3128, 6588, 8000, 8080, 8888, 65506 ); /** Script used to scan */ -$wgProxyScriptPath = "$IP/maintenance/proxy_check.php"; +$wgProxyScriptPath = "$IP/maintenance/proxyCheck.php"; /** */ $wgProxyMemcExpiry = 86400; /** This should always be customised in LocalSettings.php */ $wgSecretKey = false; -/** big list of banned IP addresses, in the keys not the values */ + +/** + * Big list of banned IP addresses. + * + * This can have the following formats: + * - An array of addresses, either in the values + * or the keys (for backward compatibility) + * - A string, in that case this is the path to a file + * containing the list of IP addresses, one per line + */ $wgProxyList = array(); -/** deprecated */ + +/** + * @deprecated since 1.14 + */ $wgProxyKey = false; /** @} */ # end of proxy scanner settings @@ -4281,7 +4461,7 @@ $wgProxyKey = false; /** * Default cookie expiration time. Setting to 0 makes all cookies session-only. */ -$wgCookieExpiration = 180*86400; +$wgCookieExpiration = 180 * 86400; /** * Set to set an explicit domain on the login cookies eg, "justthis.domain.org" @@ -4289,7 +4469,6 @@ $wgCookieExpiration = 180*86400; */ $wgCookieDomain = ''; - /** * Set this variable if you want to restrict cookies to a certain path within * the domain specified by $wgCookieDomain. @@ -4343,7 +4522,7 @@ $wgCacheVaryCookies = array(); /** Override to customise the session name */ $wgSessionName = false; -/** @} */ # end of cookie settings } +/** @} */ # end of cookie settings } /************************************************************************//** * @name LaTeX (mathematical formulas) @@ -4507,7 +4686,9 @@ $wgProfileOnly = false; * Log sums from profiling into "profiling" table in db. * * You have to create a 'profiling' table in your database before using - * this feature, see maintenance/archives/patch-profiling.sql + * this feature. Run set $wgProfileToDatabase to true in + * LocalSettings.php and run maintenance/update.php or otherwise + * manually add patch-profiling.sql to your database. * * To enable profiling, edit StartProfiler.php */ @@ -4560,6 +4741,13 @@ $wgAggregateStatsID = false; */ $wgDisableCounters = false; +/** + * InfoAction retrieves a list of transclusion links (both to and from). + * This number puts a limit on that query in the case of highly transcluded + * templates. + */ +$wgPageInfoTransclusionLimit = 50; + /** * Set this to an integer to only do synchronous site_stats updates * one every *this many* updates. The other requests go into pending @@ -4621,7 +4809,6 @@ $wgJavaScriptTestConfig = array( ), ); - /** * Overwrite the caching key prefix with custom value. * @since 1.19 @@ -4650,7 +4837,7 @@ $wgDebugToolbar = false; $wgDisableTextSearch = false; /** - * Set to true to have nicer highligted text in search results, + * Set to true to have nicer highlighted text in search results, * by default off due to execution overhead */ $wgAdvancedSearchHighlighting = false; @@ -4676,7 +4863,7 @@ $wgCountTotalSearchHits = false; /** * Template for OpenSearch suggestions, defaults to API action=opensearch * - * Sites with heavy load would tipically have these point to a custom + * Sites with heavy load would typically have these point to a custom * PHP wrapper to avoid firing up mediawiki for every keystroke * * Placeholders: {searchTerms} @@ -4724,7 +4911,7 @@ $wgNamespacesToBeSearchedDefault = array( */ $wgNamespacesToBeSearchedHelp = array( NS_PROJECT => true, - NS_HELP => true, + NS_HELP => true, ); /** @@ -4751,10 +4938,10 @@ $wgDisableInternalSearch = false; * 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'; + * 'http://www.google.com/search?q=$1' . + * '&domains=http://example.com' . + * '&sitesearch=http://example.com' . + * '&ie=utf-8&oe=utf-8'; * @endcode */ $wgSearchForwardUrl = null; @@ -4768,14 +4955,14 @@ $wgUseTwoButtonsSearchForm = true; /** * Array of namespaces to generate a Google sitemap for when the - * maintenance/generateSitemap.php script is run, or false if one is to be ge- - * nerated for all namespaces. + * maintenance/generateSitemap.php script is run, or false if one is to be + * generated for all namespaces. */ $wgSitemapNamespaces = false; /** * Custom namespace priorities for sitemaps. Setting this will allow you to - * set custom priorities to namsepaces when sitemaps are generated using the + * set custom priorities to namespaces when sitemaps are generated using the * maintenance/generateSitemap.php script. * * This should be a map of namespace IDs to priority @@ -4805,7 +4992,7 @@ $wgEnableSearchContributorsByIP = true; /** * Path to the GNU diff3 utility. If the file doesn't exist, edit conflicts will - * fall back to the old behaviour (no merging). + * fall back to the old behavior (no merging). */ $wgDiff3 = '/usr/bin/diff3'; @@ -4816,7 +5003,7 @@ $wgDiff = '/usr/bin/diff'; /** * Which namespaces have special treatment where they should be preview-on-open - * Internaly only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki) + * Internally only Category: pages apply, but using this extensions (e.g. Semantic MediaWiki) * can specify namespaces of pages they have special treatment for */ $wgPreviewOnOpenNamespaces = array( @@ -4858,7 +5045,7 @@ $wgUseAutomaticEditSummaries = true; * @cond file_level_code * Set $wgCommandLineMode if it's not set already, to avoid notices */ -if( !isset( $wgCommandLineMode ) ) { +if ( !isset( $wgCommandLineMode ) ) { $wgCommandLineMode = false; } /** @endcond */ @@ -5032,7 +5219,7 @@ $wgOverrideSiteFeed = array(); * $wgOut->isSyndicated() is true. */ $wgFeedClasses = array( - 'rss' => 'RSSFeed', + 'rss' => 'RSSFeed', 'atom' => 'AtomFeed', ); @@ -5078,6 +5265,15 @@ $wgAllowCategorizedRecentChanges = false; */ $wgUseTagFilter = true; +/** + * If set to an integer, pages that are watched by this many users or more + * will not require the unwatchedpages permission to view the number of + * watchers. + * + * @since 1.21 + */ +$wgUnwatchedPageThreshold = false; + /** @} */ # end RC/watchlist } /************************************************************************//** @@ -5180,8 +5376,8 @@ $wgExportAllowHistory = true; $wgExportMaxHistory = 0; /** -* Return distinct author list (when not returning full history) -*/ + * Return distinct author list (when not returning full history) + */ $wgExportAllowListContributors = false; /** @@ -5198,13 +5394,13 @@ $wgExportAllowListContributors = false; $wgExportMaxLinkDepth = 0; /** -* Whether to allow the "export all pages in namespace" option -*/ + * Whether to allow the "export all pages in namespace" option + */ $wgExportFromNamespaces = false; /** -* Whether to allow exporting the entire wiki into a single file -*/ + * Whether to allow exporting the entire wiki into a single file + */ $wgExportAllowAll = false; /** @} */ # end of import/export } @@ -5287,7 +5483,7 @@ $wgAutoloadClasses = array(); * 'version' => 1.9, * 'path' => __FILE__, * 'author' => 'Foo Barstein', - * 'url' => 'http://wwww.example.com/Example%20Extension/', + * 'url' => 'http://www.example.com/Example%20Extension/', * 'description' => 'An example extension', * 'descriptionmsg' => 'exampleextension-desc', * ); @@ -5296,6 +5492,11 @@ $wgAutoloadClasses = array(); * Where $type is 'specialpage', 'parserhook', 'variable', 'media' or 'other'. * Where 'descriptionmsg' can be an array with message key and parameters: * 'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ), + * + * author can be a string or an array of strings. Authors can be linked using + * the regular wikitext link syntax. To have an internationalized version of + * "and others" show, add an element "...". This element can also be linked, + * for instance "[http://example ...]". */ $wgExtensionCredits = array(); @@ -5347,11 +5548,14 @@ $wgJobClasses = array( 'enotifNotify' => 'EnotifNotifyJob', 'fixDoubleRedirect' => 'DoubleRedirectJob', 'uploadFromUrl' => 'UploadFromUrlJob', + 'AssembleUploadChunks' => 'AssembleUploadChunksJob', + 'PublishStashedFile' => 'PublishStashedFileJob', + 'null' => 'NullJob' ); /** - - * Jobs that must be explicitly requested, i.e. aren't run by job runners unless special flags are set. + * Jobs that must be explicitly requested, i.e. aren't run by job runners unless + * special flags are set. The values here are keys of $wgJobClasses. * * These can be: * - Very long-running jobs. @@ -5359,7 +5563,25 @@ $wgJobClasses = array( * - Jobs that you want to run on specialized machines ( like transcoding, or a particular * machine on your cluster has 'outside' web access you could restrict uploadFromUrl ) */ -$wgJobTypesExcludedFromDefaultQueue = array(); +$wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' ); + +/** + * Map of job types to configuration arrays. + * This determines which queue class and storage system is used for each job type. + * Job types that do not have explicit configuration will use the 'default' config. + * These settings should be global to all wikis. + */ +$wgJobTypeConf = array( + 'default' => array( 'class' => 'JobQueueDB', 'order' => 'random' ), +); + +/** + * Which aggregator to use for tracking which queues have jobs. + * These settings should be global to all wikis. + */ +$wgJobQueueAggregator = array( + 'class' => 'JobQueueAggregatorMemc' +); /** * Additional functions to be performed with updateSpecialPages. @@ -5486,7 +5708,7 @@ $wgLogRestrictions = array( * * @par Example: * @code - * $wgFilterLogTypes => array( + * $wgFilterLogTypes = array( * 'move' => true, * 'import' => false, * ); @@ -5513,16 +5735,16 @@ $wgFilterLogTypes = array( * where TYPE is your log type, yoy don't need to use this array. */ $wgLogNames = array( - '' => 'all-logs-page', - 'block' => 'blocklogpage', + '' => 'all-logs-page', + 'block' => 'blocklogpage', 'protect' => 'protectlogpage', - 'rights' => 'rightslog', - 'delete' => 'dellogpage', - 'upload' => 'uploadlogpage', - 'move' => 'movelogpage', - 'import' => 'importlogpage', - 'patrol' => 'patrol-log-page', - 'merge' => 'mergelog', + 'rights' => 'rightslog', + 'delete' => 'dellogpage', + 'upload' => 'uploadlogpage', + 'move' => 'movelogpage', + 'import' => 'importlogpage', + 'patrol' => 'patrol-log-page', + 'merge' => 'mergelog', 'suppress' => 'suppressionlog', ); @@ -5536,16 +5758,16 @@ $wgLogNames = array( * where TYPE is your log type, yoy don't need to use this array. */ $wgLogHeaders = array( - '' => 'alllogstext', - 'block' => 'blocklogtext', + '' => 'alllogstext', + 'block' => 'blocklogtext', 'protect' => 'protectlogtext', - 'rights' => 'rightslogtext', - 'delete' => 'dellogpagetext', - 'upload' => 'uploadlogpagetext', - 'move' => 'movelogpagetext', - 'import' => 'importlogpagetext', - 'patrol' => 'patrol-log-header', - 'merge' => 'mergelogpagetext', + 'rights' => 'rightslogtext', + 'delete' => 'dellogpagetext', + 'upload' => 'uploadlogpagetext', + 'move' => 'movelogpagetext', + 'import' => 'importlogpagetext', + 'patrol' => 'patrol-log-header', + 'merge' => 'mergelogpagetext', 'suppress' => 'suppressionlogtext', ); @@ -5556,23 +5778,21 @@ $wgLogHeaders = array( * Extensions with custom log types may add to this array. */ $wgLogActions = array( - 'block/block' => 'blocklogentry', - 'block/unblock' => 'unblocklogentry', - 'block/reblock' => 'reblock-logentry', - 'protect/protect' => 'protectedarticle', - 'protect/modify' => 'modifiedarticleprotection', - 'protect/unprotect' => 'unprotectedarticle', - 'protect/move_prot' => 'movedarticleprotection', - 'rights/rights' => 'rightslogentry', - 'rights/autopromote' => 'rightslogentry-autopromote', - 'upload/upload' => 'uploadedimage', - 'upload/overwrite' => 'overwroteimage', - 'upload/revert' => 'uploadedimage', - 'import/upload' => 'import-logentry-upload', - 'import/interwiki' => 'import-logentry-interwiki', - 'merge/merge' => 'pagemerge-logentry', - 'suppress/block' => 'blocklogentry', - 'suppress/reblock' => 'reblock-logentry', + 'block/block' => 'blocklogentry', + 'block/unblock' => 'unblocklogentry', + 'block/reblock' => 'reblock-logentry', + 'protect/protect' => 'protectedarticle', + 'protect/modify' => 'modifiedarticleprotection', + 'protect/unprotect' => 'unprotectedarticle', + 'protect/move_prot' => 'movedarticleprotection', + 'upload/upload' => 'uploadedimage', + 'upload/overwrite' => 'overwroteimage', + 'upload/revert' => 'uploadedimage', + 'import/upload' => 'import-logentry-upload', + 'import/interwiki' => 'import-logentry-interwiki', + 'merge/merge' => 'pagemerge-logentry', + 'suppress/block' => 'blocklogentry', + 'suppress/reblock' => 'reblock-logentry', ); /** @@ -5582,16 +5802,18 @@ $wgLogActions = array( * @see LogFormatter */ $wgLogActionsHandlers = array( - 'move/move' => 'MoveLogFormatter', - 'move/move_redir' => 'MoveLogFormatter', - 'delete/delete' => 'DeleteLogFormatter', - 'delete/restore' => 'DeleteLogFormatter', - 'delete/revision' => 'DeleteLogFormatter', - 'delete/event' => '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', - 'patrol/patrol' => 'PatrolLogFormatter', + 'suppress/event' => 'DeleteLogFormatter', + 'suppress/delete' => 'DeleteLogFormatter', + 'patrol/patrol' => 'PatrolLogFormatter', + 'rights/rights' => 'RightsLogFormatter', + 'rights/autopromote' => 'RightsLogFormatter', ); /** @@ -5620,110 +5842,10 @@ $wgDisableQueryPageUpdate = false; /** * List of special pages, followed by what subtitle they should go under * at Special:SpecialPages + * + * @deprecated 1.21 Override SpecialPage::getGroupName instead */ -$wgSpecialPageGroups = array( - 'DoubleRedirects' => 'maintenance', - 'BrokenRedirects' => 'maintenance', - 'Lonelypages' => 'maintenance', - 'Uncategorizedpages' => 'maintenance', - 'Uncategorizedcategories' => 'maintenance', - 'Uncategorizedimages' => 'maintenance', - 'Uncategorizedtemplates' => 'maintenance', - 'Unusedcategories' => 'maintenance', - 'Unusedimages' => 'maintenance', - 'Protectedpages' => 'maintenance', - 'Protectedtitles' => 'maintenance', - 'Unusedtemplates' => 'maintenance', - 'Withoutinterwiki' => 'maintenance', - 'Longpages' => 'maintenance', - 'Shortpages' => 'maintenance', - 'Ancientpages' => 'maintenance', - 'Deadendpages' => 'maintenance', - 'Wantedpages' => 'maintenance', - 'Wantedcategories' => 'maintenance', - 'Wantedfiles' => 'maintenance', - 'Wantedtemplates' => 'maintenance', - 'Unwatchedpages' => 'maintenance', - 'Fewestrevisions' => 'maintenance', - - 'Userlogin' => 'login', - 'Userlogout' => 'login', - 'CreateAccount' => 'login', - - 'Recentchanges' => 'changes', - 'Recentchangeslinked' => 'changes', - 'Watchlist' => 'changes', - 'Newimages' => 'changes', - 'Newpages' => 'changes', - 'Log' => 'changes', - 'Tags' => 'changes', - - 'Upload' => 'media', - 'Listfiles' => 'media', - 'MIMEsearch' => 'media', - 'FileDuplicateSearch' => 'media', - 'Filepath' => 'media', - - 'Listusers' => 'users', - 'Activeusers' => 'users', - 'Listgrouprights' => 'users', - 'BlockList' => 'users', - 'Contributions' => 'users', - 'Emailuser' => 'users', - 'Listadmins' => 'users', - 'Listbots' => 'users', - 'Userrights' => 'users', - 'Block' => 'users', - 'Unblock' => 'users', - 'Preferences' => 'users', - 'ChangeEmail' => 'users', - 'ChangePassword' => 'users', - 'DeletedContributions' => 'users', - 'PasswordReset' => 'users', - - 'Mostlinked' => 'highuse', - 'Mostlinkedcategories' => 'highuse', - 'Mostlinkedtemplates' => 'highuse', - 'Mostcategories' => 'highuse', - 'Mostimages' => 'highuse', - 'Mostinterwikis' => 'highuse', - 'Mostrevisions' => 'highuse', - - 'Allpages' => 'pages', - 'Prefixindex' => 'pages', - 'Listredirects' => 'pages', - 'Categories' => 'pages', - 'Disambiguations' => 'pages', - - 'Randompage' => 'redirects', - 'Randomredirect' => 'redirects', - 'Mypage' => 'redirects', - 'Mytalk' => 'redirects', - 'Mycontributions' => 'redirects', - 'Search' => 'redirects', - 'LinkSearch' => 'redirects', - - 'ComparePages' => 'pagetools', - 'Movepage' => 'pagetools', - 'MergeHistory' => 'pagetools', - 'Revisiondelete' => 'pagetools', - 'Undelete' => 'pagetools', - 'Export' => 'pagetools', - 'Import' => 'pagetools', - 'Whatlinkshere' => 'pagetools', - - 'Statistics' => 'wiki', - 'Version' => 'wiki', - 'Lockdb' => 'wiki', - 'Unlockdb' => 'wiki', - 'Allmessages' => 'wiki', - 'Popularpages' => 'wiki', - - 'Specialpages' => 'other', - 'Blockme' => 'other', - 'Booksources' => 'other', - 'JavaScriptTest' => 'other', -); +$wgSpecialPageGroups = array(); /** Whether or not to sort special pages in Special:Specialpages */ @@ -5759,24 +5881,24 @@ $wgMaxRedirectLinksRetrieved = 500; * Unsetting core actions will probably cause things to complain loudly. */ $wgActions = array( - 'credits' => true, - 'delete' => true, - 'edit' => true, - 'history' => true, - 'info' => true, - 'markpatrolled' => true, - 'protect' => true, - 'purge' => true, - 'raw' => true, - 'render' => true, - 'revert' => true, + 'credits' => true, + 'delete' => true, + 'edit' => true, + 'history' => true, + 'info' => true, + 'markpatrolled' => true, + 'protect' => true, + 'purge' => true, + 'raw' => true, + 'render' => true, + 'revert' => true, 'revisiondelete' => true, - 'rollback' => true, - 'submit' => true, - 'unprotect' => true, - 'unwatch' => true, - 'view' => true, - 'watch' => true, + 'rollback' => true, + 'submit' => true, + 'unprotect' => true, + 'unwatch' => true, + 'view' => true, + 'watch' => true, ); /** @@ -5818,14 +5940,14 @@ $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. + * Must be in the form of an array where the key part is a properly canonicalised + * text form title and the value is a robot policy. * * @par Example: * @code * $wgArticleRobotPolicies = array( - * 'Main Page' => 'noindex,follow', - * 'User:Bob' => 'index,follow', + * 'Main Page' => 'noindex,follow', + * 'User:Bob' => 'index,follow', * ); * @endcode * @@ -5881,6 +6003,22 @@ $wgEnableAPI = true; */ $wgEnableWriteAPI = true; +/** + * + * WARNING: SECURITY THREAT - debug use only + * + * Disables many security checks in the API for debugging purposes. + * This flag should never be used on the production servers, as it introduces + * a number of potential security holes. Even when enabled, the validation + * will still be performed, but instead of failing, API will return a warning. + * Also, there will always be a warning notifying that this flag is set. + * At this point, the flag allows GET requests to go through for modules + * requiring POST. + * + * @since 1.21 + */ +$wgDebugAPI = false; + /** * API module extensions. * Associative array mapping module name to class name. @@ -5892,6 +6030,12 @@ $wgAPIMetaModules = array(); $wgAPIPropModules = array(); $wgAPIListModules = array(); +/** + * This variable is ignored. To add your module to the API, please add it to $wgAPI*Modules + * @deprecated since 1.21 + */ +$wgAPIGeneratorModules = array(); + /** * Maximum amount of rows to scan in a DB query in the API * The default value is generally fine @@ -5919,7 +6063,7 @@ $wgAPIRequestLog = false; /** * Set the timeout for the API help text cache. If set to 0, caching disabled */ -$wgAPICacheHelpTimeout = 60*60; +$wgAPICacheHelpTimeout = 60 * 60; /** * Enable AJAX framework @@ -5961,10 +6105,10 @@ $wgAjaxLicensePreview = true; * @par Example: * @code * $wgCrossSiteAJAXdomains = array( - * 'www.mediawiki.org', - * '*.wikipedia.org', - * '*.wikimedia.org', - * '*.wiktionary.org', + * 'www.mediawiki.org', + * '*.wikipedia.org', + * '*.wikimedia.org', + * '*.wiktionary.org', * ); * @endcode */ @@ -5997,10 +6141,41 @@ $wgMaxShellMemory = 102400; $wgMaxShellFileSize = 102400; /** - * Maximum CPU time in seconds for shell processes under linux + * Maximum CPU time in seconds for shell processes under Linux */ $wgMaxShellTime = 180; +/** + * Maximum wall clock time (i.e. real time, of the kind the clock on the wall + * would measure) in seconds for shell processes under Linux + */ +$wgMaxShellWallClockTime = 180; + +/** + * Under Linux: a cgroup directory used to constrain memory usage of shell + * commands. The directory must be writable by the user which runs MediaWiki. + * + * If specified, this is used instead of ulimit, which is inaccurate, and + * causes malloc() to return NULL, which exposes bugs in C applications, making + * them segfault or deadlock. + * + * A wrapper script will create a cgroup for each shell command that runs, as + * a subgroup of the specified cgroup. If the memory limit is exceeded, the + * kernel will send a SIGKILL signal to a process in the subgroup. + * + * @par Example: + * @code + * mkdir -p /sys/fs/cgroup/memory/mediawiki + * mkdir -m 0777 /sys/fs/cgroup/memory/mediawiki/job + * echo '$wgShellCgroup = "/sys/fs/cgroup/memory/mediawiki/job";' >> LocalSettings.php + * @endcode + * + * The reliability of cgroup cleanup can be improved by installing a + * notify_on_release script in the root cgroup, see e.g. + * https://gerrit.wikimedia.org/r/#/c/40784 + */ +$wgShellCgroup = false; + /** * Executable path of the PHP cli binary (php/php5). Should be set up on install. */ @@ -6061,6 +6236,15 @@ $wgUpdateRowsPerJob = 500; */ $wgUpdateRowsPerQuery = 100; +/** + * Do not purge all the pages that use a page when it is edited + * if there are more than this many such pages. This is used to + * avoid invalidating a large portion of the squid/parser cache. + * + * This setting should factor in any squid/parser cache expiry settings. + */ +$wgMaxBacklinksInvalidate = false; + /** @} */ # End job queue } /************************************************************************//** @@ -6113,20 +6297,6 @@ $wgCompiledFiles = array(); /** @} */ # End of HipHop compilation } - -/************************************************************************//** - * @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 * @{ @@ -6210,6 +6380,57 @@ $wgSeleniumConfigFile = null; $wgDBtestuser = ''; //db user that has permission to create and drop the test databases only $wgDBtestpassword = ''; +/** + * Associative array mapping namespace IDs to the name of the content model pages in that namespace should have by + * default (use the CONTENT_MODEL_XXX constants). If no special content type is defined for a given namespace, + * pages in that namespace will use the CONTENT_MODEL_WIKITEXT (except for the special case of JS and CS pages). + * + * @since 1.21 + */ +$wgNamespaceContentModels = array(); + +/** + * How to react if a plain text version of a non-text Content object is requested using ContentHandler::getContentText(): + * + * * 'ignore': return null + * * 'fail': throw an MWException + * * 'serialize': serialize to default format + * + * @since 1.21 + */ +$wgContentHandlerTextFallback = 'ignore'; + +/** + * Set to false to disable use of the database fields introduced by the ContentHandler facility. + * This way, the ContentHandler facility can be used without any additional information in the database. + * A page's content model is then derived solely from the page's title. This however means that changing + * a page's default model (e.g. using $wgNamespaceContentModels) will break the page and/or make the content + * inaccessible. This also means that pages can not be moved to a title that would default to a different + * content model. + * + * Overall, with $wgContentHandlerUseDB = false, no database updates are needed, but content handling + * is less robust and less flexible. + * + * @since 1.21 + */ +$wgContentHandlerUseDB = true; + +/** + * Determines which types of text are parsed as wikitext. This does not imply that these kinds + * of texts are also rendered as wikitext, it only means that links, magic words, etc will have + * the effect on the database they would have on a wikitext page. + * + * @todo: On the long run, it would be nice to put categories etc into a separate structure, + * or at least parse only the contents of comments in the scripts. + * + * @since 1.21 + */ +$wgTextModelsToParse = array( + CONTENT_MODEL_WIKITEXT, // Just for completeness, wikitext will always be parsed. + CONTENT_MODEL_JAVASCRIPT, // Make categories etc work, people put them into comments. + CONTENT_MODEL_CSS, // Make categories etc work, people put them into comments. +); + /** * Whether the user must enter their password to change their e-mail address * @@ -6217,6 +6438,15 @@ $wgDBtestpassword = ''; */ $wgRequirePasswordforEmailChange = true; +/** + * Register handlers for specific types of sites. + * + * @since 1.20 + */ +$wgSiteTypes = array( + 'mediawiki' => 'MediaWikiSite', +); + /** * For really cool vim folding this needs to be at the end: * vim: foldmarker=@{,@} foldmethod=marker -- cgit v1.2.2