Index: trunk/phase3/RELEASE-NOTES =================================================================== --- trunk/phase3/RELEASE-NOTES (revision 58651) +++ trunk/phase3/RELEASE-NOTES (revision 58652) @@ -1,796 +1,798 @@ = MediaWiki release notes = Security reminder: MediaWiki does not require PHP's register_globals setting since version 1.2.0. If you have it on, turn it *off* if you can. == MediaWiki 1.16 == THIS IS NOT A RELEASE YET MediaWiki is now using a "continuous integration" development model with quarterly snapshot releases. The latest development code is always kept "ready to run", and in fact runs our own sites on Wikipedia. Release branches will continue to receive security updates for about a year from first release, but nonessential bugfixes and feature developments will be made on the development trunk and appear in the next quarterly release. Those wishing to use the latest code instead of a branch release can obtain it from source control: http://www.mediawiki.org/wiki/Download_from_SVN === Configuration changes in 1.16 === * $wgScriptModifiedMsgCheck Checks the mediawiki namespace recent changes to ensure a updated urid for script-loader * $wgScriptModifiedCheck Checks script file modified time for unique request id) * $wgEnableAsyncDownload (lets you disable Async download for windows. Hopefully we will remove this configuration var soon) * $wgEnableFirefogg enable support for firefogg extension, firefogg supports in-browser transcoding, chunk uploads and client side hash checking. * $wgEnableTemporalOggUrls enable oggz_chop support a server side ogg seeking helper * $wgEnableScriptLoader if the script-loader shoudl be enabled * $wgJSAutoloadClasses array of javascript classes to file paths used by script-loader to load javascript by class name. * $wgEnableJS2system if we should include js2 stuff like jquery, mv_embed.js (script-loader helper) and use new interfaces for upload * $wgEnableScriptLoaderJsFile if we support grabbing js files with the script loader. By default we only grab classes in $wgJSAutoloadClasses * $wgEnableScriptMinify if you want the script loader to minify js * $wgEnableScriptLocalization if you want the script loader to do msg lookups * $wgMwEmbedDirectory the path to MwEmbed Directory (maybe we can depreciate this. Was used when mwEmbed was going to be an extension. * $wgDebugJavaScript if we want to enable fresh debug javascript * $wgPhpCliPath Path to php-cli for spinning up background php processes * (bug 18222) $wgMinimalPasswordLength default is now 1 * $wgSessionHandler can be used to configure session.save_handler * $wgLocalFileRepo/$wgForeignFileRepos now have a 'fileMode' parameter to be used when uploading/moving files * (bug 18761) $wgHiddenPrefs is a new array for specifying preferences not to be shown to users * $wgAllowRealName and $wgAllowUserSkin were deprecated in favor of $wgHiddenPrefs[] = 'realname', but the former are still retained for backwards-compatibility * (bug 9257) $wgRCMaxAge now defaults to three months * $wgDevelopmentWarnings can be set to true to show warnings about deprecated functions and other potential errors when developing. * Subpages are now enabled in the MediaWiki namespace by default. This is mainly a cosmetic change, and does not in any way affect the MessageCache, which was already effectively treating the namespace as if it had subpages. * (bug 10837) $wgVariant is a user variant selected in the user's preferences if the $wgContLang does not have variant, then the $wgLang is used instead. * Oracle: maintenance/ora/user.sql script for creating DB user on oracle with appropriate privileges. Creating this user with web-install page requires oci8.privileged_connect set to On in php.ini. * Removed UserrightsChangeableGroups hook introduced in 1.14 * Added $wgCacheDirectory, to replace $wgFileCacheDirectory, $wgLocalMessageCache, and any other local caches which need a place to put files. * $wgFileCacheDirectory is no longer set to anything by default, and so either needs to be set explicitly, or $wgCacheDirectory needs to be set instead. * $wgLocalMessageCache has been removed. Instead, set $wgUseLocalMessageCache to true * Removed $wgEnableSerializedMessages and $wgCheckSerialized. Similar functionality is now available via $wgLocalisationCacheConf. * $wgMessageCache->addMessages() is deprecated. Messages added via this interface will not appear in Special:AllMessages. * $wgRegisterInternalExternals can be used to record external links pointing to same server * $wgSpecialVersionExtended shows the extended version information besides PHP and database version. * (bug 19907) $wgCrossSiteAJAXdomains and $wgCrossSiteAJAXdomainExceptions added to control which external domains may access the API via cross-site AJAX. * $wgMaintenanceScripts for extensions to add their scripts to the default list * $wgMemoryLimit has been added, default value '50M' * $wgExtraRandompageSQL is deprecated, the SpecialRandomGetRandomTitle hook should be used instead * (bug 20489) $wgIllegalFileChars added to override the default list of illegal characters in file names. * (bug 19646) $wgImgAuthDetails added to display reason access to uploaded file was denied to users(img_auth only) * (bug 19646) $wgImgAuthPublicTest added to test to see if img_auth set up correctly (img_auth only) * $wgUploadMaintenance added to disable file deletions and restorations during maintenance * $wgCapitalLinkOverrides added to configure per-namespace capitalization * (bug 21172) $wgSorbsUrl can now be an array with multiple DNSBL * $wgEnableHtmlDiff has been removed * (bug 3340) $wgBlockCIDRLimit added (default: 16) to configure the low end of CIDR ranges for blocking * Added upload by default to $wgRestrictionTypes +* $wgUseInstantCommons added for quick and easy enabling of Commons as a remote + file repository === New features in 1.16 === * Add CSS defintion of the 'wikitable' class to shared.css * (bug 17163) Added MediaWiki:Talkpageheader which will be displayed when viewing talk pages * Superfluous border="0" removed from images * Added new hook 'MessageCacheReplace' into MessageCache.php. For instance to allow extensions to update caches in similar way as MediaWiki invalidates a cached MonoBook sidebar * Special:AllPages: Move hardcoded styles from code to CSS * (bug 18529) New hook: SoftwareInfo for adding information about the software to Special:Version * Added $wgExtPGAlteredFields to allow extensions to easily alter the data type of columns when using the Postgres backend. * (bug 16950) Show move log when viewing/creating a deleted page * (bug 18242) Show the Subversion revision number per extensions in Special:Version * (bug 18420) Missing file revisions are handled gracefully now * (bug 9219) Auth plugins can control editing RealName/Email/Nick preferences * (bug 18466) Add note or warning when overruling a move (semi-)protection * (bug 18342) insertTags works in edit summary box * (bug 18411) The upload form also checks post_max_size * Watchlist now has a specialized
tag that contains a unique class for each page * Added Minguo calendar support for the Taiwan Chinese language * Database: unionQueries function to be used for UNION sql construction, so it can be overloaded on DB abstraction level for DB specific functionality * (bug 18849) Implement Japanese and North Korean calendars * (bug 5755) Introduce {{CURRENTMONTH1}} and {{LOCALMONTH1}} to display the month number without the leading zero * (bug 13456) categoriespagetext supports PLURAL * (bug 18860) Blocks of IPs affecting registered users can now block email * (bug 17093) Date and time are separate parameters in Special:BlockList * (bug 11484) Added ISO speed rating to default collapsed EXIF metadata view * (bug 14866) Messages 'recentchangeslinked-toolbox' and 'recentchangeslinked-toolbox' were added to allow more fine grained customisation of the user interface * DISPLAYTITLE now accepts a limited amount of wiki markup (the single-quote items) * Special:Search now could search terms in all variant-forms. ONLY apply on wikis enabled LanguageConverter. * Add autopromote condition APCOND_BLOCKED to autopromote blocked users to various user groups. * Add $wgRevokePermissions as a means of restricting a group's rights. The syntax is identical to $wgGroupPermissions, but users in these groups will have these rights stripped from them. * Added a PHP port of CDB (constant database), for improved local caching when the DBA extension is not available. * Introduced a new system for localisation caching. The system is based around fast fetches of individual messages, minimising memory overhead and startup time in the typical case. The database backend will be used by default, but set $wgCacheDirectory to get a faster CDB-based implementation. * Expanded the number of variables which can be set in the extension messages files. * Added a feature to allow per-article process pool size control for the parsing task, to limit resource usage when the cache for a heavily-viewed article is invalidated. Requires an external daemon. * (bug 19576) Moved the id attribues from the anchors accompanying section headers to the elements within the section headers, removing the redundant anchor elements. * Parser::setFunctionTagHook now can be used to add a new tag which is parsed at preprocesor level. * Added $wgShowArchiveThumbnails, allowing sysadmins to disable thumbnail display for old versions of images. * In watchlists and Special:RecentChanges, the difference in page size now appears in dark green if bytes were added and dark red if bytes were removed. * Added FSRepo configuration properties thumbUrl and thumbDir, to allow the thumbnails to be stored in a separate location to the source images. * If config/ directory is not executable, the command to make it executable now asks the user to cd to the correct directory * Add experimental new external authentication framework, ExternalAuth * (bug 18768) Remove AdminSettings requirements. Maintenance environment will still load it if it exists, but it's not required for anything * (bug 19900) The "listgrouprights-key" message is now wrapped in a div with class "mw-listgrouprights-key" * (bug 471) Allow RSS feeds for watchlist, using an opt-in security token * (bug 10812) Interwiki links can have names and descriptions, fetched from message 'interwiki-desc-PREFIX', not really used anywhere yet though * (bug 9691) Add type (signup or login) parameter to AuthPlugin::ModifyUITemplate() * (bug 14454) "Member of group(s)" in Special:Preferences causes language difficulties * (bug 16697) Unicode combining characters are difficult to edit in some browsers * Parser test supports uploading results to remote CodeReview instance * (bug 20013) Added CSS class "mw-version-ext-version" is wrapped on the extension version in Special:Version * (bug 20014) Added CSS class "mw-listgrouprights-right-name" is wrapped on the right name in Special:ListGroupRights * (bug 12920) New CoreParserFunction {{nse:...}} as an url-friendly equivalent to {{ns:...}} * (bug 16322) Allow maintenance scripts to accept DB user/pass over input or params * (bug 18566) Maintenance script to un/protect pages * (bug 671) The HTML tag is now permitted. * RecentChanges now has a legend to explain what the Nmb! flags mean, and the flags have tooltips. * (bug 15209) New hook BeforeInitialize called after everything has been setup but before Mediawiki::performRequestForTitle() * wgMainPageTitle variable now available to JavaScript code to identify the main page link, so it doesn't have to be extracted from the link URLs. * (bug 16836) Display preview of signature in user preferences and describe its use * The default output format is now HTML 5 instead of XHTML 1.0 Transitional. This can be disabled by setting $wgHtml5 = false;. Specific features enabled if HTML 5 is used: ** New HTML 5 input attributes allow JavaScript-free input validation in some cutting-edge browsers. E.g., some inputs will be autofocused, users will not be allowed to submit forms with certain types of invalid values (like numbers outside the permitted ranges), etc. ** The summary attribute has been removed from tables of contents. summary is obsolete in HTML 5 and wasn't useful here anyway. ** Unnecessary type="" attribute removed for CSS and JS. ** If $wgWellFormedXml is set to false, some bytes will be shaved off of HTML output by omitting some things like quotation marks where HTML 5 allows. * The description message in $wgExtensionCredits can be an array with parameters * New hook SpecialRandomGetRandomTitle allows extensions to modify the selection criteria used by Special:Random and subclasses, or substitute a custom result, deprecating the $wgExtraRandompageSQL config variable * (bug 20318) Distinct CSS classes for ISBN/RFC/PMID special links added * (bug 20404) Custom fields in the user creation form template can now have detail labels in prefsectiontip divs. * MakeSysop and MakeBot are now aliases for Special:UserRights * IndexPager->mLimitsShown can now be an associative array of limit => text-to- display-in-limit-form. * (bug 18880) LogEventsList::showLogExtract() can now take a string-by-reference and add its HTML to it, rather than having to go straight to $wgOut. * Added $wgShowDBErrorBacktrace, to allow users to easily gather backtraces for database connection and query errors. * Show change block / unblock link on Special:Contributions if user is blocked * Display note on Special:Contributions if the user is blocked, and provide an excerpt from the block log. * (bug 19646) New hook: ImgAuthBeforeStream for tests and functionality before file is streamed to user, but only when using img_auth * Note on non-existing user and user talk pages if user does not exist * New hook ShowMissingArticle so extensions can modify the output for non-existent pages. * Added $wgUseAJAXCategories allow enabling AJAX based categories system. This works on all namespaces. Enabled namespaces can be reduces using $wgAJAXCategoriesNamespaces. * Admins could disable some variants using $wgDisabledVariants now. ONLY apply on wikis enabled LanguageConverter. * (bug 16310) Credits page now lists IP addresses rather than saying the number of anonymous users that edited the page * New permission 'sendemail' added. Default right for all registered users. Can for example be used to prevent new accounts from sending spam. * (bug 16979) Tracking categories for __INDEX__ and __NOINDEX__ * Two new hooks, ConfirmEmailComplete and InvalidateEmailComplete, which are called after a user's email has been successfully confirmed or invalidated. * (bug 19741) Moved the XCF files out of the main MediaWiki distribution, for a smaller subversion checkout. * (bug 13750) First letter capitalization can now be a per-namespace setting * (bug 21073) "User does not exist" message no longer displayed on sub-sub-pages of existing users * (bug 21095) Tracking categories produced by the parser (expensive parser function limit exceeded, __NOINDEX__ tracking, etc) can now be disabled by setting the system message ([[MediaWiki:expensive-parserfunction-category]] etc) to "-". * Added maintenance script sqlite.php for SQLite-specific maintenance tasks. * Rewrote Special:Upload to allow easier extension. * Upload errors that can be solved by changing the filename now do not require reuploading. * Added $wgRateLimitsExcludedIPs, to allow specific IPs to be whitelisted from rate limits. * (bug 21222) When $wgUseTeX is not enabled, is no longer registered with the parser so extensions are free to implement their own tag * (bug 21047) Wrap 'cannotdelete' into a div with the generic 'error' class and an own 'mw-error-cannotdelete' class * New hook AbortNewAccountAuto, called before account creation from AuthPlugin- or ExtUser-driven requests. * (bug 3480) The warning saying that the page has a history when deleting it now contains the number of revisions in the history * $wgStylePath and $wgLogo are now set in the default LocalSettings.php file. * (bug 20186) Allow filtering history for revision deletion. * New hook getOtherBlockLogLink, called in Special:IPBlockList and Special:Block to show links to block logs of other blocking extensions, i.e. GlobalBlocking * Added search capabilities to SQLite backend * rebuildtextindex.php maintenance script now supports databases other than MySQL === Bug fixes in 1.16 === * (bug 18031) Make namespace selector on Special:Export remember the previous selection * The svn-version version numbers on Special:Version have been removed * (bug 17374) Special:Export no longer exports two copies of the same page * (bug 18190) Proper parsing in MediaWiki:Sharedupload message * (bug 17617) HTML cleanup for ImagePage * (bug 17964) namespaceDupes.php no longer fails on an empty interwiki table * Improved error handling for image moving * (bug 17974) On Special:SpecialPages, restricted special pages are now marked with tags, helps with text-based browsers * (bug 18259) Special:DeletedContributions now also uses MediaWiki:Sp-contributions-logs for the link to Special:Log * Don't add empty title="" attributes to links to anchors on the current page * (bug 18291) rebuildrecentchanges.php failed to add deletion log entries * (bug 18304) rebuildrecentchanges.php got size changes wrong * (bug 18170) Fixed a PHP warning in Parser::preSaveTransform() in PHP 5.3 * (bug 18289) Database connection error page now returns correct HTML * "successbox", "errorbox" and related CSS classes are now available in all skins * (bug 18316) Removed superfluous name="fulltext" from Special:Search * (bug 18331) MediaWiki:Undelete-revision can now have wikitext * The "noautoblock" flag is no longer displayed in the block log when blocking an IP address * (bug 18009) $wgHooks and $wgExtensionFunctions now support closures * (bug 17948) Maintenance scripts now exit(0) or exit(1) as appropriate * (bug 18377) Time in Enhanced ChangesList lacking localisation * (bug 12998) Allow , , etc. in DISPLAYTITLE * (bug 1553) Lowercase navigation headings in German * (bug 7830) Pending transactions failed to commit on loginToUse() error * (bug 11613) session.save_handler being over-ridden * (bug 11381) session.save_handler being set twice (causes error) * (bug 17835) ForeignAPIRepo throwing error on first page load for file * (bug 18115) ForeignAPIRepo cache isn't working * Fixed a bug caused by LanguageConverter.php, which brings an abnormal '}-' after some parsed math syntax. * (bug 18441) rebuildrecentchanges.inc no longer ignores $wgLogRestrictions * (bug 18317) Bolded selections in 1 | 3 | etc days on RecentChanges now use instead of hardcoded styles * (bug 18449) Fixed items number per column on category pages when the total is divisible by 3 * (bug 18121) maintenance/deleteArchivedRevisions.php no longer deletes revisions when --delete is not passed * (bug 13172) GPS coordinates in image Exif data are now actually displayed * Overhaul of preferences system, includes the following bug fixes: ** (bug 5363) Changes to default preferences now impact registered users. ** (bug 14806) Hook to enable putting preferences in existing tabs. ** (bug 17191) Registration date now listed on preferences page. ** The user_properties table (now used for storing preferences) has been added to $wgSharedTables. ** Note that this change will break some extensions which have not been adapted for it. * (bug 17020) Adding fallback encodings for Traditional and Simplified Chinese languages while the the text is typed as URLs. * (bug 17614) Prev / Next links are not shown if all results are shown * (bug 18207) Strange spacing before [[irc:...]] links * Removed float from the user login form in RTL interface - caused display problems in FF2 * (bug 15008) Redirect images are now subject to Bad image list rules * (bug 6802) profileinfo.php now also work on other database servers than MySQL * (bug 16925) Diffs no longer fail when $wgExternalDiffEngine is set to 'wikidiff' or 'wikidiff2' but extension is not installed * (bug 18326) Chmod errors in file repos have been hidden * (bug 18718) Comma after a } create a error in IE * (bug 18716) Removed redundant class in Modern skin CSS for category links and tweaked spacing. * (bug 18656) Use proper directory separators in wfMkdirParents() * (bug 18549) Make Special:Blockip respect $wgEnableUserEmail and $wgSysopEmailBans * (bug 16912) Tooltips on images with link= disappear * (bug 18389) Localise numbers in EXIF data * (bug 18522) Wrap MediaWiki:Protect-cascadeon in a div for identification * (bug 18438) Tweak HTML for preview bar for consistency and accessibility * (bug 18432) Updated documentation for dumpBackup.php * Fix array logic in Sanitizer::removeHTMLtags so that it doesn't strip good tags that were redundantly defined. * (bug 14118) SpecialPage::getTitleFor does not return a localised name * (bug 18698) Renaming non entry point maintenance scripts from .inc.php to .inc * Deprecated methods Title::getInterwikiLink, Title::userCanCreate(), Title::userCanEdit() and Title::userCanMove() have been removed * Only show upload links on file description if $wgEnableUploads = true and user can upload * Don't say "You need to log in to upload/move", because it's possible that uploading/moving is disabled for registered users as well (e.g. only sysops) * (bug 18943) Handle invalid titles gracefully at Special:Mostlinked * (bug 8873) Enable variant conversion in text on 'alt' and 'title' attributes * (bug 10837) Introducing the StubUserVariant class to determine the variant variable instead of using this to overrules the user language preference. * (bug 19014) If user had deletedhistory right, but not undeleted right, then show "view" instead of "view/restore" on logs. * (bug 19017) TOC level calculation error in an odd case * (bug 18999) CSS update for RTL interwiki links * (bug 18925) history.js removes class names of list elements on initialization * Multiple whitespace in TOC anchors is now stripped, for consistency with the link from the edit comment * (bug 19112) Preferences now respects $wgUseExternalEditor * (bug 18173) MediaWiki now fails when unable to determine a client IP * (bug 19170) Special:Version should follow the content language direction * (bug 19160) maintenance/purgeOldText.inc is now compatible with PostgreSQL * Fixed performance regression in "bad image list" feature * Show user preference 'Use live preview' if $wgLivePreview is enabled only * (bug 17014) Blocked users can no longer use Special:UserRights unless they can add/remove *all* groups (have 'userrights' permission). * (bug 19294) Always show Sp-contributions-footer(-anon) * Attempts to restrict reading of pages while anonymous viewing is allowed via extensions not using the userCan hook and via $wgRevokePermissions now work. * (bug 8445) Multiple-character search terms are now handled properly for Chinese * (bug 19450) Use formatNum for "Number of edits" in Special:Preferences * (bug 11242) Check for MySQL storage engines during installation now checks whether the engines are actually available * (bug 19390) Omit the "printable version" link on the printable version * (bug 18394) img_auth.php now respects userCan * (bug 19509) Uploading to a file named '0' previously treated it as null input and attempted to upload with the source name. Now warns about not having an extension (since 0.ext is perfectly valid) * (bug 19468) Enotif preferences are now only displayed when they are turned on * (bug 19442) Show/hide options on watchlist only work once * (bug 19602) PubMed Magic links now use updated NIH url * (bug 19637) externallinks have links to self * Don't load Opera 9.5 RTL fixes for Opera 9.6 * Remove five-year-old KHTMLFixes.css, which is unlikely to be relevant anymore and was causing problems. * Removed repetition of URIs in the title attributes of external links. * (bug 19693) User name is now escaped in "Contributions for ..." link on Special:BlockIP * (bug 19571) Override buildConcat for SQLite. * Log in and log out links no longer return to page view when clicked from history view, edit page, or something similar * (bug 19513) RTL fixes for new Search UI * (bug 16497) Special:Allmessages is paginated * (bug 18708) CSS plainlinks class now available to all skins * (bug 19590) Database error messages no longer have "MySQL" hardcoded as the database type * (bug 19759) successbox on Special:Preferences now correctly aligned on standard, nostalgia and cologneblue skin * (bug 19814) interwiki links from file links ([[File:Foo.jpg|link=de:Test]]) are no longer recorded in the pagelinks table * (bug 19784) date option "ISO 8601" produced illegal id * (bug 19761) Removed autogenerated tag with link data. Keyword set was not useful, and is ignored by modern search engines anway. * (bug 19827) Special:SpecialPages title is "Upload file * (bug 19355) Added .xhtml, .xht to upload file extension blacklist * (bug 19287) Workaround for lag on history page in Firefox 3.5 * (bug 19564) Updated docs/hooks.txt * (bug 18751) Fix for buggage in profiling setup for some extensions on PHP 5.1 * (bug 17139) ts_resortTable inconsistent trimming makes date sorting fragile * (bug 19445) Change oldimage table to use ON UPDATE CASCADE for FK to image table. * (bug 14080) Short notation links to subpages didn't work in edit summaries * (bug 17374) Special:Export no longer exports multiple copies of pages * (bug 19818) Edits to user CSS/JS subpages can now be marked as patrolled by users who can't edit them * (bug 19839) Comments in log items are no more double escaped * (bug 18161) Fix inconsistent separators in watchlist link toolbars with "enhanced recent changes" * (bug 16877) Moving a page over a redirect no longer leaves an orphan entry in the recentchanges table * (bug 16009) Limit selection forms based on Pager now links to the correct page when using long urls * The display of the language list on the preferences is more comply with the BCP 47 standards. * (bug 19849) Custom X-Vary-Options header now disabled unless $wgUseXVO is set * (bug 19301) Duplicates entries in $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf and $wgGroupsRemoveFromSelf are no more displayed on Special:ListGroupRights * (bug 18799) Special:Userlogin now handles correctly the returnto parameter to not link back to Special:Userlogout when user's language isn't the same as content's language * (bug 19479) Show proper error message when unable to connect to PostgreSQL database with username/password in MediaWiki's setup * (bugs 18407, 18409) Special:Upload is now listed on Special:Specialpages only if uploads are enabled and the user can access it * (bug 17988) Spaces before [[Category:]] links are no longer ignored * (bug 19957) All known-failing tests now marked disabled; added --run-disabled option to parser test suite to run disabled tests if desired. * (bug 16311) Make recent change flags (n/m/b) s instead of s * (bug 15680) Split the edit tip message of user CSS/JS subpage into "usercssyoucanpreview" and "userjsyoucanpreview" respectively. * (bug 12110) Split the rights for editing users' CSS/JS subpage from "editusercssjs" into "editusercss" and edituserjs" respectively. * (bug 19394) RecentChanges feed URLs for log items with no revisions (eg Newuser, Userrights) are no longer broken * (bug 17395) Remote file descriptions use user language ($wgLang), not wiki language ($wgContLang) * (bug 11867) Lock error on redirect table when running orphans.php * (bug 18930) initStats.php now refreshes active users count * (bug 18699) Using the nosummary URL option no longer triggers the "You have not provided a summary" warning for those who activated it in their preferences * (bug 18855) commandLine.inc and Maintenance.php are now properly included using the full path * (bug 18497) Fixed broken style sheets in Opera fullscreen mode * (bug 16084) Default memory limit has be increased to 50M, see $wgMemoryLimit * (bug 17864/19519) Added proper input normalization in Special:UserRights * (bug 20086) Add Hook to add extra statistics at the end of Special:Statistics * (bug 19289) importDump.php can now handle bzip2 and 7zip * (bug 20131) Fixed a PHP notice for users having the "rollback" right on Special:RecentChangesLinked * Do not transform EXIF fields with pure text to avoid results like foo,bar@example,com * (bug 20176) Fix login/logout links in skin CologneBlue * (bug 20203) "Powered by Mediawiki" now has height/width on image tag * (bug 20273) Fix broken output when no pages are found in the content namespaces * (bug 20265) Make AncientPages and UnusedFiles work on SQLite * Fixed XSS vulnerability for Internet Explorer clients (only pre-release versions of MediaWiki were affected). * (bug 14817) Moving a page to a subpage of itself moves it twice * (bug 20289) $wgMaximumMovedPages should only count pages actually moved * (bug 15248) Non-breaking spaces and certain other Unicode space characters are now normalized to ordinary spaces in titles; if your wiki has existing titles with such characters, run cleanupTitles.php and/or cleanupImages.php * (bug 11143) Links containing invalid UTF-8 percent-code sequences are now cleanly disabled instead of breaking parsing entirely on PHP 5.2. * (bug 20296) Fixed an PHP warning in Language::getMagic() in PHP 5.3 * (bug 20358) Unprotect tab was missing accesskey; now same as protect tab. * (bug 20317) Cleaned up default main page link accesskey settings * (bug 20362) Special:Statistics now produces valid HTML when view counters are enabled * (bug 19857) maintenance/deleteRevision.php on last revision no longer breaks target page * (bug 20365) Page name with with c/g/h/j/s/u + x are now correctly handled in Special:MovePage with Esperanto as content language * (bug 20364) Fixed regression in GIF metadata loading * (bug 20299) MediaWiki:Move-subpages and MediaWiki:Move-talk-subpages can now use wikitext * (bug 15475) DatabaseBase::setFlag(), DatabaseBase::clearFlag() and DatabaseBase::getFlag() now have documentation * (bug 19966) MediaWiki:License-header is now used for the licensing header in the file description page instead of MediaWiki:License * (bug 20380) Links to history/deleted edits at the top of Special:RevisionDelete are no more displayed when when doing log suppression * (bug 8143) Localised parser function names are now correctly case insensitive if they contain non-ASCII characters * (bug 19055) maintenance/rebuildrecentchanges.php now purges Special:Recentchanges's RSS and Atom feed cache * The installer will now try to bypass PHP's max_execution_time * (bug 20260) SQLite no longer tries to automatically create the database at execution time, this now happens only at install time; if it is not available at script execution, it now throws an exception * Fixed EditFilterMerged hook so the hookError parameter serves a purpose (analogous to EditFilter hook) * (bug 2257) Tag extensions can expand template parameters provided to the tag, by using a new parameter added to the recursiveTagParse function * (bug 14900) __INDEX__ and __NOINDEX__ no longer override site config set in $wgArticleRobotPolicies. * (bug 20466) Hidden categories are no more displayed when printing * (bug 20446) When changing user rights with User@remotewiki and remotewiki is the local wiki, the user is now treated as the local user * (bug 20494) OutputPage::getArticleBodyOnly() no longer requires an useless argument * (bug 20136) Protection form JavaScript now synchronizes the expiry boxes on any change, in addition to onkeyup. * Don't link to "edit this page" on MediaWiki:Noarticletext if user is not allowed to create page. Done via new message MediaWiki:Noarticletext-nopermission * Improved compatibility between the Vector skin and addPortletLink() from wikibits.js: empty portlets are now present but hidden, adding an element to a portlet unhides it * (bug 19531) addPortletLink() now wraps inserted labels in a element to be compatible with the CSS for the Vector skin * (bug 20578) Wrong localized image metadata - duplicated string? * (bug 20556) Stub threshold's "other" in Special:Preferences now has a correct type="text" parameter * (bug 482) Don't include TOC in the printable version if it has been hidden * Adjust the time according to the user configuration on Special:Revisiondelete * (bug 20624) Installation no longer allows "qqq" as the chosen language * (bug 20634) The installer-created database user will now have all rights on the database so that upgrades will go more smoothly. * (bug 18180) Special:Export ignores limit, dir, offset parameters * User::getBlockedStatus() works for all kinds of user objects and doesn't assume the user object is equal to the current-user object ($wgUser) * (bug 20517) Cancel link from edit page now returns to the old version when editing an old version * (bug 16902) Installer no longer shows warnings when exec() has been disabled by disable_functions * (bug 20726) Title::getLatestRevID's documentation now says that the function returns false if the page doesn't exist * (bug 20751) ForeignApiRepo now urldecodes filenames when saving to local cache * (bug 20730) Fix to Special:Version ViewVC link for branch checkouts * (bug 20353) wfShellExec() was adding extra quotes on Windows Vista, causing command line scripts to fail * (bug 20702) Parser functions can now be used correctly in MediaWiki:Missing-article * (bug 14117) "redirected from" is now also shown on foreign file redirects * (bug 17747) Only display thumbnail column in file history if the image can be rendered. * (bug 3421) Live preview no longer breaks user CSS/JS previews * (bug 11264) The file logo on a file description page for documents (PDF, ...) now links to the file rather than the file description page * Password fields built with HTMLForm now still have the type="password" attribute if $wgHtml5=false. * (bug 20836) Preload now works for MediaWiki namespace * (bug 20885) Search box no longer suggests unavailable special pages * (bug 20948) "Create this page" on Special:Search is no longer displayed when searching for special pages * (bug 20524) Hideuser: Show nice error when trying to block hidden user without hideuser right * (bug 21026) Fixed file redirects on shared repos on non-English client wikis * (bug 21030) Fixed schema choices from being overwritten by defining unique field names per driver. * (bug 21115) wgCanonicalSpecialPageName javascript variable is now always false on non-special pages * (bug 21113) "Other statistics" header on Special:Statistics is no more displayed when there isn't any entry in it * (bug 21114) Special:Contributions no longer shows diff links for new revisions * (bug 21116) MediaWiki:Templatesused, MediaWiki:Templatesusedpreview and MediaWiki:Templatesusedsection now support plural * (bug 21079) There is no more line wrapping between label and field in Special:Log * (bug 20256) Fixed SQL errors on Special:Recentchanges and Special:Recentchangeslinked on SQLite backend * (bug 20880) Fixed updater failure on SQLite backend * (bug 21182) Fixed invalid HTML in Special:Listgrouprights * (bug 20242) Installer no longer promts for user credentials for SQLite databases * (bug 20911) Installer failed to create a SQLite database * (bug 20847) Deprecated deprecated akeytt() removed in wikibits.js leaving dummy * (bug 21161) Changing $wgCacheEpoch now always invalidates file cache * (bug 20268) Fixed row count estimation on SQLite backend * (bug 20275) Fixed LIKE queries on SQLite backend * (bug 21234) Moving subpages of titles containing \\ now works properly * (bug 21006) maintenance/updateArticleCount.php now works again on PostgreSQL * (bug 19319) Add activeusers-intro message at top of SpecialActiveUsers page * (bug 21255) Fixed hostname construction for DNSBL checking * (bug 18019) Users are now warned when moving a file to a name in use on a shared repository and only users with the 'reupload-shared' permission can complete the move. * (bug 18909) Add missing Postgres INSERT SELECT wrapper * User::isValidPassword now only returns boolean results, User::getPasswordValidity can be used to get an error message string * The error message shown in Special:ChangePassword now parses wiki markup * (bug 19859) Removed experimental HTMLDiff feature * Removed section edit links in edit conflict form * Allow SpecialActiveusers to work on non-MySQL databases * (bug 6579) Fixed protecting images from uploading only * (bug 18609) Search index was empty for some pages * (bug 13453) rebuildrecentchanges maintenance script works on PG again == API changes in 1.16 == * Added uiprop=changeablegroups to meta=userinfo * Added usprop=gender to list=users * (bug 18311) action=purge now works for images too * Add parentid to prop=revisions output * (bug 17832) action=delete returns 'unknownerror' instead of 'permissiondenied' when the user is blocked * (bug 18546) Added timestamp of new revision to action=edit output * (bug 18554) Also list hidden revisions in list=usercontribs for privileged users * (bug 13049) "API must be accessed from the primary script entry point" error * (bug 16422) Don't display help for format=jsonfm unless specifically requested * Added PHP and database version to meta=siteinfo output * (bug 18533) Add readonly message to meta=siteinfo output * (bug 18518) Add clprop=hidden to prop=categories * (bug 18710) Fixed internal error with empty parameter in action=paraminfo * (bug 18709) Missing descriptions for some parameters in action=paraminfo output * (bug 18731) Show correct SVN links for extension modules in api.php?version * (bug 18730) Add version information to action=paraminfo output * (bug 18743) Add ucprop=size to list=usercontribs * (bug 18749) Add generator flag to action=paraminfo output * Make action=block respect $wgEnableUserEmail and $wgSysopEmailBans * Made deleting file description pages without files possible * (bug 18773) Add content flag to siprop=namespaces output * (bug 18785) Add siprop=languages to meta=siteinfo * (bug 14200) Added user and excludeuser parameters to list=watchlist and list=recentchanges * Added index, fromtitle and byteoffset fields to action=parse&prop=sections output * (bug 19313) action=rollback returns wrong revid on master/slave setups * (bug 19323) action=parse doesn't return section tree on pages with Cite warnings * (bug 18720) Add anchor field to action=parse&prop=sections output * (bug 19423) The initial file description page used caption in user lang rather than UI lang * (bug 17809) Add number of users in user groups to meta=siteinfo * (bug 18533) Add readonly reason to readonly exception * (bug 19528) Added XSLT parameter to API queries in format=xml * (bug 19040) Fix prependtext and appendtext in combination with section parameter in action=edit * (bug 19090) Added watchlist parameter, deprecated watch and unwatch parameter in action=edit * Added fields to list=search output: size, wordcount, timestamp, snippet * Where supported by backend, list=search adds a 'searchinfo' element with optional info: 'totalhits' count and 'suggestion' alternate query term * (bug 19907) $wgCrossSiteAJAXdomains added to allow specified (or all) external domains to access api.php via AJAX, if the browser supports the Access-Control-Allow-Origin HTTP header * (bug 19999) Made metadata and properties of search results optional. Added srprop and srinfo. * (bug 20700) Add amprop=default to meta=allmessages to list default value for customized messages * Don't parse magic words in meta=allmessages, output messages unparsed * (bug 21105) list=usercontribs can now list contribs for User:0 * (bug 21085) list=deletedrevs no longer returns only one revision when drcontinue param is passed * (bug 21106) Deprecated parameters now tagged in action=paraminfo * (bug 19004) Added support for tags * (bug 21083) list=allusers no longer returns current timestamp for users without registration date * (bug 20554) Expose average slave lag (avglag) as well as maxlag * (bug 20967) action=edit allows creation of invalid titles === Languages updated in 1.16 === MediaWiki supports over 300 languages. Many localisations are updated regularly. Below only new and removed languages are listed, as well as changes to languages because of MediaZilla reports. * North Frisian (frr) (new) * Kirmanjki (kiu) (new) * Karachay-Balkar (krc) (new) * Lower Silesian (sli) (new) * Picard (pcd) (new) * Uyghur (Arabic script) (ug-arab) (new) * Eastern Yiddish (ydd) (removed) * Iriga Bicolano (bto) (removed) * Ladin (lld) (removed) * Laz (lzz) (removed) * Palembang (plm) (removed) * Megleno-Romanian (Greek script) (ruq-grek) (removed) * Tamazight (tzm) (removed) * (bug 18474) Sorani (ckb - Central Kurdish) (renamed from ku-arab) * Add PLURAL function for Scots Gaelic (gd) * Add Estonian letters äöõšüž to linktrail (et) * (bug 18776) Native name of Burmese language (my) * (bug 18806) Use correct unicode characters in spelling of native Chuvash (Чӑвашла) * (bug 18864) Updated autonym for Zhuang language * (bug 18308) Updated date formatting in Occitan (oc) * (bug 19080) Added ăâîşţșțĂÂÎŞŢȘȚ to Romanion (ro) linktrail * (bug 19286) Correct commafying function in Polish (pl) * (bug 19441) Updated date formatting for Lithuanian * (bug 19630) Added ÄäÇçĞğŇňÖöŞşÜüÝýŽž to Turkmen (tk) linktrail * (bug 19949) New linktrail for Greek (el) * (bug 19809) Korean (North Korea) (ko-kp) (new) * (bug 19968) Fixed "Project talk" namespace name for Maltese (mt) * (bug 21168) Added áâãàéêçíóôõúü to Portuguese (pt) linktrail == Compatibility == MediaWiki 1.16 requires PHP 5 (5.2 recommended). PHP 4 is no longer supported. PHP 5.0.x fails on 64-bit systems due to serious bugs with array processing: http://bugs.php.net/bug.php?id=34879 Upgrade affected systems to PHP 5.1 or higher. MySQL 3.23.x is no longer supported; some older hosts may need to upgrade. At this time we still recommend 4.0, but 4.1/5.0 will work fine in most cases. == Upgrading == 1.16 has several database changes since 1.15, and will not work without schema updates. If upgrading from before 1.11, and you are using a wiki as a commons reposito- ry, make sure that it is updated as well. Otherwise, errors may arise due to database schema changes. If upgrading from before 1.7, you may want to run refreshLinks.php to ensure new database fields are filled with data. If you are upgrading from MediaWiki 1.4.x or earlier, some major database changes are made, and there is a slightly higher chance that things could break. Don't forget to always back up your database before upgrading! See the file UPGRADE for more detailed upgrade instructions. === Caveats === Some output, particularly involving user-supplied inline HTML, may not produce 100% valid or well-formed XHTML output. Testers are welcome to set $wgMimeType = "application/xhtml+xml"; to test for remaining problem cases, but this is not recommended on live sites. (This must be set for MathML to display properly in Mozilla.) For notes on 1.15.x and older releases, see HISTORY. === Online documentation === Documentation for both end-users and site administrators is currently being built up on MediaWiki.org, and is covered under the GNU Free Documentation License (except for pages that explicitly state that their contents are in the public domain) : http://www.mediawiki.org/wiki/Documentation === Mailing list === A MediaWiki-l mailing list has been set up distinct from the Wikipedia wikitech-l list: http://lists.wikimedia.org/mailman/listinfo/mediawiki-l A low-traffic announcements-only list is also available: http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce It's highly recommended that you sign up for one of these lists if you're going to run a public MediaWiki, so you can be notified of security fixes. === IRC help === There's usually someone online in #mediawiki on irc.freenode.net Index: trunk/phase3/includes/DefaultSettings.php =================================================================== --- trunk/phase3/includes/DefaultSettings.php (revision 58651) +++ trunk/phase3/includes/DefaultSettings.php (revision 58652) @@ -1,4318 +1,4325 @@ /thumb. * thumbUrl The base thumbnail URL. Defaults to /thumb. * * * These settings describe a foreign MediaWiki installation. They are optional, and will be ignored * for local repositories: * descBaseUrl URL of image description pages, e.g. http://en.wikipedia.org/wiki/Image: * scriptDirUrl URL of the MediaWiki installation, equivalent to $wgScriptPath, e.g. * http://en.wikipedia.org/w * * 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. * * ForeignDBRepo: * dbType, dbServer, dbUser, dbPassword, dbName, dbFlags * 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 * * ForeignAPIRepo: * apibase Use for the foreign API's URL * apiThumbCacheExpiry How long to locally cache thumbs for * * The default is to initialise these arrays from the MW<1.11 backwards compatible settings: * $wgUploadPath, $wgThumbnailScriptPath, $wgSharedUploadDirectory, etc. */ $wgLocalFileRepo = false; $wgForeignFileRepos = array(); /**@}*/ /** + * Use Commons as a remote file repository. Essentially a wrapper, when this + * is enabled $wgForeignFileRepos will point at Commons with a set of default + * settings + */ +$wgUseInstantCommons = false; + +/** * Allowed title characters -- regex character class * Don't change this unless you know what you're doing * * Problematic punctuation: * []{}|# Are needed for link syntax, never enable these * <> Causes problems with HTML escaping, don't use * % Enabled by default, minor problems with path to query rewrite rules, see below * + 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. * * 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 * %253F, for example, becomes "?". Our code does not double-escape to compensate * for this, indeed double escaping would break if the double-escaped title was * passed in the query string rather than the path. This is a minor security issue * because articles can be created such that they are hard to view or edit. * * In some rare cases you may wish to remove + for compatibility with old links. * * Theoretically 0x80-0x9F of ISO 8859-1 should be disallowed, but * this breaks interlanguage links */ $wgLegalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+"; $wgIllegalFileChars = ":"; // These are additional characters that should be replaced with '-' in file names /** * The external URL protocols */ $wgUrlProtocols = array( 'http://', 'https://', 'ftp://', 'irc://', 'gopher://', 'telnet://', // Well if we're going to support the above.. -ævar 'nntp://', // @bug 3808 RFC 1738 'worldwind://', 'mailto:', 'news:', 'svn://', ); /** internal name of virus scanner. This servers 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. */ $wgAntivirus= NULL; /** Configuration for different virus scanners. This an associative array of associative arrays: * it contains on setup array per known scanner type. The entry is selected by $wgAntivirus, i.e. * valid values for $wgAntivirus are the keys defined in this array. * * The configuration array for each scanner contains the following keys: "command", "codemap", "messagepattern"; * * "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 * $wgAntivirusSetup[$wgAntivirus]['command'] to the desired command with full path. * * "codemap" is a mapping of exit code to return codes of the detectVirus function in SpecialUpload. * An exit code mapped to AV_SCAN_FAILED causes the function to consider 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. * 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 a virus. * You may use "*" as a key in the array to catch all exit codes not mapped otherwise. * * "messagepattern" is a perl regular expression to extract the meaningful part of the scanners * output. The relevant part should be matched as group one (\1). * If not defined or the pattern does not match, the full message is shown to the user. */ $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 ), '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', ), ); /** Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected. */ $wgAntivirusRequired= true; /** Determines if the mime type of uploaded files should be checked */ $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. /** Sets the mime type info file to use by MimeMagic.php. */ $wgMimeInfoFile= "includes/mime.info"; #$wgMimeInfoFile= NULL; #use built-in defaults only. /** Switch for loading the FileInfo extension by PECL at runtime. * This should be used only if fileinfo is installed as a shared object * or a dynamic libary */ $wgLoadFileinfoExtension= false; /** Sets an external mime detector program. The command must print only * the mime type to standard output. * The name of the file to process will be appended to the command given here. * If not set or NULL, mime_content_type will be used if available. */ $wgMimeDetectorCommand= NULL; # use internal mime_content_type function, available since php 4.3.0 #$wgMimeDetectorCommand= "file -bi"; #use external mime detector (Linux) /** Switch for trivial mime detection. Used by thumb.php to disable all fance * things, because only a few types of images are needed and file extensions * can be trusted. */ $wgTrivialMimeDetection= false; /** * Additional XML types we can allow via mime-detection. * array = ( 'rootElement' => 'associatedMimeType' ) */ $wgXMLMimeTypes = array( '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? ); /** * To set 'pretty' URL paths for actions other than * plain page views, add to this array. For instance: * 'edit' => "$wgScriptPath/edit/$1" * * There must be an appropriate script or rewrite rule * in place to handle these URLs. */ $wgActionPaths = array(); /** * If you operate multiple wikis, you can define a shared upload path here. * Uploads to this wiki will NOT be put there - they will be put into * $wgUploadDirectory. * If $wgUseSharedUploads is set, the wiki will look in the shared repository if * no file of the given name is found in the local repository (for [[Image:..]], * [[Media:..]] links). Thumbnails will also be looked for and generated in this * directory. * * Note that these configuration settings can now be defined on a per- * repository basis for an arbitrary number of file repositories, using the * $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 * timeout for Copy Uploads is set by wgAsyncHTTPTimeout & wgSyncHTTPTimeout */ $wgAllowCopyUploads = false; /** * Max size for uploads, in bytes. Currently only works for uploads from URL * via CURL (see $wgAllowCopyUploads). The only way to impose limits on * normal uploads is currently to edit php.ini. */ $wgMaxUploadSize = 1024*1024*100; # 100MB /** * Enable Firefogg support. Adds support for in-browser transcoding to Ogg * Theora, chunked uploads for large image files and client side hash checks. * * Ignored unless $wgEnableJS2system is true. */ $wgEnableFirefogg = true; /** * 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'; */ $wgUploadNavigationUrl = 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. * * Example: * $wgThumbnailScriptPath = "{$wgScriptPath}/thumb{$wgScriptExtension}"; */ $wgThumbnailScriptPath = false; $wgSharedThumbnailScriptPath = false; /** * Set the following to false especially if you have a set of files that need to * be accessible by all wikis, and you do not want to use the hash (path/a/aa/) * directory layout. */ $wgHashedSharedUploadDirectory = true; /** * Base URL for a repository wiki. Leave this blank if uploads are just stored * in a shared directory and not meant to be accessible through a separate wiki. * Otherwise the image description pages on the local wiki will link to the * image description page on this wiki. * * Please specify the namespace, as in the example below. */ $wgRepositoryBaseUrl = "http://commons.wikimedia.org/wiki/Image:"; # # Email settings # /** * Site admin email address * Default to wikiadmin@SERVER_NAME */ $wgEmergencyContact = 'wikiadmin@' . $wgServerName; /** * Password reminder email address * The address we should use as sender when a user is requesting his password * Default to apache@SERVER_NAME */ $wgPasswordSender = 'MediaWiki Mail '; /** * dummy address which should be accepted during mail send action * It might be necessay to adapt the address or to set it equal * to the $wgEmergencyContact address */ #$wgNoReplyAddress = $wgEmergencyContact; $wgNoReplyAddress = 'reply@not.possible'; /** * Set to true to enable the e-mail basic features: * Password reminders, etc. If sending e-mail on your * server doesn't work, you might want to disable this. */ $wgEnableEmail = true; /** * Set to true to enable user-to-user e-mail. * This can potentially be abused, as it's hard to track. */ $wgEnableUserEmail = true; /** * Set to true to put the sending user's email in a Reply-To header * 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 * when bounces are sent to the sender. */ $wgUserEmailUseReplyTo = false; /** * Minimum time, in hours, which must elapse between password reminder * emails for a given account. This is to prevent abuse by mail flooding. */ $wgPasswordReminderResendTime = 24; /** * The time, in seconds, when an emailed temporary password expires. */ $wgNewPasswordExpiry = 3600 * 24 * 7; /** * SMTP Mode * For using a direct (authenticated) SMTP server connection. * Default to false or fill an array : * * "host" => 'SMTP domain', * "IDHost" => 'domain for MessageID', * "port" => "25", * "auth" => true/false, * "username" => user, * "password" => password * */ $wgSMTP = false; /**@{ * Database settings */ /** database host name or ip address */ $wgDBserver = 'localhost'; /** database port number (for PostgreSQL) */ $wgDBport = 5432; /** name of the database */ $wgDBname = 'my_wiki'; /** */ $wgDBconnection = ''; /** Database username */ $wgDBuser = 'wikiuser'; /** Database user's password */ $wgDBpassword = ''; /** Database type */ $wgDBtype = 'mysql'; /** Separate username and password for maintenance tasks. Leave as null to use the default */ $wgDBadminuser = null; $wgDBadminpassword = null; /** Search type * Leave as null to select the default search engine for the * selected database type (eg SearchMySQL), or set to a class * name to override to a custom search engine. */ $wgSearchType = null; /** Table name prefix */ $wgDBprefix = ''; /** MySQL table options to use during installation or update */ $wgDBTableOptions = 'ENGINE=InnoDB'; /** Mediawiki schema */ $wgDBmwschema = 'mediawiki'; /** Tsearch2 schema */ $wgDBts2schema = 'public'; /** To override default SQLite data directory ($docroot/../data) */ $wgSQLiteDataDir = ''; /** Default directory mode for SQLite data directory on creation. * Note that this is different from the default directory mode used * elsewhere. */ $wgSQLiteDataDirMode = 0700; /** * Make all database connections secretly go to localhost. Fool the load balancer * thinking there is an arbitrarily large cluster of servers to connect to. * Useful for debugging. */ $wgAllDBsAreLocalhost = false; /**@}*/ /** Live high performance sites should disable this - some checks acquire giant mysql locks */ $wgCheckDBSchema = true; /** * Shared database for multiple wikis. Commonly used for storing a user table * for single sign-on. The server for this database must be the same as for the * main database. * For backwards compatibility the shared prefix is set to the same as the local * prefix, and the user table is listed in the default list of shared tables. * The user_properties table is also added so that users will continue to have their * 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 * MediaWiki's tables may have side effects if you try to share them. * EXPERIMENTAL */ $wgSharedDB = null; $wgSharedPrefix = false; # Defaults to $wgDBprefix $wgSharedTables = array( 'user', 'user_properties' ); /** * Database load balancer * This is a two-dimensional array, an array of server info structures * Fields are: * host: Host name * dbname: Default database name * user: DB user * password: DB password * type: "mysql" or "postgres" * load: ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0 * groupLoads: array of load ratios, the key is the query group name. A query may belong * to several groups, the most specific group defined here is used. * * flags: bit field * DBO_DEFAULT -- turns on DBO_TRX only if !$wgCommandLineMode (recommended) * DBO_DEBUG -- equivalent of $wgDebugDumpSql * 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) * * max lag: (optional) Maximum replication lag before a slave will taken out of rotation * max threads: (optional) Maximum number of running threads * * These and any other user-defined properties will be assigned to the mLBInfo member * variable of the Database object. * * Leave at false to use the single-server variables above. If you set this * variable, the single-server variables will generally be ignored (except * perhaps in some command-line scripts). * * The first server listed in this array (with key 0) will be the master. The * rest of the servers will be slaves. To prevent writes to your slaves due to * 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: * * SET @@read_only=1; * * 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 * our masters, and then set read_only=0 on masters at runtime. */ $wgDBservers = false; /** * Load balancer factory configuration * To set up a multi-master wiki farm, set the class here to something that * can return a LoadBalancer with an appropriate master on a call to getMainLB(). * The class identified here is responsible for reading $wgDBservers, * $wgDBserver, etc., so overriding it may cause those globals to be ignored. * * The LBFactory_Multi class is provided for this purpose, please see * includes/db/LBFactory_Multi.php for configuration information. */ $wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' ); /** How long to wait for a slave to catch up to the master */ $wgMasterWaitTimeout = 10; /** File to log database errors to */ $wgDBerrorLog = 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 */ $wgDBAvgStatusPoll = 2000; /** Set to true if using InnoDB tables */ $wgDBtransactions = false; /** Set to true for compatibility with extensions that might be checking. * MySQL 3.23.x is no longer supported. */ $wgDBmysql4 = true; /** * 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! * * 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. * Broken symptoms likely to include incorrect behavior with page titles, * usernames, comments etc containing non-ASCII characters. * Might also cause failures on the object cache and other things. * * Even correct usage may cause failures with Unicode supplementary * characters (those not in the Basic Multilingual Plane) unless MySQL * has enhanced their Unicode support. */ $wgDBmysql5 = false; /** * Other wikis on this site, can be administered from a single developer * account. * Array numeric key => database name */ $wgLocalDatabases = array(); /** @{ * Object cache settings * See Defines.php for types */ $wgMainCacheType = CACHE_NONE; $wgMessageCacheType = CACHE_ANYTHING; $wgParserCacheType = CACHE_ANYTHING; /**@}*/ $wgParserCacheExpireTime = 86400; $wgSessionsInMemcached = false; /** 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 * useful if you're doing cross-application sessions, see bug 11381) */ $wgSessionHandler = 'files'; /**@{ * Memcached-specific settings * See docs/memcached.txt */ $wgUseMemCached = false; $wgMemCachedDebug = false; ///< Will be set to false in Setup.php, if the server isn't working $wgMemCachedServers = array( '127.0.0.1:11000' ); $wgMemCachedPersistent = false; /**@}*/ /** * Set this to true to make a local copy of the message cache, for use in * addition to memcached. The files will be put in $wgCacheDirectory. */ $wgUseLocalMessageCache = false; /** * Defines format of local cache * true - Serialized object * false - PHP source file (Warning - security risk) */ $wgLocalMessageCacheSerialized = true; /** * Localisation cache configuration. Associative array with keys: * 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. * * 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. * * manualRecache: Set this to true to disable cache updates on web requests. * Use maintenance/rebuildLocalisationCache.php instead. */ $wgLocalisationCacheConf = array( 'class' => 'LocalisationCache', 'store' => 'detect', 'storeClass' => false, 'storeDirectory' => false, 'manualRecache' => false, ); # Language settings # /** Site language code, should be one of ./languages/Language(.*).php */ $wgLanguageCode = 'en'; /** * Some languages need different word forms, usually for different cases. * Used in Language::convertGrammar(). */ $wgGrammarForms = array(); #$wgGrammarForms['en']['genitive']['car'] = 'car\'s'; /** Treat language links as magic connectors, not inline links */ $wgInterwikiMagic = true; /** Hide interlanguage links from the sidebar */ $wgHideInterlanguageLinks = false; /** List of language names or overrides for default names in Names.php */ $wgExtraLanguageNames = array(); /** We speak UTF-8 all the time now, unless some oddities happen */ $wgInputEncoding = 'UTF-8'; $wgOutputEncoding = 'UTF-8'; $wgEditEncoding = ''; /** * Locale for LC_CTYPE, to work around http://bugs.php.net/bug.php?id=45132 * For Unix-like operating systems, set this to to a locale that has a UTF-8 * character set. Only the character set is relevant. */ $wgShellLocale = 'en_US.utf8'; /** * Set this to eg 'ISO-8859-1' to perform character set * conversion when loading old revisions not marked with * "utf-8" flag. Use this when converting wiki 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, user names, etc still must be converted * en masse in the database before continuing as a UTF-8 wiki. */ $wgLegacyEncoding = false; /** * If set to true, the MediaWiki 1.4 to 1.5 schema conversion will * create stub reference rows in the text table instead of copying * the full text of all current entries from 'cur' to 'text'. * * This will speed up the conversion step for large sites, but * 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; $wgMimeType = 'text/html'; $wgJsMimeType = 'text/javascript'; $wgDocType = '-//W3C//DTD XHTML 1.0 Transitional//EN'; $wgDTD = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'; $wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml'; /** * Should we output an HTML 5 doctype? This mode is still experimental, but * all indications are that it should be usable, so it's enabled by default. * If all goes well, it will be removed and become always true before the 1.16 * release. */ $wgHtml5 = 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 * screen-scraping bots, and the HTML will arguably be more readable. * * Setting this to false may omit quotation marks on some attributes, omit * slashes from some self-closing tags, omit some ending tags, etc., where * permitted by HTML 5. Setting it to true will not guarantee that all pages * will be well-formed, although non-well-formed pages should be rare and it's * a bug if you find one. Conversely, setting it to false doesn't mean that * all XML-y constructs will be omitted, just that they might be. * * Because of compatibility with screen-scraping bots, and because it's * controversial, this is currently left to true by default. */ $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: * $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg'; * Normally we wouldn't have to define this in the root * element, but IE needs it there in some circumstances. */ $wgXhtmlNamespaces = array(); /** 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; /** * For Hindi and Arabic use local numerals instead of Western style (0-9) * numerals in interface. */ $wgTranslateNumerals = true; /** * Translation using MediaWiki: namespace. * Interface messages will be loaded from the database. */ $wgUseDatabaseMessages = true; /** * Expiry time for the message cache key */ $wgMsgCacheExpiry = 86400; /** * Maximum entry size in the message cache, in bytes */ $wgMaxMsgCacheEntrySize = 10000; /** * If true, serialized versions of the messages arrays will be * read from the 'serialized' subdirectory if they are present. * Set to false to always use the Messages files, regardless of * whether they are up to date or not. */ $wgEnableSerializedMessages = true; /** * Set to false if you are thorough system admin who always remembers to keep * serialized files up to date to save few mtime calls. */ $wgCheckSerialized = true; /** Whether to enable language variant conversion. */ $wgDisableLangConversion = false; /** Whether to enable language variant conversion for links. */ $wgDisableTitleConversion = false; /** Default variant code, if false, the default will be the language code */ $wgDefaultLanguageVariant = false; /** Disabled variants array of language variant conversion. * example: * $wgDisabledVariants[] = 'zh-mo'; * $wgDisabledVariants[] = 'zh-my'; * * or: * $wgDisabledVariants = array('zh-mo', 'zh-my'); */ $wgDisabledVariants = array(); /** * Show a bar of language selection links in the user login and user * registration forms; edit the "loginlanguagelinks" message to * customise these */ $wgLoginLanguageSelector = false; /** * Whether to use zhdaemon to perform Chinese text processing * zhdaemon is under developement, so normally you don't want to * use it unless for testing */ $wgUseZhdaemon = false; $wgZhdaemonHost="localhost"; $wgZhdaemonPort=2004; # Miscellaneous configuration settings # $wgLocalInterwiki = 'w'; $wgInterwikiExpiry = 10800; # Expiry time for cache of interwiki table /** 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 */ $wgInterwikiCache = false; $wgInterwikiScopes = 3; $wgInterwikiFallbackSite = 'wiki'; /** * If local interwikis are set up which allow redirects, * set this regexp to restrict URLs which will be displayed * as 'redirected from' links. * * It might look something like this: * $wgRedirectSources = '!^https?://[a-z-]+\.wikipedia\.org/!'; * * Leave at false to avoid displaying any incoming redirect markers. * This does not affect intra-wiki redirects, which don't change * the URL. */ $wgRedirectSources = false; $wgShowIPinHeader = true; # For non-logged in users $wgMaxSigChars = 255; # Maximum number of Unicode characters in signature $wgMaxArticleSize = 2048; # Maximum article size in kilobytes # Maximum number of bytes in username. You want to run the maintenance # script ./maintenancecheckUsernames.php once you have changed this value $wgMaxNameChars = 255; $wgMaxPPNodeCount = 1000000; # A complexity limit on template expansion /** * 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 * stop the parser before it hits the xdebug limit. */ $wgMaxTemplateDepth = 40; $wgMaxPPExpandDepth = 40; /** * If true, removes (substitutes) templates in "~~~~" signatures. */ $wgCleanSignatures = true; $wgExtraSubtitle = ''; $wgSiteSupportPage = ''; # A page where you users can receive donations /** * Set this to a string to put the wiki into read-only mode. The text will be * used as an explanation to users. * * This prevents most write operations via the web interface. Cache updates may * still be possible. To prevent database writes completely, use the read_only * option in MySQL. */ $wgReadOnly = null; /*** * If this lock file exists (size > 0), the wiki will be forced into read-only mode. * Its contents will be shown to users as part of the read-only warning * message. */ $wgReadOnlyFile = false; ///< defaults to "{$wgUploadDirectory}/lock_yBgMBwiR"; /** * Filename for debug logging. See http://www.mediawiki.org/wiki/How_to_debug * The debug log file should be not be publicly accessible if it is used, as it * may contain private data. */ $wgDebugLogFile = ''; /** * Prefix for debug log lines */ $wgDebugLogPrefix = ''; /** * If true, instead of redirecting, show a page with a link to the redirect * destination. This allows for the inspection of PHP error messages, and easy * resubmission of form data. For developer use only. */ $wgDebugRedirects = false; /** * If true, log debugging data from action=raw. * 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. */ $wgDebugComments = false; /** Does nothing. Obsolete? */ $wgLogQueries = false; /** * Write SQL queries to the debug log */ $wgDebugDumpSql = false; /** * Set to an array of log group keys to filenames. * If set, wfDebugLog() output for that group will go to that file instead * of the regular $wgDebugLogFile. Useful for enabling selective logging * in production. */ $wgDebugLogGroups = array(); /** * Display debug data at the bottom of the main content area. * * Useful for developers and technical users trying to working on a closed wiki. */ $wgShowDebug = false; /** * Show the contents of $wgHooks in Special:Version */ $wgSpecialVersionShowHooks = false; /** * By default, only show the MediaWiki, PHP, Database versions. * Setting this to true will try and determine versions of all helper programs. */ $wgSpecialVersionExtended = false; /** * Whether to show "we're sorry, but there has been a database error" pages. * Displaying errors aids in debugging, but may display information useful * to an attacker. */ $wgShowSQLErrors = false; /** * If true, some error messages will be colorized when running scripts on the * command line; this can aid picking important things out when debugging. * Ignored when running on Windows or when output is redirected to a file. */ $wgColorErrors = true; /** * If set to true, uncaught exceptions will print a complete stack trace * to output. This should only be used for debugging, as it may reveal * private information in function parameters due to PHP's backtrace * formatting. */ $wgShowExceptionDetails = false; /** * If true, show a backtrace for database errors */ $wgShowDBErrorBacktrace = false; /** * Expose backend server host names through the API and various HTML comments */ $wgShowHostnames = false; /** * If set to true MediaWiki will throw notices for some possible error * conditions and for deprecated functions. */ $wgDevelopmentWarnings = false; /** * Use experimental, DMOZ-like category browser */ $wgUseCategoryBrowser = false; /** * Keep parsed pages in a cache (objectcache table, turck, or memcached) * to speed up output of the same page viewed by another user with the * same options. * * This can provide a significant speedup for medium to large pages, * so you probably want to keep it on. Extensions that conflict with the * parser cache should disable the cache on a per-page basis instead. */ $wgEnableParserCache = true; /** * Append a configured value to the parser cache and the sitenotice key so * that they can be kept separate for some class of activity. */ $wgRenderHashAppend = ''; /** * If on, the sidebar navigation links are cached for users with the * current language set. This can save a touch of load on a busy site * by shaving off extra message lookups. * * However it is also fragile: changing the site configuration, or * having a variable $wgArticlePath, can produce broken links that * don't update as expected. */ $wgEnableSidebarCache = false; /** * Expiry time for the sidebar cache, in seconds */ $wgSidebarCacheExpiry = 86400; /** * Under which condition should a page in the main namespace be counted * as a valid article? If $wgUseCommaCount is set to true, it will be * counted if it contains at least one comma. If it is set to false * (default), it will only be counted if it contains at least one [[wiki * link]]. See http://meta.wikimedia.org/wiki/Help:Article_count * * Retroactively changing this variable will not affect * the existing count (cf. maintenance/recount.sql). */ $wgUseCommaCount = false; /** * wgHitcounterUpdateFreq sets how often page counters should be updated, higher * values are easier on the database. A value of 1 causes the counters to be * updated on every hit, any higher value n cause them to update *on average* * every n hits. Should be set to either 1 or something largish, eg 1000, for * maximum efficiency. */ $wgHitcounterUpdateFreq = 1; # Basic user rights and block settings $wgSysopUserBans = true; # Allow sysops to ban logged-in users $wgSysopRangeBans = true; # Allow sysops to ban IP ranges $wgAutoblockExpiry = 86400; # Number of seconds before autoblock entries expire $wgBlockAllowsUTEdit = false; # Default setting for option on block form to allow self talkpage editing whilst blocked $wgSysopEmailBans = true; # Allow sysops to ban users from accessing Emailuser $wgBlockCIDRLimit = 16; # Blocks below the /16 set of IPs will not be allowed # Pages anonymous user may see as an array, e.g.: # array ( "Main Page", "Wikipedia:Help"); # Special:Userlogin and Special:Resetpass are always whitelisted. # 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 will remain readable. Make your upload # directory name unguessable, or use .htaccess to protect it. $wgWhitelistRead = false; /** * Should editors be required to have a validated e-mail * address before being allowed to edit? */ $wgEmailConfirmToEdit=false; /** * Permission keys given to users in each group. * All users are implicitly in the '*' group including anonymous visitors; * logged-in users are all implicitly in the 'user' group. These will be * combined with the permissions of all groups that a given user is listed * in in the user_groups table. * * Note: Don't set $wgGroupPermissions = array(); unless you know what you're * doing! This will wipe all permissions, and may mean that your users are * unable to perform certain essential tasks or access new functionality * when new permissions are introduced and default grants established. * * Functionality to make pages inaccessible has not been extensively tested * for security. Use at your own risk! * * This replaces wgWhitelistAccount and wgWhitelistEdit */ $wgGroupPermissions = array(); // 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 // Implicit group for all logged-in accounts $wgGroupPermissions['user']['move'] = true; $wgGroupPermissions['user']['move-subpages'] = true; $wgGroupPermissions['user']['move-rootuserpages'] = true; // can move root userpages //$wgGroupPermissions['user']['movefile'] = true; // Disabled for now due to possible bugs and security concerns $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']['suppressredirect'] = true; $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']['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']['trackback'] = true; $wgGroupPermissions['sysop']['upload'] = true; $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; $wgGroupPermissions['sysop']['apihighlimits'] = true; $wgGroupPermissions['sysop']['browsearchive'] = true; $wgGroupPermissions['sysop']['noratelimit'] = true; $wgGroupPermissions['sysop']['versiondetail'] = true; $wgGroupPermissions['sysop']['movefile'] = true; #$wgGroupPermissions['sysop']['mergehistory'] = true; // Permission to change users' group assignments $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']['deleterevision'] = true; // To hide usernames from users and Sysops #$wgGroupPermissions['suppress']['hideuser'] = true; // To hide revisions/log items from users and Sysops #$wgGroupPermissions['suppress']['suppressrevision'] = true; // For private suppression log access #$wgGroupPermissions['suppress']['suppressionlog'] = true; /** * The developer group is deprecated, but can be activated if need be * to use the 'lockdb' and 'unlockdb' special pages. Those require * that a lock file be defined and creatable/removable by the web * server. */ # $wgGroupPermissions['developer']['siteadmin'] = 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. * * Improperly setting this could mean that your users will be unable to perform * certain essential tasks, so use at your own risk! */ $wgRevokePermissions = array(); /** * Implicit groups, aren't shown on Special:Listusers or somewhere else */ $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: * * $wgGroupsAddToSelf = array( 'sysop' => array( 'bot' ) ); * * Implicit groups may be used for the source group, for instance: * * $wgGroupsRemoveFromSelf = array( '*' => true ); * * This allows users in the '*' group (i.e. any user) to remove themselves from * any group that they happen to be in. * */ $wgGroupsAddToSelf = array(); $wgGroupsRemoveFromSelf = array(); /** * Set of available actions that can be restricted via action=protect * You probably shouldn't change this. * Translated through restriction-* messages. */ $wgRestrictionTypes = array( 'edit', 'move' ); /** * Rights which can be required for each protection level (via action=protect) * * You can add a new protection level that requires a specific * permission by manipulating this array. The ordering of elements * dictates the order on the protection form's lists. * * '' will be ignored (i.e. unprotected) * 'sysop' is quietly rewritten to 'protect' for backwards compatibility */ $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' ); /** * Set the minimum permissions required to edit pages in each * 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. */ $wgNamespaceProtection = array(); /** * Pages in namespaces in this array can not be used as templates. * Elements must be numeric namespace ids. * Among other things, this may be useful to enforce read-restrictions * which may otherwise be bypassed by using the template machanism. */ $wgNonincludableNamespaces = array(); /** * Number of seconds an account is required to age before * it's given the implicit 'autoconfirm' group membership. * This can be used to limit privileges of new accounts. * * Accounts created by earlier versions of the software * may not have a recorded creation date, and will always * be considered to pass the age test. * * When left at 0, all registered accounts will pass. */ $wgAutoConfirmAge = 0; //$wgAutoConfirmAge = 600; // ten minutes //$wgAutoConfirmAge = 3600*24; // one day # Number of edits an account requires before it is autoconfirmed # Passing both this AND the time requirement is needed $wgAutoConfirmCount = 0; //$wgAutoConfirmCount = 50; /** * Automatically add a usergroup to any user who matches certain conditions. * The format is * array( '&' or '|' or '^', cond1, cond2, ... ) * where cond1, cond2, ... are themselves conditions; *OR* * APCOND_EMAILCONFIRMED, *OR* * array( APCOND_EMAILCONFIRMED ), *OR* * array( APCOND_EDITCOUNT, number of edits ), *OR* * array( APCOND_AGE, seconds since registration ), *OR* * array( APCOND_INGROUPS, group1, group2, ... ), *OR* * array( APCOND_ISIP, ip ), *OR* * array( APCOND_IPINRANGE, range ), *OR* * array( APCOND_AGE_FROM_EDIT, seconds since first edit ), *OR* * array( APCOND_BLOCKED ), *OR* * similar constructs defined by extensions. * * If $wgEmailAuthentication is off, APCOND_EMAILCONFIRMED will be true for any * user who has provided an e-mail address. */ $wgAutopromote = array( 'autoconfirmed' => array( '&', array( APCOND_EDITCOUNT, &$wgAutoConfirmCount ), array( APCOND_AGE, &$wgAutoConfirmAge ), ), ); /** * These settings can be used to give finer control over who can assign which * groups at Special:Userrights. Example configuration: * * // Bureaucrat can add any group * $wgAddGroups['bureaucrat'] = true; * // Bureaucrats can only remove bots and sysops * $wgRemoveGroups['bureaucrat'] = array( 'bot', 'sysop' ); * // Sysops can make bots * $wgAddGroups['sysop'] = array( 'bot' ); * // Sysops can disable other sysops in an emergency, and disable bots * $wgRemoveGroups['sysop'] = array( 'sysop', 'bot' ); */ $wgAddGroups = array(); $wgRemoveGroups = array(); /** * A list of available rights, in addition to the ones defined by the core. * For extensions only. */ $wgAvailableRights = array(); /** * Optional to restrict deletion of pages with higher revision counts * to users with the 'bigdelete' permission. (Default given to sysops.) */ $wgDeleteRevisionsLimit = 0; # Proxy scanner settings # /** * 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. * * You have been warned. */ $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/includes/proxy_check.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 */ $wgProxyList = array(); /** deprecated */ $wgProxyKey = false; /** Number of accounts each IP address may create, 0 to disable. * Requires memcached */ $wgAccountCreationThrottle = 0; # Client-side caching: /** Allow client-side caching of pages */ $wgCachePages = true; /** * Set this to current time to invalidate all prior cached pages. Affects both * client- and server-side caching. * You can get the current date on your server by using the command: * date +%Y%m%d%H%M%S */ $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. */ $wgStyleVersion = '252'; # Server-side caching: /** * This will cache static pages for non-logged-in users to reduce * database traffic on public sites. * Must set $wgShowIPinHeader = false */ $wgUseFileCache = false; /** Directory where the cached page will be saved */ $wgFileCacheDirectory = false; ///< defaults to "$wgCacheDirectory/html"; /** * 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. */ $wgUseGzip = false; /** Whether MediaWiki should send an ETag header */ $wgUseETag = false; # Email notification settings # /** For email notification on page changes */ $wgPasswordSender = $wgEmergencyContact; # true: from page editor if s/he opted-in # false: Enotif mails appear to come from $wgEmergencyContact $wgEnotifFromEditor = false; // TODO move UPO to preferences probably ? # If set to true, users get a corresponding option in their preferences and can choose to enable or disable at their discretion # If set to false, the corresponding input form on the user preference page is suppressed # It call this to be a "user-preferences-option (UPO)" $wgEmailAuthentication = true; # UPO (if this is set to false, texts referring to authentication are suppressed) $wgEnotifWatchlist = false; # UPO $wgEnotifUserTalk = false; # UPO $wgEnotifRevealEditorAddress = false; # UPO; reply-to address may be filled with page editor's address (if user allowed this in the preferences) $wgEnotifMinorEdits = true; # UPO; false: "minor edits" on pages do not trigger notification mails. # # Attention: _every_ change on a user_talk page trigger a notification mail (if the user is not yet notified) # Send a generic mail instead of a personalised mail for each user. This # always uses UTC as the time zone, and doesn't include the username. # # For pages with many users watching, this can significantly reduce mail load. # Has no effect when using sendmail rather than SMTP; $wgEnotifImpersonal = false; # Maximum number of users to mail at once when using impersonal mail. Should # match the limit on your mail server. $wgEnotifMaxRecips = 500; # Send mails via the job queue. $wgEnotifUseJobQ = false; # Use real name instead of username in e-mail "from" field $wgEnotifUseRealName = false; /** * Array of usernames who will be sent a notification email for every change which occurs on a wiki */ $wgUsersNotifiedOnAllChanges = array(); /** Show watching users in recent changes, watchlist and page history views */ $wgRCShowWatchingUsers = false; # UPO /** Show watching users in Page views */ $wgPageShowWatchingUsers = false; /** Show the amount of changed characters in recent changes */ $wgRCShowChangedSize = true; /** * If the difference between the character counts of the text * before and after the edit is below that value, the value will be * highlighted on the RC page. */ $wgRCChangedSizeThreshold = 500; /** * Show "Updated (since my last visit)" marker in RC view, watchlist and history * view for watched pages with new changes */ $wgShowUpdatedMarker = true; /** * Default cookie expiration time. Setting to 0 makes all cookies session-only. */ $wgCookieExpiration = 30*86400; /** Clock skew or the one-second resolution of time() can occasionally cause cache * problems when the user requests two pages within a short period of time. This * variable adds a given number of seconds to vulnerable timestamps, thereby giving * a grace period. */ $wgClockSkewFudge = 5; # Squid-related settings # /** Enable/disable Squid */ $wgUseSquid = false; /** If you run Squid3 with ESI support, enable this (default:false): */ $wgUseESI = false; /** Send X-Vary-Options header for better caching (requires patched Squid) */ $wgUseXVO = false; /** Internal server name as known to Squid, if different */ # $wgInternalServer = 'http://yourinternal.tld:8000'; $wgInternalServer = $wgServer; /** * Cache timeout for the squid, will be sent as s-maxage (without ESI) or * Surrogate-Control (with ESI). Without ESI, you should strip out s-maxage in * the Squid config. 18000 seconds = 5 hours, more cache hits with 2678400 = 31 * days */ $wgSquidMaxage = 18000; /** * Default maximum age for raw CSS/JS accesses */ $wgForcedRawSMaxage = 300; /** * List of proxy servers to purge on changes; default port is 80. Use IP addresses. * * When MediaWiki is running behind a proxy, it will trust X-Forwarded-For * headers sent/modified from these proxies when obtaining the remote IP address * * For a list of trusted servers which *aren't* purged, see $wgSquidServersNoPurge. */ $wgSquidServers = array(); /** * As above, except these servers aren't purged on page changes; use to set a * list of trusted proxies, etc. */ $wgSquidServersNoPurge = array(); /** Maximum number of titles to purge in any one client operation */ $wgMaxSquidPurgeTitles = 400; /** HTCP multicast purging */ $wgHTCPPort = 4827; $wgHTCPMulticastTTL = 1; # $wgHTCPMulticastAddress = "224.0.0.85"; $wgHTCPMulticastAddress = false; /** Should forwarded Private IPs be accepted? */ $wgUsePrivateIPs = false; # Cookie settings: # /** * Set to set an explicit domain on the login cookies eg, "justthis.domain. org" * or ".any.subdomain.net" */ $wgCookieDomain = ''; $wgCookiePath = '/'; $wgCookieSecure = ($wgProto == 'https'); $wgDisableCookieCheck = false; /** * Set $wgCookiePrefix to use a custom one. Setting to false sets the default of * using the database name. */ $wgCookiePrefix = false; /** * Set authentication cookies to HttpOnly to prevent access by JavaScript, * in browsers that support this feature. This can mitigates some classes of * XSS attack. * * Only supported on PHP 5.2 or higher. */ $wgCookieHttpOnly = version_compare("5.2", PHP_VERSION, "<"); /** * If the requesting browser matches a regex in this blacklist, we won't * send it cookies with HttpOnly mode, even if $wgCookieHttpOnly is on. */ $wgHttpOnlyBlacklist = array( // Internet Explorer for Mac; sometimes the cookies work, sometimes // they don't. It's difficult to predict, as combinations of path // and expiration options affect its parsing. '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/', ); /** A list of cookies that vary the cache (for use by extensions) */ $wgCacheVaryCookies = array(); /** Override to customise the session name */ $wgSessionName = false; /** Whether to allow inline image pointing to other websites */ $wgAllowExternalImages = false; /** If the above is false, you can specify an exception here. Image URLs * that start with this string are then rendered, while all others are not. * 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: * $wgAllowExternalImagesFrom = 'http://127.0.0.1/'; * $wgAllowExternalImagesFrom = array( 'http://127.0.0.1/', 'http://example.com' ); */ $wgAllowExternalImagesFrom = ''; /** If $wgAllowExternalImages is false, you can allow an on-wiki * whitelist of regular expression fragments to match the image URL * against. If the image matches one of the regular expression fragments, * The image will be displayed. * * Set this to true to enable the on-wiki whitelist (MediaWiki:External image whitelist) * Or false to disable it */ $wgEnableImageWhitelist = true; /** Allows to move images and other media files */ $wgAllowImageMoving = true; /** Disable database-intensive features */ $wgMiserMode = false; /** Disable all query pages if miser mode is on, not just some */ $wgDisableQueryPages = false; /** Number of rows to cache in 'querycache' table when miser mode is on */ $wgQueryCacheLimit = 1000; /** Number of links to a page required before it is deemed "wanted" */ $wgWantedPagesThreshold = 1; /** Enable slow parser functions */ $wgAllowSlowParserFunctions = false; /** * Maps jobs to their handling classes; extensions * can add to this to provide custom jobs */ $wgJobClasses = array( 'refreshLinks' => 'RefreshLinksJob', 'refreshLinks2' => 'RefreshLinksJob2', 'htmlCacheUpdate' => 'HTMLCacheUpdateJob', 'html_cache_update' => 'HTMLCacheUpdateJob', // backwards-compatible 'sendMail' => 'EmaillingJob', 'enotifNotify' => 'EnotifNotifyJob', 'fixDoubleRedirect' => 'DoubleRedirectJob', ); /** * Additional functions to be performed with updateSpecialPages. * Expensive Querypages are already updated. */ $wgSpecialPageCacheUpdates = array( 'Statistics' => array('SiteStatsUpdate','cacheUpdate') ); /** * To use inline TeX, you need to compile 'texvc' (in the 'math' subdirectory of * the MediaWiki package and have latex, dvips, gs (ghostscript), andconvert * (ImageMagick) installed and available in the PATH. * Please see math/README for more information. */ $wgUseTeX = false; /** Location of the texvc binary */ $wgTexvc = './math/texvc'; /** * Normally when generating math images, we double-check that the * directories we want to write to exist, and that files that have * been generated still exist when we need to bring them up again. * * This lets us give useful error messages in case of permission * problems, and automatically rebuild images that have been lost. * * On a big site with heavy NFS traffic this can be slow and flaky, * so sometimes we want to short-circuit it by setting this to false. */ $wgMathCheckFiles = true; # # Profiling / debugging # # You have to create a 'profiling' table in your database before using # profiling see maintenance/archives/patch-profiling.sql . # # To enable profiling, edit StartProfiler.php /** Only record profiling info for pages that took longer than this */ $wgProfileLimit = 0.0; /** Don't put non-profiling info into log file */ $wgProfileOnly = false; /** Log sums from profiling into "profiling" table in db. */ $wgProfileToDatabase = false; /** If true, print a raw call tree instead of per-function report */ $wgProfileCallTree = false; /** Should application server host be put into profiling table */ $wgProfilePerHost = false; /** Settings for UDP profiler */ $wgUDPProfilerHost = '127.0.0.1'; $wgUDPProfilerPort = '3811'; /** Detects non-matching wfProfileIn/wfProfileOut calls */ $wgDebugProfiling = false; /** Output debug message on every wfProfileIn/wfProfileOut */ $wgDebugFunctionEntry = 0; /** Lots of debugging output from SquidUpdate.php */ $wgDebugSquid = false; /* * Destination for wfIncrStats() data... * 'cache' to go into the system cache, if enabled (memcached) * 'udp' to be sent to the UDP profiler (see $wgUDPProfilerHost) * false to disable */ $wgStatsMethod = 'cache'; /** Whereas to count the number of time an article is viewed. * Does not work if pages are cached (for example with squid). */ $wgDisableCounters = false; $wgDisableTextSearch = false; $wgDisableSearchContext = false; /** * Set to true to have nicer highligted text in search results, * by default off due to execution overhead */ $wgAdvancedSearchHighlighting = false; /** * Regexp to match word boundaries, defaults for non-CJK languages * should be empty for CJK since the words are not separate */ $wgSearchHighlightBoundaries = version_compare("5.1", PHP_VERSION, "<")? '[\p{Z}\p{P}\p{C}]' : '[ ,.;:!?~!@#$%\^&*\(\)+=\-\\|\[\]"\'<>\n\r\/{}]'; // PHP 5.0 workaround /** * Set to true to have the default MySQL search engine count total * search matches to present in the Special:Search UI. * * This could however be slow on larger wikis, and is pretty flaky * with the current title vs content split. Recommend avoiding until * that's been worked out cleanly; but this may aid in testing the * search UI and API to confirm that the result count works. */ $wgSearchMySQLTotalHits = false; /** * Template for OpenSearch suggestions, defaults to API action=opensearch * * Sites with heavy load would tipically have these point to a custom * PHP wrapper to avoid firing up mediawiki for every keystroke * * Placeholders: {searchTerms} * */ $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. */ $wgEnableOpenSearchSuggest = true; /** * 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; /** Uploads have to be specially set up to be secure */ $wgEnableUploads = false; /** * 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 folloing lines to the * "Windows extensions" section of php.ini: * * extension=extensions/php_mbstring.dll * extension=extensions/php_exif.dll */ $wgShowEXIF = function_exists( 'exif_read_data' ); /** * Set to true to enable the upload _link_ while local uploads are disabled. * Assumes that the special page link will be bounced to another server where * uploads do work. */ $wgRemoteUploads = false; /** * Disable links to talk pages of anonymous users (IPs) in listings on special * pages like page history, Special:Recentchanges, etc. */ $wgDisableAnonTalk = false; /** * Do DELETE/INSERT for link updates instead of incremental */ $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; /** * Path to the GNU diff3 utility. If the file doesn't exist, edit conflicts will * fall back to the old behaviour (no merging). */ $wgDiff3 = '/usr/bin/diff3'; /** * Path to the GNU diff utility. */ $wgDiff = '/usr/bin/diff'; /** * We can also compress text stored in the 'text' table. If this is set on, new * revisions will be compressed on page save if zlib support is available. Any * compressed revisions will be decompressed on load regardless of this setting * *but will not be readable at all* if zlib support is not available. */ $wgCompressRevisions = false; /** * This is the list of preferred extensions for uploading files. Uploading files * with extensions not in this list will trigger a warning. */ $wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' ); /** Files with these extensions will never be allowed as uploads. */ $wgFileBlacklist = array( # HTML may contain cookie-stealing JavaScript and web bugs 'html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht', # PHP scripts may execute arbitrary code on the server 'php', 'phtml', 'php3', 'php4', 'php5', 'phps', # Other types that may be interpreted by some servers 'shtml', 'jhtml', 'pl', 'py', 'cgi', # May contain harmful executables for Windows victims 'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' ); /** Files with these mime types will never be allowed as uploads * if $wgVerifyMimeType is enabled. */ $wgMimeTypeBlacklist= array( # HTML may contain cookie-stealing JavaScript and web bugs '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 'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh', # Client-side hazards on Internet Explorer 'text/scriptlet', 'application/x-msdownload', # Windows metafile, client-side vulnerability on some systems 'application/x-msmetafile', # A ZIP file may be a valid Java archive containing an applet which exploits the # same-origin policy to steal cookies 'application/zip', ); /** This is a flag to determine whether or not to check file extensions on upload. */ $wgCheckFileExtensions = true; /** * If this is turned off, users may override the warning for files not covered * by $wgFileExtensions. */ $wgStrictFileExtensions = true; /** Warn if uploaded files are larger than this (in bytes), or false to disable*/ $wgUploadSizeWarning = false; /** For compatibility with old installations set to false */ $wgPasswordSalt = true; /** Which namespaces should support subpages? * 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_MEDIAWIKI_TALK => true, NS_TEMPLATE_TALK => true, NS_HELP_TALK => true, NS_CATEGORY_TALK => true ); $wgNamespacesToBeSearchedDefault = array( NS_MAIN => true, ); /** * Namespaces to be searched when user clicks the "Help" tab * on Special:Search * * Same format as $wgNamespacesToBeSearchedDefault */ $wgNamespacesToBeSearchedHelp = array( NS_PROJECT => true, NS_HELP => true, ); /** * If set to true the 'searcheverything' preference will be effective only for logged-in users. * Useful for big wikis to maintain different search profiles for anonymous and logged-in users. * */ $wgSearchEverythingOnlyLoggedIn = false; /** * Site notice shown at the top of each page * * MediaWiki:Sitenotice page, which will override this. You can also * provide a separate message for logged-out users using the * MediaWiki:Anonnotice page. */ $wgSiteNotice = ''; # # Images settings # /** * Plugins for media file type handling. * Each entry in the array maps a MIME type to a class name */ $wgMediaHandlers = array( 'image/jpeg' => 'BitmapHandler', 'image/png' => 'BitmapHandler', 'image/gif' => 'GIFHandler', 'image/tiff' => 'TiffHandler', 'image/x-ms-bmp' => 'BmpHandler', 'image/x-bmp' => 'BmpHandler', 'image/svg+xml' => 'SvgHandler', // official 'image/svg' => 'SvgHandler', // compat 'image/vnd.djvu' => 'DjVuHandler', // official 'image/x.djvu' => 'DjVuHandler', // compat 'image/x-djvu' => 'DjVuHandler', // compat ); /** * Resizing can be done using PHP's internal image libraries or using * ImageMagick or another third-party converter, e.g. GraphicMagick. * These support more file formats than PHP, which only supports PNG, * GIF, JPG, XBM and WBMP. * * Use Image Magick instead of PHP builtin functions. */ $wgUseImageMagick = false; /** The convert command shipped with ImageMagick */ $wgImageMagickConvertCommand = '/usr/bin/convert'; /** Sharpening parameter to ImageMagick */ $wgSharpenParameter = '0x0.4'; /** Reduction in linear dimensions below which sharpening will be enabled */ $wgSharpenReductionThreshold = 0.85; /** * Temporary directory used for ImageMagick. The directory must exist. Leave * this set to false to let ImageMagick decide for itself. */ $wgImageMagickTempDir = false; /** * Use another resizing converter, e.g. GraphicMagick * %s will be replaced with the source path, %d with the destination * %w and %h will be replaced with the width and height * * An example is provided for GraphicMagick * Leave as false to skip this */ #$wgCustomConvertCommand = "gm convert %s -resize %wx%h %d" $wgCustomConvertCommand = false; # Scalable Vector Graphics (SVG) may be uploaded as images. # Since SVG support is not yet standard in browsers, it is # necessary to rasterize SVGs to PNG as a fallback format. # # An external program is required to perform this conversion: $wgSVGConverters = array( 'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output', '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', 'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output', ); /** Pick one of the above */ $wgSVGConverter = 'ImageMagick'; /** If not in the executable PATH, specify */ $wgSVGConverterPath = ''; /** Don't scale a SVG larger than this */ $wgSVGMaxSize = 2048; /** * Don't thumbnail an image if it will use too much working memory * Default is 50 MB if decompressed to RGBA form, which corresponds to * 12.5 million pixels or 3500x3500 */ $wgMaxImageArea = 1.25e7; /** * Force thumbnailing of animated GIFs above this size to a single * frame instead of an animated thumbnail. ImageMagick seems to * get real unhappy and doesn't play well with resource limits. :P * Defaulting to 1 megapixel (1000x1000) */ $wgMaxAnimatedGifArea = 1.0e6; /** * Browsers don't support TIFF inline generally... * For inline display, we need to convert to PNG or JPEG. * Note scaling should work with ImageMagick, but may not with GD scaling. * // 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' ); */ $wgTiffThumbnailType = false; /** * If rendered thumbnail files are older than this timestamp, they * will be rerendered on demand as if the file didn't already exist. * Update if there is some need to force thumbs and SVG rasterizations * to rerender, such as fixes to rendering bugs. */ $wgThumbnailEpoch = '20030516000000'; /** * If set, inline scaled images will still produce tags ready for * output instead of showing an error message. * * This may be useful if errors are transitory, especially if the site * is configured to automatically render thumbnails on request. * * On the other hand, it may obscure error conditions from debugging. * Enable the debug log or the 'thumbnail' log group to make sure errors * are logged to a file for review. */ $wgIgnoreImageErrors = false; /** * Allow thumbnail rendering on page view. If this is false, a valid * thumbnail URL is still output, but no file will be created at * the target location. This may save some time if you have a * thumb.php or 404 handler set up which is faster than the regular * webserver(s). */ $wgGenerateThumbnailOnParse = true; /** * Show thumbnails for old images on the image description page */ $wgShowArchiveThumbnails = true; /** Obsolete, always true, kept for compatibility with extensions */ $wgUseImageResize = true; /** Set $wgCommandLineMode if it's not set already, to avoid notices */ if( !isset( $wgCommandLineMode ) ) { $wgCommandLineMode = false; } /** For colorized maintenance script output, is your terminal background dark ? */ $wgCommandLineDarkBg = false; /** * Array for extensions to register their maintenance scripts with the * system. The key is the name of the class and the value is the full * path to the file */ $wgMaintenanceScripts = array(); # # Recent changes settings # /** Log IP addresses in the recentchanges table; can be accessed only by extensions (e.g. CheckUser) or a DB admin */ $wgPutIPinRC = true; /** * Recentchanges items are periodically purged; entries older than this many * seconds will go. * Default: 13 weeks = about three months */ $wgRCMaxAge = 13 * 7 * 24 * 3600; /** * Filter $wgRCLinkDays by $wgRCMaxAge to avoid showing links for numbers higher than what will be stored. * Note that this is disabled by default because we sometimes do have RC data which is beyond the limit * for some reason, and some users may use the high numbers to display that data which is still there. */ $wgRCFilterByAge = false; /** * List of Days and Limits options to list in the Special:Recentchanges and Special:Recentchangeslinked pages. */ $wgRCLinkLimits = array( 50, 100, 250, 500 ); $wgRCLinkDays = array( 1, 3, 7, 14, 30 ); /** * Send recent changes updates via UDP. The updates will be formatted for IRC. * Set this to the IP address of the receiver. */ $wgRC2UDPAddress = false; /** * Port number for RC updates */ $wgRC2UDPPort = false; /** * Prefix to prepend to each UDP packet. * This can be used to identify the wiki. A script is available called * mxircecho.py which listens on a UDP port, and uses a prefix ending in a * tab to identify the IRC channel to send the log line to. */ $wgRC2UDPPrefix = ''; /** * If this is set to true, $wgLocalInterwiki will be prepended to links in the * IRC feed. If this is set to a string, that string will be used as the prefix. */ $wgRC2UDPInterwikiPrefix = false; /** * Set to true to omit "bot" edits (by users with the bot permission) from the * UDP feed. */ $wgRC2UDPOmitBots = false; /** * Enable user search in Special:Newpages * This is really a temporary hack around an index install bug on some Wikipedias. * Kill it once fixed. */ $wgEnableNewpagesUserFilter = true; /** * Whether to use metadata edition * This will put categories, language links and allowed templates in a separate text box * while editing pages * EXPERIMENTAL */ $wgUseMetadataEdit = false; /** Full name (including namespace) of the page containing templates names that will be allowed as metadata */ $wgMetadataWhitelist = ''; # # Copyright and credits settings # /** RDF metadata toggles */ $wgEnableDublinCoreRdf = false; $wgEnableCreativeCommonsRdf = false; /** Override for copyright metadata. * TODO: these options need documentation */ $wgRightsPage = NULL; $wgRightsUrl = NULL; $wgRightsText = NULL; $wgRightsIcon = NULL; /** Set this to some HTML to override the rights icon with an arbitrary logo */ $wgCopyrightIcon = NULL; /** Set this to true if you want detailed copyright information forms on Upload. */ $wgUseCopyrightUpload = false; /** Set this to false if you want to disable checking that detailed copyright * information values are not empty. */ $wgCheckCopyrightUpload = true; /** * Set this to the number of authors that you want to be credited below an * article text. Set it to zero to hide the attribution block, and a negative * number (like -1) to show all authors. Note that this will require 2-3 extra * database hits, which can have a not insignificant impact on performance for * large wikis. */ $wgMaxCredits = 0; /** If there are more than $wgMaxCredits authors, show $wgMaxCredits of them. * Otherwise, link to a separate credits page. */ $wgShowCreditsIfMax = true; /** * 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 * 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. */ $wgCapitalLinks = true; /** * @since 1.16 - This can now be set per-namespace. Some special namespaces (such * as Special, see MWNamespace::$alwaysCapitalizedNamespaces for the full list) must be * true by default (and setting them has no effect), due to various things that * require them to be so. Also, since Talk namespaces need to directly mirror their * 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; */ $wgCapitalLinkOverrides = array(); /** * List of interwiki prefixes for wikis we'll accept as sources for * Special:Import (for sysops). Since complete page history can be imported, * these should be 'trusted'. * * If a user has the 'import' permission but not the 'importupload' permission, * they will only be able to run imports through this transwiki interface. */ $wgImportSources = array(); /** * Optional default target namespace for interwiki imports. * Can use this to create an incoming "transwiki"-style queue. * Set to numeric key, not the name. * * Users may override this in the Special:Import dialog. */ $wgImportTargetNamespace = null; /** * If set to false, disables the full-history option on Special:Export. * This is currently poorly optimized for long edit histories, so is * disabled on Wikimedia's sites. */ $wgExportAllowHistory = true; /** * If set nonzero, Special:Export requests for history of pages with * more revisions than this will be rejected. On some big sites things * could get bogged down by very very long pages. */ $wgExportMaxHistory = 0; /** * Return distinct author list (when not returning full history) */ $wgExportAllowListContributors = false ; /** * If non-zero, Special:Export accepts a "pagelink-depth" parameter * up to this specified level, which will cause it to include all * pages linked to from the pages you specify. Since this number * 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. */ $wgExportMaxLinkDepth = 0; /** * Whether to allow the "export all pages in namespace" option */ $wgExportFromNamespaces = false; /** * Edits matching these regular expressions in body text * will be recognised as spam and rejected automatically. * * 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 / */ $wgSpamRegex = array(); /** Same as the above except for edit summaries */ $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 * * For a complete example, have a look at the SpamBlacklist extension. */ $wgFilterCallback = false; /** Go button goes straight to the edit screen if the article doesn't exist. */ $wgGoToEdit = false; /** Allow raw, unchecked HTML in ... sections. * THIS IS VERY DANGEROUS on a publically editable site, so USE wgGroupPermissions * TO RESTRICT EDITING to only those that you trust */ $wgRawHtml = false; /** * $wgUseTidy: use tidy to make sure HTML output is sane. * Tidy is a free tool that fixes broken HTML. * See http://www.w3.org/People/Raggett/tidy/ * $wgTidyBin should be set to the path of the binary and * $wgTidyConf to the path of the configuration file. * $wgTidyOpts can include any number of parameters. * * $wgTidyInternal controls the use of the PECL extension to use an in- * process tidy library instead of spawning a separate program. * Normally you shouldn't need to override the setting except for * debugging. To install, use 'pear install tidy' and add a line * 'extension=tidy.so' to php.ini. */ $wgUseTidy = false; $wgAlwaysUseTidy = false; $wgTidyBin = 'tidy'; $wgTidyConf = $IP.'/includes/tidy.conf'; $wgTidyOpts = ''; $wgTidyInternal = extension_loaded( 'tidy' ); /** * Put tidy warnings in HTML comments * Only works for internal tidy. */ $wgDebugTidy = false; /** * Validate the overall output using tidy and refuse * to display the page if it's not valid. */ $wgValidateAllHtml = false; /** See list of skins and their symbolic names in languages/Language.php */ $wgDefaultSkin = 'monobook'; /** * Should we allow the user's to select their own skin that will override the default? * @deprecated in 1.16, use $wgHiddenPrefs[] = 'skin' to disable it */ $wgAllowUserSkin = true; /** * Optionally, we can specify a stylesheet to use for media="handheld". * This is recognized by some, but not all, handheld/mobile/PDA browsers. * If left empty, compliant handheld browsers won't pick up the skin * stylesheet, which is specified for 'screen' media. * * Can be a complete URL, base-relative path, or $wgStylePath-relative path. * Try 'chick/main.css' to apply the Chick styles to the MonoBook HTML. * * Will also be switched in when 'handheld=yes' is added to the URL, like * the 'printable=yes' mode for print media. */ $wgHandheldStyle = false; /** * If set, 'screen' and 'handheld' media specifiers for stylesheets are * transformed such that they apply to the iPhone/iPod Touch Mobile Safari, * which doesn't recognize 'handheld' but does support media queries on its * screen size. * * Consider only using this if you have a *really good* handheld stylesheet, * as iPhone users won't have any way to disable it and use the "grown-up" * styles instead. */ $wgHandheldForIPhone = false; /** * Settings added to this array will override the default globals for the user * preferences used by anonymous visitors and newly created accounts. * For instance, to disable section editing links: * $wgDefaultUserOptions ['editsection'] = 0; * */ $wgDefaultUserOptions = array( 'quickbar' => 1, 'underline' => 2, 'cols' => 80, 'rows' => 25, 'searchlimit' => 20, 'contextlines' => 5, 'contextchars' => 50, 'disablesuggest' => 0, 'skin' => false, 'math' => 1, 'usenewrc' => 0, 'rcdays' => 7, 'rclimit' => 50, 'wllimit' => 250, 'hideminor' => 0, 'hidepatrolled' => 0, 'newpageshidepatrolled' => 0, 'highlightbroken' => 1, 'stubthreshold' => 0, 'previewontop' => 1, 'previewonfirst' => 0, 'editsection' => 1, 'editsectiononrightclick' => 0, 'editondblclick' => 0, 'editwidth' => 0, 'showtoc' => 1, 'showtoolbar' => 1, 'minordefault' => 0, 'date' => 'default', 'imagesize' => 2, 'thumbsize' => 2, 'rememberpassword' => 0, 'nocache' => 0, 'diffonly' => 0, 'showhiddencats' => 0, 'norollbackdiff' => 0, 'enotifwatchlistpages' => 0, 'enotifusertalkpages' => 1, 'enotifminoredits' => 0, 'enotifrevealaddr' => 0, 'shownumberswatching' => 1, 'fancysig' => 0, 'externaleditor' => 0, 'externaldiff' => 0, 'forceeditsummary' => 0, 'showjumplinks' => 1, 'justify' => 0, 'numberheadings' => 0, 'uselivepreview' => 0, 'watchlistdays' => 3.0, 'extendwatchlist' => 0, 'watchlisthideminor' => 0, 'watchlisthidebots' => 0, 'watchlisthideown' => 0, 'watchlisthideanons' => 0, 'watchlisthideliu' => 0, 'watchlisthidepatrolled' => 0, 'watchcreations' => 0, 'watchdefault' => 0, 'watchmoves' => 0, 'watchdeletion' => 0, 'noconvertlink' => 0, 'gender' => 'unknown', 'ccmeonemails' => 0, 'disablemail' => 0, 'editfont' => 'default', ); /** * Whether or not to allow and use real name fields. * @deprecated in 1.16, use $wgHiddenPrefs[] = 'realname' below to disable real * names */ $wgAllowRealName = true; /** An array of preferences to not show for the user */ $wgHiddenPrefs = array(); /***************************************************************************** * Extensions */ /** * A list of callback functions which are called once MediaWiki is fully initialised */ $wgExtensionFunctions = array(); /** * Extension functions for initialisation of skins. This is called somewhat earlier * than $wgExtensionFunctions. */ $wgSkinExtensionFunctions = array(); /** * Extension messages files. * * Associative array mapping extension name to the filename where messages can be * found. The file should contain variable assignments. Any of the variables * present in languages/messages/MessagesEn.php may be defined, but $messages * is the most common. * * Variables defined in extensions will override conflicting variables defined * in the core. * * Example: * $wgExtensionMessagesFiles['ConfirmEdit'] = dirname(__FILE__).'/ConfirmEdit.i18n.php'; * */ $wgExtensionMessagesFiles = array(); /** * Aliases for special pages provided by extensions. * @deprecated Use $specialPageAliases in a file referred to by $wgExtensionMessagesFiles */ $wgExtensionAliasesFiles = array(); /** * Parser output hooks. * This is an associative array where the key is an extension-defined tag * (typically the extension name), and the value is a PHP callback. * These will be called as an OutputPageParserOutput hook, if the relevant * tag has been registered with the parser output object. * * Registration is done with $pout->addOutputHook( $tag, $data ). * * The callback has the form: * function outputHook( $outputPage, $parserOutput, $data ) { ... } */ $wgParserOutputHooks = array(); /** * List of valid skin names. * The key should be the name in all lower case, the value should be a display name. * The default skins will be added later, by Skin::getSkinNames(). Use * Skin::getSkinNames() as an accessor if you wish to have access to the full list. */ $wgValidSkinNames = array(); /** * Special page list. * See the top of SpecialPage.php for documentation. */ $wgSpecialPages = array(); /** * Array mapping class names to filenames, for autoloading. */ $wgAutoloadClasses = array(); /* * Array mapping JavaScript class to web path for use by the script loader. * This is populated in AutoLoader.php. */ $wgJSAutoloadClasses = array(); /* * boolean; if the script loader should be used to group all javascript requests. * more about the script loader: http://www.mediawiki.org/wiki/ScriptLoader * * (its recommended you DO NOT enable the script loader without also enabling $wgUseFileCache * (or have mediaWiki behind a proxy) otherwise all new js requests will result in script server js processing. */ $wgEnableScriptLoader = false; /* * $wgScriptModifiedCheck should run a file modified check on javascript files when * generating unique request ids for javascript include using the script-loader * * note this will only check core scripts that are directly included on the page. * (not scripts loaded after the initial page display since after initial page * display scripts inherit the unique request id) * * and or you can update $wgStyleVersion */ $wgScriptModifiedFileCheck = true; /* * $wgScriptModifiedMsgCheck Checks MediaWiki NS for latest * Revision for generating the request id. * */ $wgScriptModifiedMsgCheck = false; /* * enable js2 Script System * if enabled we include jquery, mv_embed and js2 versions of editPage.js */ $wgEnableJS2system = false; /* * enable api iframe proxy */ $wgEnableIframeApiProxy = false; /* * boolean; if we should enable javascript localization (it loads loadGM json * call with mediaWiki msgs) */ $wgEnableScriptLocalization = true; /* * path for mwEmbed normally js2/mwEmbed/ */ $wgMwEmbedDirectory = "js2/mwEmbed/"; /* * Turn on debugging for the javascript script-loader & forces fresh copies * of javascript */ $wgDebugJavaScript = false; /** * An array of extension types and inside that their names, versions, authors, * urls, descriptions and pointers to localized description msgs. Note that * the version, url, description and descriptionmsg key can be omitted. * * * $wgExtensionCredits[$type][] = array( * 'name' => 'Example extension', * 'version' => 1.9, * 'path' => __FILE__, * 'author' => 'Foo Barstein', * 'url' => 'http://wwww.example.com/Example%20Extension/', * 'description' => 'An example extension', * 'descriptionmsg' => 'exampleextension-desc', * ); * * * 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, ... ), */ $wgExtensionCredits = array(); /* * end extensions ******************************************************************************/ /** * Allow user Javascript page? * This enables a lot of neat customizations, but may * increase security risk to users and server load. */ $wgAllowUserJs = false; /** * Allow user Cascading Style Sheets (CSS)? * This enables a lot of neat customizations, but may * increase security risk to users and server load. */ $wgAllowUserCss = false; /** Use the site's Javascript page? */ $wgUseSiteJs = true; /** Use the site's Cascading Style Sheets (CSS)? */ $wgUseSiteCss = true; /** * Filter for Special:Randompage. Part of a WHERE clause * @deprecated as of 1.16, use the SpecialRandomGetRandomTitle hook */ $wgExtraRandompageSQL = false; /** Allow the "info" action, very inefficient at the moment */ $wgAllowPageInfo = false; /** Maximum indent level of toc. */ $wgMaxTocLevel = 999; /** Name of the external diff engine to use */ $wgExternalDiffEngine = false; /** Use RC Patrolling to check for vandalism */ $wgUseRCPatrol = true; /** Use new page patrolling to check new pages on Special:Newpages */ $wgUseNPPatrol = true; /** Provide syndication feeds (RSS, Atom) for, e.g., Recentchanges, Newpages */ $wgFeed = true; /** Set maximum number of results to return in syndication feeds (RSS, Atom) for * eg Recentchanges, Newpages. */ $wgFeedLimit = 50; /** _Minimum_ timeout for cached Recentchanges feed, in seconds. * A cached version will continue to be served out even if changes * are made, until this many seconds runs out since the last render. * * If set to 0, feed caching is disabled. Use this for debugging only; * feed generation can be pretty slow with diffs. */ $wgFeedCacheTimeout = 60; /** When generating Recentchanges RSS/Atom feed, diffs will not be generated for * pages larger than this size. */ $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'. */ $wgOverrideSiteFeed = array(); /** * Additional namespaces. If the namespaces defined in Language.php and * Namespace.php are insufficient, you can create new ones here, for example, * to import Help files in other languages. * PLEASE NOTE: 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. */ #$wgExtraNamespaces = # array(100 => "Hilfe", # 101 => "Hilfe_Diskussion", # 102 => "Aide", # 103 => "Discussion_Aide" # ); $wgExtraNamespaces = NULL; /** * 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: * $wgNamespaceAliases = array( * 'Wikipedian' => NS_USER, * 'Help' => 100, * ); */ $wgNamespaceAliases = array(); /** * Limit images on image description pages to a user-selectable limit. In order * to reduce disk usage, limits can only be selected from a list. * The user preference is saved as an array offset in the database, by default * the offset is set with $wgDefaultUserOptions['imagesize']. Make sure you * change it if you alter the array (see bug 8858). * This is the list of settings the user can choose from: */ $wgImageLimits = array ( array(320,240), array(640,480), array(800,600), array(1024,768), array(1280,1024), array(10000,10000) ); /** * Adjust thumbnails on image pages according to a user setting. In order to * reduce disk usage, the values can only be selected from a list. This is the * list of settings the user can choose from: */ $wgThumbLimits = array( 120, 150, 180, 200, 250, 300 ); /** * Adjust width of upright images when parameter 'upright' is used * This allows a nicer look for upright images without the need to fix the width * by hardcoded px in wiki sourcecode. */ $wgThumbUpright = 0.75; /** * On category pages, show thumbnail gallery for images belonging to that * category instead of listing them as articles. */ $wgCategoryMagicGallery = true; /** * Paging limit for categories */ $wgCategoryPagingLimit = 200; /** * Should the default category sortkey be the prefixed title? * Run maintenance/refreshLinks.php after changing this. */ $wgCategoryPrefixedDefaultSortkey = true; /** * Browser Blacklist for unicode non compliant browsers * Contains a list of regexps : "/regexp/" matching problematic browsers */ $wgBrowserBlackList = array( /** * Netscape 2-4 detection * The minor version may contain strings such as "Gold" or "SGoldC-SGI" * Lots of non-netscape user agents have "compatible", so it's useful to check for that * with a negative assertion. The [UIN] identifier specifies the level of security * in a Netscape/Mozilla browser, checking for it rules out a number of fakers. * The language string is unreliable, it is missing on NS4 Mac. * * Reference: http://www.psychedelix.com/agents/index.shtml */ '/^Mozilla\/2\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', '/^Mozilla\/3\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', '/^Mozilla\/4\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', /** * MSIE on Mac OS 9 is teh sux0r, converts þ to , ð to , Þ to and Ð to * * Known useragents: * - Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) * - Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC) * - Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) * - [...] * * @link http://en.wikipedia.org/w/index.php?title=User%3A%C6var_Arnfj%F6r%F0_Bjarmason%2Ftestme&diff=12356041&oldid=12355864 * @link http://en.wikipedia.org/wiki/Template%3AOS9 */ '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/', /** * Google wireless transcoder, seems to eat a lot of chars alive * http://it.wikipedia.org/w/index.php?title=Luciano_Ligabue&diff=prev&oldid=8857361 */ '/^Mozilla\/4\.0 \(compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;\)/' ); /** * Fake out the timezone that the server thinks it's in. This will be used for * date display and not for what's stored in the DB. Leave to null to retain * your server's OS-based timezone value. This is the same as the timezone. * * This variable is currently used ONLY for signature formatting, not for * anything else. * * Timezones can be translated by editing MediaWiki messages of type * timezone-nameinlowercase like timezone-utc. */ # $wgLocaltimezone = 'GMT'; # $wgLocaltimezone = 'PST8PDT'; # $wgLocaltimezone = 'Europe/Sweden'; # $wgLocaltimezone = 'CET'; $wgLocaltimezone = null; /** * Set an offset from UTC in minutes to use for the default timezone setting * 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. * * You can set it to match the configured server timezone like this: * $wgLocalTZoffset = date("Z") / 60; * * If your server is not configured for the timezone you want, you can set * this in conjunction with the signature timezone and override the TZ * environment variable like so: * $wgLocaltimezone="Europe/Berlin"; * putenv("TZ=$wgLocaltimezone"); * $wgLocalTZoffset = date("Z") / 60; * * Leave at NULL to show times in universal time (UTC/GMT). */ $wgLocalTZoffset = null; /** * When translating messages with wfMsg(), 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' ); */ $wgForceUIMsgAsContentMsg = array(); /** * Authentication plugin. */ $wgAuth = null; /** * Global list of hooks. * Add a hook by doing: * $wgHooks['event_name'][] = $function; * or: * $wgHooks['event_name'][] = array($function, $data); * or: * $wgHooks['event_name'][] = array($object, 'method'); */ $wgHooks = array(); /** * The logging system has two levels: an event type, which describes the * general category and can be viewed as a named subset of all logs; and * an action, which is a specific kind of event that can exist in that * log type. */ $wgLogTypes = array( '', 'block', 'protect', 'rights', 'delete', 'upload', 'move', 'import', 'patrol', 'merge', 'suppress', ); /** * This restricts log access to those who have a certain right * Users without this will not see it in the option menu and can not view it * Restricted logs are not added to recent changes * Logs should remain non-transcludable * Format: logtype => permissiontype */ $wgLogRestrictions = array( 'suppress' => 'suppressionlog' ); /** * Show/hide links on Special:Log will be shown for these log types. * * This is associative array of log type => boolean "hide by default" * * See $wgLogTypes for a list of available log types. * * For example: * $wgFilterLogTypes => array( * 'move' => true, * 'import' => false, * ); * * 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- should be added, and will be used * for the link text. */ $wgFilterLogTypes = array( 'patrol' => true ); /** * Lists the message key string for each log type. The localized messages * will be listed in the user interface. * * Extensions with custom log types may add to this array. */ $wgLogNames = array( '' => 'all-logs-page', 'block' => 'blocklogpage', 'protect' => 'protectlogpage', 'rights' => 'rightslog', 'delete' => 'dellogpage', 'upload' => 'uploadlogpage', 'move' => 'movelogpage', 'import' => 'importlogpage', 'patrol' => 'patrol-log-page', 'merge' => 'mergelog', 'suppress' => 'suppressionlog', ); /** * Lists the message key string for descriptive text to be shown at the * top of each log type. * * Extensions with custom log types may add to this array. */ $wgLogHeaders = array( '' => 'alllogstext', 'block' => 'blocklogtext', 'protect' => 'protectlogtext', 'rights' => 'rightslogtext', 'delete' => 'dellogpagetext', 'upload' => 'uploadlogpagetext', 'move' => 'movelogpagetext', 'import' => 'importlogpagetext', 'patrol' => 'patrol-log-header', 'merge' => 'mergelogpagetext', 'suppress' => 'suppressionlogtext', ); /** * Lists the message key string for formatting individual events of each * type and action when listed in the logs. * * 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', 'delete/delete' => 'deletedarticle', 'delete/restore' => 'undeletedarticle', 'delete/revision' => 'revdelete-logentry', 'delete/event' => 'logdelete-logentry', 'upload/upload' => 'uploadedimage', 'upload/overwrite' => 'overwroteimage', 'upload/revert' => 'uploadedimage', 'move/move' => '1movedto2', 'move/move_redir' => '1movedto2_redir', 'import/upload' => 'import-logentry-upload', 'import/interwiki' => 'import-logentry-interwiki', 'merge/merge' => 'pagemerge-logentry', 'suppress/revision' => 'revdelete-logentry', 'suppress/file' => 'revdelete-logentry', 'suppress/event' => 'logdelete-logentry', 'suppress/delete' => 'suppressedarticle', 'suppress/block' => 'blocklogentry', 'suppress/reblock' => 'reblock-logentry', ); /** * The same as above, but here values are names of functions, * not messages */ $wgLogActionsHandlers = array(); /** * Maintain a log of newusers at Log/newusers? */ $wgNewUserLog = true; /** * List of special pages, followed by what subtitle they should go under * at Special:SpecialPages */ $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', 'Ipblocklist' => 'users', 'Contributions' => 'users', 'Emailuser' => 'users', 'Listadmins' => 'users', 'Listbots' => 'users', 'Userrights' => 'users', 'Blockip' => 'users', 'Preferences' => 'users', 'Resetpass' => 'users', 'DeletedContributions' => 'users', 'Mostlinked' => 'highuse', 'Mostlinkedcategories' => 'highuse', 'Mostlinkedtemplates' => 'highuse', 'Mostcategories' => 'highuse', 'Mostimages' => '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', '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', ); /** * Experimental preview feature to fetch rendered text * over an XMLHttpRequest from JavaScript instead of * forcing a submit and reload of the whole page. * Leave disabled unless you're testing it. * Needs JS2 ($wgEnableJS2) to be activated. */ $wgLivePreview = false; /** * Disable the internal MySQL-based search, to allow it to be * implemented by an extension instead. */ $wgDisableInternalSearch = false; /** * Set this to a URL to forward search requests to some external location. * 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'; */ $wgSearchForwardUrl = null; /** * Set a default target for external links, e.g. _blank to pop up a new window */ $wgExternalLinkTarget = false; /** * If true, external URL links in wiki text will be given the * rel="nofollow" attribute as a hint to search engines that * they should not be followed for ranking purposes as they * are user-supplied and thus subject to spamming. */ $wgNoFollowLinks = true; /** * Namespaces in which $wgNoFollowLinks doesn't apply. * See Language.php for a list of namespaces. */ $wgNoFollowNsExceptions = array(); /** * If this is set to an array of domains, external links to these domain names * (or any subdomains) will not be set to rel="nofollow" regardless of the * value of $wgNoFollowLinks. For instance: * * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org' ); * * This would add rel="nofollow" to links to de.wikipedia.org, but not * en.wikipedia.org, wiktionary.org, en.wiktionary.org, us.en.wikipedia.org, * etc. */ $wgNoFollowDomainExceptions = array(); /** * Default robot policy. The default policy is to encourage indexing and fol- * lowing of links. It may be overridden on a per-namespace and/or per-page * basis. */ $wgDefaultRobotPolicy = 'index,follow'; /** * Robot policies per namespaces. The default policy is given above, the array * is made of namespace constants as defined in includes/Defines.php. You can- * not specify a different default policy for NS_SPECIAL: it is always noindex, * nofollow. This is because a number of special pages (e.g., ListPages) have * many permutations of options that display the same data under redundant * URLs, so search engine spiders risk getting lost in a maze of twisty special * pages, all alike, and never reaching your actual content. * * Example: * $wgNamespaceRobotPolicies = array( NS_TALK => 'noindex' ); */ $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: * $wgArticleRobotPolicies = array( * # Underscore, not space! * 'Main_Page' => 'noindex,follow', * # "Project", not the actual project name! * 'Project:X' => 'index,follow', * # Needs to be "Abc", not "abc" (unless $wgCapitalLinks is false for that namespace)! * 'abc' => 'noindex,nofollow' * ); */ $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: * $wgExemptFromUserRobotsControl = array( NS_MAIN, NS_TALK, NS_PROJECT ); */ $wgExemptFromUserRobotsControl = null; /** * Specifies the minimal length of a user password. If set to 0, empty pass- * words are allowed. */ $wgMinimalPasswordLength = 1; /** * Activate external editor interface for files and pages * See http://meta.wikimedia.org/wiki/Help:External_editors */ $wgUseExternalEditor = true; /** Whether or not to sort special pages in Special:Specialpages */ $wgSortSpecialPages = true; /** * Specify the name of a skin that should not be presented in the list of a- * vailable skins. Use for blacklisting a skin which you do not want to remove * from the .../skins/ directory */ $wgSkipSkin = ''; $wgSkipSkins = array(); # More of the same /** * Array of disabled article actions, e.g. view, edit, dublincore, delete, etc. */ $wgDisabledActions = array(); /** * Disable redirects to special pages and interwiki redirects, which use a 302 * and have no "redirected from" link. */ $wgDisableHardRedirects = false; /** * Set to false to disable application of access keys and tooltips, * eg to avoid keyboard conflicts with system keys or as a low-level * optimization. */ $wgEnableTooltipsAndAccesskeys = true; /** * Whether to use DNS blacklists in $wgSorbsUrl to check for open proxies */ $wgEnableSorbs = false; /** * List of DNS blacklists to use, if $wgEnableSorbs is true */ $wgSorbsUrl = array( 'http.dnsbl.sorbs.net.' ); /** * Proxy whitelist, list of addresses that are assumed to be non-proxy despite * what the other methods might say. */ $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. * * array( 4, 60 ) for a maximum of 4 hits in 60 seconds. * * This option set is experimental and likely to change. Requires memcached. */ $wgRateLimits = array( 'edit' => array( '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 'subnet' => null, // ... with final octet removed ), 'move' => array( 'user' => null, 'newbie' => null, 'ip' => null, 'subnet' => null, ), 'mailpassword' => array( 'anon' => NULL, ), 'emailuser' => array( 'user' => null, ), ); /** * Set to a filename to log rate limiter hits. */ $wgRateLimitLog = null; /** * Array of groups which should never trigger the rate limiter * * @deprecated as of 1.13.0, the preferred method is using * $wgGroupPermissions[]['noratelimit']. However, this will still * work if desired. * * $wgRateLimitsExcludedGroups = array( 'sysop', 'bureaucrat' ); */ $wgRateLimitsExcludedGroups = array(); /** * Array of IPs which should be excluded from rate limits. * This may be useful for whitelisting NAT gateways for conferences, etc. */ $wgRateLimitsExcludedIPs = array(); /** * On Special:Unusedimages, consider images "used", if they are put * into a category. Default (false) is not to count those as used. */ $wgCountCategorizedImagesAsUsed = false; /** * External stores allow including content * from non database sources following URL links * * Short names of ExternalStore classes may be specified in an array here: * $wgExternalStores = array("http","file","custom")... * * 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. */ $wgExternalServers = array(); /** * The place to put new revisions, false to put them in the local text table. * 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: * * $wgDefaultExternalStore = array( 'DB://cluster1', 'DB://cluster2' ); * */ $wgDefaultExternalStore = false; /** * Revision text may be cached in $wgMemc to reduce load on external storage * servers and object extraction overhead for frequently-loaded revisions. * * Set to 0 to disable, or number of seconds before cache expiry. */ $wgRevisionCacheExpiry = 0; /** * list of trusted media-types and mime types. * Use the MEDIATYPE_xxx constants to represent media types. * This list is used by Image::isSafeFile * * Types not listed here will have a warning about unsafe content * displayed on the images description page. It would also be possible * to use this for further restrictions, like disabling direct * [[media:...]] links for non-trusted formats. */ $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 #"application/x-shockwave-flash", //flash/shockwave movie ); /** * Allow special page inclusions such as {{Special:Allpages}} */ $wgAllowSpecialInclusion = true; /** * Timeout for HTTP requests done at script execution time * default is (default php.ini script time 30s - 5s for everything else) */ $wgSyncHTTPTimeout = 25; /** * Timeout for asynchronous HTTP requests that run in a background PHP process * default set to 20 min */ $wgAsyncHTTPTimeout = 60*20; /* * if AsyncDownload is enabled (works on unix platforms) * fix for windows is pending. */ $wgEnableAsyncDownload = false; /** * Proxy to use for CURL requests. */ $wgHTTPProxy = false; /** * Enable interwiki transcluding. Only when iw_trans=1. */ $wgEnableScaryTranscluding = false; /** * Expiry time for interwiki transclusion */ $wgTranscludeCacheExpiry = 3600; /** * Support blog-style "trackbacks" for articles. See * http://www.sixapart.com/pronet/docs/trackback_spec for details. */ $wgUseTrackbacks = false; /** * Enable filtering of categories in Recentchanges */ $wgAllowCategorizedRecentChanges = false ; /** * Number of jobs to perform per request. May be less than one in which case * jobs are performed probabalistically. If this is zero, jobs will not be done * during ordinary apache requests. In this case, maintenance/runJobs.php should * be run periodically. */ $wgJobRunRate = 1; /** * Number of rows to update per job */ $wgUpdateRowsPerJob = 500; /** * Number of rows to update per query */ $wgUpdateRowsPerQuery = 100; /** * Enable AJAX framework */ $wgUseAjax = true; /** * List of Ajax-callable functions. * Extensions acting as Ajax callbacks must register here */ $wgAjaxExportList = array( 'wfAjaxGetThumbnailUrl', 'wfAjaxGetFileUrl' ); /** * Enable watching/unwatching pages using AJAX. * Requires $wgUseAjax to be true too. * Causes wfAjaxWatch to be added to $wgAjaxExportList */ $wgAjaxWatch = true; /** * Enable AJAX check for file overwrite, pre-upload */ $wgAjaxUploadDestCheck = true; /** * Enable the AJAX upload interface (needed for large http uploads & to display * progress on uploads for browsers that support it) */ $wgAjaxUploadInterface = true; /** * Enable previewing licences via AJAX */ $wgAjaxLicensePreview = true; /** * Allow DISPLAYTITLE to change title display */ $wgAllowDisplayTitle = true; /** * for consistency, restrict DISPLAYTITLE to titles that normalize to the same canonical DB key */ $wgRestrictDisplayTitle = true; /** * Array of usernames which may not be registered or logged in from * Maintenance scripts can still use these */ $wgReservedUsernames = array( 'MediaWiki default', // Default 'Main Page' and MediaWiki: message pages 'Conversion script', // Used for the old Wikipedia software upgrade 'Maintenance script', // Maintenance scripts which perform editing, image import script 'Template namespace initialisation script', // Used in 1.2->1.3 upgrade 'msg:double-redirect-fixer', // Automatic double redirect fix ); /** * 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, 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; /** * Array of namespaces which can be deemed to contain valid "content", as far * as the site statistics are concerned. Useful if additional namespaces also * contain "content" which should be considered when generating a count of the * number of articles in the wiki. */ $wgContentNamespaces = array( NS_MAIN ); /** * Maximum amount of virtual memory available to shell processes under linux, in KB. */ $wgMaxShellMemory = 102400; /** * Maximum file size created by shell processes under linux, in KB * ImageMagick convert for example can be fairly hungry for scratch space */ $wgMaxShellFileSize = 102400; /** * Maximum CPU time in seconds for shell processes under linux */ $wgMaxShellTime = 180; /** * Executable path of the PHP cli binary (php/php5). Should be set up on install. */ $wgPhpCli = '/usr/bin/php'; /** * DJVU settings * Path of the djvudump executable * Enable this and $wgDjvuRenderer to enable djvu rendering */ # $wgDjvuDump = 'djvudump'; $wgDjvuDump = null; /** * Path of the ddjvu DJVU renderer * Enable this and $wgDjvuDump to enable djvu rendering */ # $wgDjvuRenderer = 'ddjvu'; $wgDjvuRenderer = null; /** * Path of the djvutxt DJVU text extraction utility * Enable this and $wgDjvuDump to enable text layer extraction from djvu files */ # $wgDjvuTxt = 'djvutxt'; $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 * 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 */ # $wgDjvuToXML = 'djvutoxml'; $wgDjvuToXML = null; /** * Shell command for the DJVU post processor * Default: pnmtopng, since ddjvu generates ppm output * Set this to false to output the ppm file directly. */ $wgDjvuPostProcessor = 'pnmtojpeg'; /** * File extension for the DJVU post processor output */ $wgDjvuOutputExtension = 'jpg'; /** * Enable the MediaWiki API for convenient access to * machine-readable data via api.php * * See http://www.mediawiki.org/wiki/API */ $wgEnableAPI = true; /** * Allow the API to be used to perform write operations * (page edits, rollback, etc.) when an authorised user * accesses it */ $wgEnableWriteAPI = true; /** * API module extensions * Associative array mapping module name to class name. * Extension modules may override the core modules. */ $wgAPIModules = array(); $wgAPIMetaModules = array(); $wgAPIPropModules = array(); $wgAPIListModules = array(); /** * Maximum amount of rows to scan in a DB query in the API * The default value is generally fine */ $wgAPIMaxDBRows = 5000; /** * The maximum size (in bytes) of an API result. * Don't set this lower than $wgMaxArticleSize*1024 */ $wgAPIMaxResultSize = 8388608; /** * The maximum number of uncached diffs that can be retrieved in one API * request. Set this to 0 to disable API diffs altogether */ $wgAPIMaxUncachedDiffs = 1; /** * Log file or URL (TCP or UDP) to log API requests to, or false to disable * API request logging */ $wgAPIRequestLog = false; /** * Cache the API help text for up to an hour. Disable this during API * debugging and development */ $wgAPICacheHelp = true; /** * Set the timeout for the API help text cache. Ignored if $wgAPICacheHelp * is false. */ $wgAPICacheHelpTimeout = 60*60; /** * Parser test suite files to be run by parserTests.php when no specific * filename is passed to it. * * Extensions may add their own tests to this array, or site-local tests * may be added via LocalSettings.php * * Use full paths. */ $wgParserTestFiles = array( "$IP/maintenance/parserTests.txt", ); /** * If configured, specifies target CodeReview installation to send test * result data from 'parserTests.php --upload' * * Something like this: * $wgParserTestRemote = array( * 'api-url' => 'http://www.mediawiki.org/w/api.php', * 'repo' => 'MediaWiki', * 'suite' => 'ParserTests', * 'path' => '/trunk/phase3', // not used client-side; for reference * 'secret' => 'qmoicj3mc4mcklmqw', // Shared secret used in HMAC validation * ); */ $wgParserTestRemote = false; /** * Break out of framesets. This can be used to prevent external sites from * framing your site with ads. */ $wgBreakFrames = false; /** * Set this to an array of special page names to prevent * maintenance/updateSpecialPages.php from updating those pages. */ $wgDisableQueryPageUpdate = false; /** * Disable output compression (enabled by default if zlib is available) */ $wgDisableOutputCompression = false; /** * If lag is higher than $wgSlaveLagWarning, show a warning in some special * pages (like watchlist). If the lag is higher than $wgSlaveLagCritical, * show a more obvious warning. */ $wgSlaveLagWarning = 10; $wgSlaveLagCritical = 30; /** * Parser configuration. Associative array with the following members: * * class The class name * * preprocessorClass The preprocessor class. Two classes are currently available: * Preprocessor_Hash, which uses plain PHP arrays for tempoarary * 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. * * If this parameter is not given, it uses Preprocessor_DOM if the * DOM module is available, otherwise it uses Preprocessor_Hash. * * The entire associative array will be passed through to the constructor as * the first parameter. Note that only Setup.php can use this variable -- * the configuration will change at runtime via $wgParser member functions, so * the contents of this variable will be out-of-date. The variable can only be * changed during LocalSettings.php, in particular, it can't be changed during * an extension setup function. */ $wgParserConf = array( 'class' => 'Parser', #'preprocessorClass' => 'Preprocessor_Hash', ); /** * LinkHolderArray batch size * For debugging */ $wgLinkHolderBatchSize = 1000; /** * By default MediaWiki does not register links pointing to same server in externallinks dataset, * use this value to override: */ $wgRegisterInternalExternals = false; /** * Hooks that are used for outputting exceptions. Format is: * $wgExceptionHooks[] = $funcname * or: * $wgExceptionHooks[] = array( $class, $funcname ) * Hooks should return strings or false */ $wgExceptionHooks = array(); /** * Page property link table invalidation lists. When a page property * changes, this may require other link tables to be updated (eg * adding __HIDDENCAT__ means the hiddencat tracking category will * have been added, so the categorylinks table needs to be rebuilt). * This array can be added to by extensions. */ $wgPagePropLinkInvalidations = array( 'hiddencat' => 'categorylinks', ); /** * Maximum number of links to a redirect page listed on * Special:Whatlinkshere/RedirectDestination */ $wgMaxRedirectLinksRetrieved = 500; /** * Maximum number of calls per parse to expensive parser functions such as * PAGESINCATEGORY. */ $wgExpensiveParserFunctionLimit = 100; /** * Maximum number of pages to move at once when moving subpages with a page. */ $wgMaximumMovedPages = 100; /** * Fix double redirects after a page move. * Tends to conflict with page move vandalism, use only on a private wiki. */ $wgFixDoubleRedirects = false; /** * Max number of redirects to follow when resolving redirects. * 1 means only the first redirect is followed (default behavior). * 0 or less means no redirects are followed. */ $wgMaxRedirects = 1; /** * Array of invalid page redirect targets. * Attempting to create a redirect to any of the pages in this array * will make the redirect fail. * Userlogout is hard-coded, so it does not need to be listed here. * (bug 10569) Disallow Mypage and Mytalk as well. * * As of now, this only checks special pages. Redirects to pages in * other namespaces cannot be invalidated by this variable. */ $wgInvalidRedirectTargets = array( 'Filepath', 'Mypage', 'Mytalk' ); /** * Array of namespaces to generate a sitemap for when the * maintenance/generateSitemap.php script is run, or false if one is to be ge- * nerated for all namespaces. */ $wgSitemapNamespaces = false; /** * If user doesn't specify any edit summary when making a an edit, MediaWiki * will try to automatically create one. This feature can be disabled by set- * ting this variable false. */ $wgUseAutomaticEditSummaries = true; /** * Limit password attempts to X attempts per Y seconds per IP per account. * Requires memcached. */ $wgPasswordAttemptThrottle = array( 'count' => 5, 'seconds' => 300 ); /** * Display user edit counts in various prominent places. */ $wgEdititis = false; /** * Enable the UniversalEditButton for browsers that support it * (currently only Firefox with an extension) * See http://universaleditbutton.org for more background information */ $wgUniversalEditButton = true; /** * Allow id's that don't conform to HTML4 backward compatibility requirements. * This is currently for testing; if all goes well, this option will be removed * and the functionality will be enabled universally. */ $wgEnforceHtmlIds = true; /** * Search form behavior * true = use Go & Search buttons * false = use Go button & Advanced search link */ $wgUseTwoButtonsSearchForm = true; /** * Search form behavior 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 */ $wgVectorUseIconWatch = false; /** * Add extra stylesheets for Vector - This is only being used so that we can play around with different options while * keeping our CSS code in the SVN and not having to change the main Vector styles. This will probably go away later on. * null = add no extra styles * array = list of style paths relative to skins/vector/ */ $wgVectorExtraStyles = null; /** * Preprocessor caching threshold */ $wgPreprocessorCacheThreshold = 1000; /** * Allow filtering by change tag in recentchanges, history, etc * Has no effect if no tags are defined in valid_tag. */ $wgUseTagFilter = true; /** * Allow redirection to another page when a user logs in. * To enable, set to a string like 'Main Page' */ $wgRedirectOnLogin = null; /** * Characters to prevent during new account creations. * This is used in a regular expression character class during * registration (regex metacharacters like / are escaped). */ $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). * * It is recommended that you have this delimiter in * $wgInvalidUsernameCharacters above, or you will not be able to * modify the user rights of those users via Special:UserRights */ $wgUserrightsInterwikiDelimiter = '@'; /** * Configuration for processing pool control, for use in high-traffic wikis. * An implementation is provided in the PoolCounter extension. * * 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: * * $wgPoolCounterConf = array( 'Article::view' => array( * 'class' => 'PoolCounter_Client', * ... any extension-specific options... * ); */ $wgPoolCounterConf = null; /** * Use some particular type of external authentication. The specific * authentication module you use will normally require some extra settings to * be specified. * * null indicates no external authentication is to be used. Otherwise, * "ExternalUser_$wgExternalAuthType" must be the name of a non-abstract class * that extends ExternalUser. * * Core authentication modules can be found in includes/extauth/. */ $wgExternalAuthType = null; /** * Configuration for the external authentication. This may include arbitrary * keys that depend on the authentication mechanism. For instance, * authentication against another web app might require that the database login * info be provided. Check the file where your auth mechanism is defined for * info on what to put here. */ $wgExternalAuthConfig = array(); /** * When should we automatically create local accounts when external accounts * already exist, if using ExternalAuth? Can have three values: 'never', * 'login', 'view'. 'view' requires the external database to support cookies, * and implies 'login'. * * TODO: Implement 'view' (currently behaves like 'login'). */ $wgAutocreatePolicy = 'login'; /** * Policies for how each preference is allowed to be changed, in the presence * of external authentication. The keys are preference keys, e.g., 'password' * or 'emailaddress' (see Preferences.php et al.). The value can be one of the * following: * * - local: Allow changes to this pref through the wiki interface but only * apply them locally (default). * - semiglobal: Allow changes through the wiki interface and try to apply them * to the foreign database, but continue on anyway if that fails. * - global: Allow changes through the wiki interface, but only let them go * through if they successfully update the foreign database. * - message: Allow no local changes for linked accounts; replace the change * form with a message provided by the auth plugin, telling the user how to * change the setting externally (maybe providing a link, etc.). If the auth * plugin provides no message for this preference, hide it entirely. * * Accounts that are not linked to an external account are never affected by * this setting. You may want to look at $wgHiddenPrefs instead. * $wgHiddenPrefs supersedes this option. * * TODO: Implement message, global. */ $wgAllowPrefChange = array(); /** * Settings for incoming cross-site AJAX requests: * Newer browsers support cross-site AJAX when the target resource allows requests * from the origin domain by the Access-Control-Allow-Origin header. * 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', ); * */ $wgCrossSiteAJAXdomains = array(); /** * Domains that should not be allowed to make AJAX requests, * even if they match one of the domains allowed by $wgCrossSiteAJAXdomains * Uses the same syntax as $wgCrossSiteAJAXdomains */ $wgCrossSiteAJAXdomainExceptions = array(); /** * The minimum amount of memory that MediaWiki "needs"; MediaWiki will try to raise PHP's memory limit if it's below this amount. */ $wgMemoryLimit = "50M"; /** * Whether or not to use the AJAX categories system. * Note that this requires JS2 and the script loader. */ $wgUseAJAXCategories = false; /** * Only enable AJAXCategories on configured namespaces. Default is all. * * Example: * $wgAJAXCategoriesNamespaces = array( NS_MAIN, NS_PROJECT ); */ $wgAJAXCategoriesNamespaces = array(); /** * To disable file delete/restore temporarily */ $wgUploadMaintenance = false; /** * Use old names for change_tags indices. */ $wgOldChangeTagsIndex = false; Index: trunk/phase3/includes/Setup.php =================================================================== --- trunk/phase3/includes/Setup.php (revision 58651) +++ trunk/phase3/includes/Setup.php (revision 58652) @@ -1,373 +1,385 @@ <?php /** * Include most things that's need to customize the site */ /** * This file is not a valid entry point, perform no further processing unless * MEDIAWIKI is defined */ if( !defined( 'MEDIAWIKI' ) ) { exit( 1 ); } # The main wiki script and things like database # conversion and maintenance scripts all share a # common setup of including lots of classes and # setting up a few globals. # $fname = 'Setup.php'; wfProfileIn( $fname ); // Check to see if we are at the file scope if ( !isset( $wgVersion ) ) { echo "Error, Setup.php must be included from the file scope, after DefaultSettings.php\n"; die( 1 ); } // Set various default paths sensibly... if( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension"; if( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension"; if( $wgArticlePath === false ) { if( $wgUsePathInfo ) { $wgArticlePath = "$wgScript/$1"; } else { $wgArticlePath = "$wgScript?title=$1"; } } if( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins"; if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins"; if( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png"; if( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images"; if( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images"; if( $wgMathPath === false ) $wgMathPath = "{$wgUploadPath}/math"; if( $wgMathDirectory === false ) $wgMathDirectory = "{$wgUploadDirectory}/math"; if( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp"; if( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR"; if( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache"; if ( empty( $wgFileStore['deleted']['directory'] ) ) { $wgFileStore['deleted']['directory'] = "{$wgUploadDirectory}/deleted"; } /** * Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a * sysadmin to set $wgNamespaceProtection incorrectly and leave the wiki insecure. * * Note that this is the definition of editinterface and it can be granted to * all users if desired. */ $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface'; /** * The canonical names of namespaces 6 and 7 are, as of v1.14, "File" * and "File_talk". The old names "Image" and "Image_talk" are * retained as aliases for backwards compatibility. */ $wgNamespaceAliases['Image'] = NS_FILE; $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK; /** * Initialise $wgLocalFileRepo from backwards-compatible settings */ if ( !$wgLocalFileRepo ) { $wgLocalFileRepo = array( 'class' => 'LocalRepo', 'name' => 'local', 'directory' => $wgUploadDirectory, 'url' => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath, 'hashLevels' => $wgHashedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'deletedDir' => $wgFileStore['deleted']['directory'], 'deletedHashLevels' => $wgFileStore['deleted']['hash'] ); } /** * Initialise shared repo from backwards-compatible settings */ if ( $wgUseSharedUploads ) { if ( $wgSharedUploadDBname ) { $wgForeignFileRepos[] = array( 'class' => 'ForeignDBRepo', 'name' => 'shared', 'directory' => $wgSharedUploadDirectory, 'url' => $wgSharedUploadPath, 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'dbType' => $wgDBtype, 'dbServer' => $wgDBserver, 'dbUser' => $wgDBuser, 'dbPassword' => $wgDBpassword, 'dbName' => $wgSharedUploadDBname, 'dbFlags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT, 'tablePrefix' => $wgSharedUploadDBprefix, 'hasSharedCache' => $wgCacheSharedUploads, 'descBaseUrl' => $wgRepositoryBaseUrl, 'fetchDescription' => $wgFetchCommonsDescriptions, ); } else { $wgForeignFileRepos[] = array( 'class' => 'FSRepo', 'name' => 'shared', 'directory' => $wgSharedUploadDirectory, 'url' => $wgSharedUploadPath, 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'descBaseUrl' => $wgRepositoryBaseUrl, 'fetchDescription' => $wgFetchCommonsDescriptions, ); } } +if( $wgUseInstantCommons ) { + $wgForeignFileRepos[] = array( + 'class' => 'ForeignAPIRepo', + 'name' => 'wikimediacommons', + 'apibase' => 'http://commons.wikimedia.org/w/api.php', + 'fetchDescription' => true, + 'descriptionCacheExpiry' => 43200, + 'apiThumbCacheExpiry' => 86400, + ); +} + + if ( !class_exists( 'AutoLoader' ) ) { require_once( "$IP/includes/AutoLoader.php" ); } wfProfileIn( $fname.'-exception' ); require_once( "$IP/includes/Exception.php" ); wfInstallExceptionHandler(); wfProfileOut( $fname.'-exception' ); wfProfileIn( $fname.'-includes' ); require_once( "$IP/includes/GlobalFunctions.php" ); require_once( "$IP/includes/Hooks.php" ); require_once( "$IP/includes/Namespace.php" ); require_once( "$IP/includes/ProxyTools.php" ); require_once( "$IP/includes/ObjectCache.php" ); require_once( "$IP/includes/ImageFunctions.php" ); require_once( "$IP/includes/StubObject.php" ); wfProfileOut( $fname.'-includes' ); wfProfileIn( $fname.'-misc1' ); # Raise the memory limit if it's too low wfMemoryLimit(); $wgIP = false; # Load on demand # Can't stub this one, it sets up $_GET and $_REQUEST in its constructor $wgRequest = new WebRequest; # Useful debug output if ( $wgCommandLineMode ) { wfDebug( "\n\nStart command line script $self\n" ); } elseif ( function_exists( 'getallheaders' ) ) { wfDebug( "\n\nStart request\n" ); wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" ); $headers = getallheaders(); foreach ($headers as $name => $value) { wfDebug( "$name: $value\n" ); } wfDebug( "\n" ); } elseif( isset( $_SERVER['REQUEST_URI'] ) ) { wfDebug( "\n\nStart request\n" ); wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" ); foreach ( $_SERVER as $name => $value ) { if ( substr( $name, 0, 5 ) == 'HTTP_' ) { $name = substr( $name, 5 ); wfDebug( "$name: $value\n" ); } } wfDebug( "\n" ); } if( $wgRCFilterByAge ) { ## Trim down $wgRCLinkDays so that it only lists links which are valid ## as determined by $wgRCMaxAge. ## Note that we allow 1 link higher than the max for things like 56 days but a 60 day link. sort($wgRCLinkDays); for( $i = 0; $i < count($wgRCLinkDays); $i++ ) { if( $wgRCLinkDays[$i] >= $wgRCMaxAge / ( 3600 * 24 ) ) { $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i+1, false ); break; } } } if ( $wgSkipSkin ) { $wgSkipSkins[] = $wgSkipSkin; } $wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist; if($wgMetaNamespace === FALSE) { $wgMetaNamespace = str_replace( ' ', '_', $wgSitename ); } # These are now the same, always # To determine the user language, use $wgLang->getCode() $wgContLanguageCode = $wgLanguageCode; # Easy to forget to falsify $wgShowIPinHeader for static caches. # If file cache or squid cache is on, just disable this (DWIMD). if( $wgUseFileCache || $wgUseSquid ) $wgShowIPinHeader = false; # $wgAllowRealName and $wgAllowUserSkin were removed in 1.16 # in favor of $wgHiddenPrefs, handle b/c here if( !$wgAllowRealName ) { $wgHiddenPrefs[] = 'realname'; } if( !$wgAllowUserSkin ) { $wgHiddenPrefs[] = 'skin'; } wfProfileOut( $fname.'-misc1' ); wfProfileIn( $fname.'-memcached' ); $wgMemc =& wfGetMainCache(); $messageMemc =& wfGetMessageCacheStorage(); $parserMemc =& wfGetParserCacheStorage(); wfDebug( 'Main cache: ' . get_class( $wgMemc ) . "\nMessage cache: " . get_class( $messageMemc ) . "\nParser cache: " . get_class( $parserMemc ) . "\n" ); wfProfileOut( $fname.'-memcached' ); ## Most of the config is out, some might want to run hooks here. wfRunHooks( 'SetupAfterCache' ); wfProfileIn( $fname.'-SetupSession' ); # Set default shared prefix if( $wgSharedPrefix === false ) $wgSharedPrefix = $wgDBprefix; if( !$wgCookiePrefix ) { if ( $wgSharedDB && $wgSharedPrefix && in_array('user',$wgSharedTables) ) { $wgCookiePrefix = $wgSharedDB . '_' . $wgSharedPrefix; } elseif ( $wgSharedDB && in_array('user',$wgSharedTables) ) { $wgCookiePrefix = $wgSharedDB; } elseif ( $wgDBprefix ) { $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix; } else { $wgCookiePrefix = $wgDBname; } } $wgCookiePrefix = strtr($wgCookiePrefix, "=,; +.\"'\\[", "__________"); # If session.auto_start is there, we can't touch session name # if( !wfIniGetBool( 'session.auto_start' ) ) session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' ); if( !$wgCommandLineMode && ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) ) { wfIncrStats( 'request_with_session' ); wfSetupSession(); $wgSessionStarted = true; } else { wfIncrStats( 'request_without_session' ); $wgSessionStarted = false; } wfProfileOut( $fname.'-SetupSession' ); wfProfileIn( $fname.'-globals' ); $wgContLang = new StubContLang; // Now that variant lists may be available... $wgRequest->interpolateTitle(); $wgUser = new StubUser; $wgLang = new StubUserLang; $wgOut = new StubObject( 'wgOut', 'OutputPage' ); $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) ); $wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache', array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, wfWikiID() ) ); wfProfileOut( $fname.'-globals' ); wfProfileIn( $fname.'-User' ); # Skin setup functions # Entries can be added to this variable during the inclusion # of the extension file. Skins can then perform any necessary initialisation. # foreach ( $wgSkinExtensionFunctions as $func ) { call_user_func( $func ); } if( !is_object( $wgAuth ) ) { $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' ); wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) ); } wfProfileOut( $fname.'-User' ); wfProfileIn( $fname.'-misc2' ); $wgDeferredUpdateList = array(); $wgPostCommitUpdateList = array(); if ( $wgAjaxWatch ) $wgAjaxExportList[] = 'wfAjaxWatch'; if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning'; if( $wgAjaxLicensePreview ) $wgAjaxExportList[] = 'SpecialUpload::ajaxGetLicensePreview'; # Placeholders in case of DB error $wgTitle = null; $wgArticle = null; wfProfileOut( $fname.'-misc2' ); wfProfileIn( $fname.'-extensions' ); # load the $wgExtensionMessagesFiles for the script loader # this can't be done in a normal extension type way # since the script-loader is an entry point # $wgExtensionMessagesFiles['mwEmbed'] = "{$IP}/js2/mwEmbed/php/languages/mwEmbed.i18n.php"; # Include the js2/mwEmbed autoLoadClasses if js2 is enabled if( $wgEnableJS2system ){ require_once("$IP/js2/mwEmbed/php/jsAutoloadLocalClasses.php"); } # Extension setup functions for extensions other than skins # Entries should be added to this variable during the inclusion # of the extension file. This allows the extension to perform # any necessary initialisation in the fully initialised environment foreach ( $wgExtensionFunctions as $func ) { # Allow closures in PHP 5.3+ if ( is_object( $func ) && $func instanceof Closure ) { $profName = $fname.'-extensions-closure'; } elseif( is_array( $func ) ) { if ( is_object( $func[0] ) ) $profName = $fname.'-extensions-'.get_class( $func[0] ).'::'.$func[1]; else $profName = $fname.'-extensions-'.implode( '::', $func ); } else { $profName = $fname.'-extensions-'.strval( $func ); } wfProfileIn( $profName ); call_user_func( $func ); wfProfileOut( $profName ); } // For compatibility wfRunHooks( 'LogPageValidTypes', array( &$wgLogTypes ) ); wfRunHooks( 'LogPageLogName', array( &$wgLogNames ) ); wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) ); wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) ); if( !empty($wgNewUserLog) ) { # Add a new log type $wgLogTypes[] = 'newusers'; $wgLogNames['newusers'] = 'newuserlogpage'; $wgLogHeaders['newusers'] = 'newuserlogpagetext'; $wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries $wgLogActions['newusers/create'] = 'newuserlog-create-entry'; $wgLogActions['newusers/create2'] = 'newuserlog-create2-entry'; $wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry'; } wfDebug( "Fully initialised\n" ); $wgFullyInitialised = true; wfProfileOut( $fname.'-extensions' ); wfProfileOut( $fname );