From 9db190c7e736ec8d063187d4241b59feaf7dc2d1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 22 Jun 2011 11:28:20 +0200 Subject: update to MediaWiki 1.17.0 --- docs/code-coverage/README | 2 + docs/database.txt | 26 ++++-- docs/databases/ibm_db2.txt | 3 + docs/databases/postgres.txt | 100 +++++++++++++++++++++ docs/databases/sqlite.txt | 12 +++ docs/distributors.txt | 43 ++++++--- docs/export-0.5.xsd | 213 ++++++++++++++++++++++++++++++++++++++++++++ docs/hooks.txt | 192 +++++++++++++++++++++++++++++++++------ docs/maintenance.txt | 2 +- docs/memcached.txt | 16 ++-- docs/scripts.txt | 5 +- docs/skin.txt | 13 ++- 12 files changed, 569 insertions(+), 58 deletions(-) create mode 100644 docs/code-coverage/README create mode 100644 docs/databases/ibm_db2.txt create mode 100644 docs/databases/postgres.txt create mode 100644 docs/databases/sqlite.txt create mode 100644 docs/export-0.5.xsd (limited to 'docs') diff --git a/docs/code-coverage/README b/docs/code-coverage/README new file mode 100644 index 00000000..7bc55ce2 --- /dev/null +++ b/docs/code-coverage/README @@ -0,0 +1,2 @@ +This directory is for the auto-generated phpunit code coverage. +Run 'make coverage' in the maintenance/tests/phpunit subdirectory to build. diff --git a/docs/database.txt b/docs/database.txt index e80a4940..b9fa6ff7 100644 --- a/docs/database.txt +++ b/docs/database.txt @@ -19,12 +19,9 @@ To make a read query, something like this usually suffices: $dbr = wfGetDB( DB_SLAVE ); $res = $dbr->select( /* ...see docs... */ ); -while ( $row = $dbr->fetchObject( $res ) ) { +foreach ( $res as $row ) { ... } -$dbr->freeResult( $res ); - -Note the assignment operator in the while condition. For a write query, use something like: @@ -149,9 +146,7 @@ to avoid long-lasting locks. By default, MediaWiki opens a transaction at the first query, and commits it before the output is sent. Locks will be held from the time when the query is done until the commit. So you can reduce lock time by doing as much processing as possible before you -do your write queries. Update operations which do not require database -access can be delayed until after the commit by adding an object to -$wgPostCommitUpdateList. +do your write queries. Often this approach is not good enough, and it becomes necessary to enclose small groups of queries in their own transaction. Use the @@ -174,3 +169,20 @@ queries, by using an appropriate condition in the WHERE clause of an UPDATE, or by using unique indexes in combination with INSERT IGNORE. Then use the affected row count to see if the query succeeded. +------------------------------------------------------------------------ + Supported DBMSs +------------------------------------------------------------------------ + +MediaWiki is written primarily for use with MySQL. Queries are optimized +for it and its schema is considered the canonical version. However, +MediaWiki does support the following other DBMSs to varying degrees. + +* PostgreSQL +* SQLite +* Oracle +* IBM DB2 +* MSSQL + +More information can be found about each of these databases (known issues, +level of support, extra configuration) in the "databases" subdirectory in +this folder. diff --git a/docs/databases/ibm_db2.txt b/docs/databases/ibm_db2.txt new file mode 100644 index 00000000..3c3f381c --- /dev/null +++ b/docs/databases/ibm_db2.txt @@ -0,0 +1,3 @@ +== See also == +*[http://www.mediawiki.org/wiki/Manual:IBM_DB2 Installation instructions] +*[http://ca.php.net/manual/en/function.db2-connect.php PHP Manual for DB2 functions] \ No newline at end of file diff --git a/docs/databases/postgres.txt b/docs/databases/postgres.txt new file mode 100644 index 00000000..cec51861 --- /dev/null +++ b/docs/databases/postgres.txt @@ -0,0 +1,100 @@ +This document describes the state of Postgres support in MediaWiki. + + +== Overview == + +Support for PostgreSQL has been available since version 1.7 +of MediaWiki, and is fairly well maintained. The main code +is very well integrated, while extensions are very hit and miss. +Still, it is probably the most supported database after MySQL. +Much of the work in making MediaWiki database-agnostic came +about through the work of creating Postgres support. + + +== Required versions == + +The current minimum version of PostgreSQL for MediaWiki is 8.1. +It is expected that this will be raised to 8.3 at some point, +as 8.1 and 8.2 are nearing end of life. + + + +== Database schema == + +Postgres has its own schema file at maintenance/postgres/tables.sql. + +The goal is to keep this file as close as possible to the canonical +schema at maintenance/tables.sql, but without copying over +all the usage comments. General notes on the conversion: + +* The use of a true TIMESTAMP rather than the text string that +MySQL uses is highly encouraged. There are still places in the +code (especially extensions) which make assumptions about the +textual nature of timestamp fields, but these can almost always +be programmed around. + +* Although Postgres has a true BOOLEAN type, boolean columns +are always mapped to SMALLINT, as the code does not always treat +the column as a boolean (which is limited to accepting true, +false, 0, 1, t, or f) + +* The default data type for all VARCHAR, CHAR, and VARBINARY +columns should simply be TEXT. The only exception is +when VARBINARY is used to store true binary data, such as +the math_inputhash column, in which case BYTEA should be used. + +* All integer variants should generally be mapped to INTEGER. +There is small-to-no advantage in using SMALLINT versus +INTEGER in Postgres, and the possibility of running out of +room outweighs such concerns. The columns that are BIGINT +in other schemas should be INTEGER as well, as none of them +so far are even remotely likely to reach the 32 billion +limit of an INTEGER. + +* Blobs (blob, tinyblog, mediumblob) should be mapped to TEXT +whenever possible, and to BYTEA if they are known to contain +binary data. + +* All length modifiers on data types should be removed. If +they are on an INTEGER, it's probably an error, and if on +any text-based field, simply using TEXT is preferred. + +* Sequences should be explicitly named rather than using +SERIAL, as the code can depend on having a specific name. + +* Foreign keys should be used when possible. This makes things +both easier and harder in the code, but most of the major +problems have now been overcome. Always add an explicit ON DELETE +clause, and consider carefully what choice to use (all things +considered, prefer CASCADE). + +* The use of CIDR should be done very carefully, because the code +will sometimes want to store things such as an empty string or +other non-IP value in the column. When in doubt, use TEXT. + +* Indexes should be created using the original MySQL tables.sql +as a guide, but keeping in mind the ability of Postgres to use +partial indexes, functional indexes, and bitmaps. The index names +should be logical but are not too important, as they are never +referenced directly by the code (unlike sequence names). Most of +the indexes in the file as of this writing are there due to production +testing of expensive queries on a busy wiki. + + +== Keeping in sync with tables.sql == + +The script maintenance/postgres/compare_schemas.pl should be +periodically run. It will parse both "tables.sql" files and +produce any differences found. Such differences should be fixed +or exceptions specifically carved out by editing the script +itself. This script has also been very useful in finding problems +in maintenance/tables.sql itself, as it is very strict in the +format it expects things to be in. :) + + +== Getting help == + +In addition to the normal venues (MediaWiki mailing lists +and IRC channels), the #postgresql channel on irc.freenode.net +is a friendly and expert resource if you should encounter a +problem with your Postgres-enabled MediaWiki. diff --git a/docs/databases/sqlite.txt b/docs/databases/sqlite.txt new file mode 100644 index 00000000..b8a45553 --- /dev/null +++ b/docs/databases/sqlite.txt @@ -0,0 +1,12 @@ +SQLite shares the MySQL schema file at maintenance/tables.sql, with a set of +compatibility regexes to convert MySQL syntax to SQLite syntax: + +* BINARY() and VARBINARY() fields are converted to BLOB +* the UNSIGNED modifier is removed +* "INT" fields are converted to "INTEGER" +* ENUM is converted to BLOB +* the BINARY collation modifier is removed +* AUTO_INCREMENT is converted to AUTOINCREMENT +* Any table options are removed +* Truncated indexes are upgraded to full-width indexes +* FULLTEXT indexes are converted to ordinary indexes diff --git a/docs/distributors.txt b/docs/distributors.txt index 5586df12..e9f151cf 100644 --- a/docs/distributors.txt +++ b/docs/distributors.txt @@ -58,13 +58,11 @@ If you really must mess around with the directory structure, note that the following files *must* all be web-accessible for MediaWiki to function correctly: - * api.php, img_auth.php, index.php, mwScriptLoader.php, opensearch_desc.php, - profileinfo.php, redirect.php, thumb.php, trackback.php. These are the entry - points for normal usage. This list may be incomplete and is subject to - change. - * config/index.php: Used for web-based installation (sets up the database, - prompts for the name of the wiki, etc.). No command-line installation is - currently available. + * api.php, img_auth.php, index.php, load.php, opensearch_desc.php, thumb.php, + profileinfo.php, redirect.php, trackback.php. These are the entry points for + normal usage. This list may be incomplete and is subject to change. + * mw-config/index.php: Used for web-based installation (sets up the database, + prompts for the name of the wiki, etc.). * images/: Used for uploaded files. This could be somewhere else if $wgUploadDirectory and $wgUploadPath are changed appropriately. * skins/*/: Subdirectories of skins/ contain CSS and JavaScript files that @@ -84,25 +82,42 @@ something. You have been warned. == Configuration == MediaWiki is configured using LocalSettings.php. This is a PHP file that's -generated when the user visits config/index.php to install the software, and +generated when the user visits mw-config/index.php to install the software, and which the user can edit by hand thereafter. It's just a plain old PHP file, and can contain any PHP statements. It usually sets global variables that are used for configuration, and includes files used by any extensions. Distributors cannot easily add extra statements to the autogenerated -LocalSettings.php at the present time -- although hacking config/index.php +LocalSettings.php at the present time -- although hacking mw-config/index.php would work. It would be nice if this situation could be improved. +There's a new maintenance/install.php script which could be used for performing +an install through the command line. + Some configuration options that distributors might be in a position to set intelligently: * $wgEmergencyContact: An e-mail address that can be used to contact the wiki - administrator. By default, "wikiadmin@$wgServerName". + administrator. By default, "wikiadmin@ServerName". * $wgPasswordSender: The e-mail address to use when sending password e-mails. - By default, "MediaWiki Mail ". + By default, "MediaWiki Mail ". + (with ServerName guessed from the http request) * $wgSMTP: Can be configured to use SMTP for mail sending instead of PHP mail(). +== Updates == +The correct way for updating a wiki is to update the files and then run from +command line the maintenance/update.php script (with appropriate parameters if +files were moved). It will perform all the needed steps to update the database +schema and contents to the version from whatever old one it has. +Any package manager which replaces the files but doesn't update the db is leaving +an inconsistent wiki that may produce blank pages (php errors) when new features +using the changed schema would be used. + +Since MediaWiki 1.17 it is possible to upgrade using the installer by providing +an arbitrary secret value stored as $wgUpgradeKey in LocalSettings (older versions +needed to rename LocalSettings.php in order to upgrade using the installer). + == Documentation == MediaWiki's official documentation is split between two places: the source @@ -156,8 +171,8 @@ perhaps configure it to use them (see Configuration section of this document): "$wgAntivirus = 'clamav';". * DjVuLibre: Allows processing of DjVu files. To enable this, set "$wgDjvuDump = 'djvudump'; $wgDjvuRenderer = 'ddjvu'; $wgDjvuTxt = 'djvutxt';". - * HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with "$wgUseTidy - = true;". + * HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with + "$wgUseTidy = true;". * ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable it. PHP's GD can also be used, but ImageMagick is preferable. * Squid: Can provide a drastic speedup and a major cut in resource @@ -172,7 +187,7 @@ perhaps configure it to use them (see Configuration section of this document): MediaWiki uses some standard GNU utilities as well, such as diff and diff3. If these are present in /usr/bin or some other reasonable location, they will be -used automatically. +configured automatically on install. MediaWiki also has a "job queue" that handles background processing. Because shared hosts often don't provide access to cron, the job queue is run on every diff --git a/docs/export-0.5.xsd b/docs/export-0.5.xsd new file mode 100644 index 00000000..a0884958 --- /dev/null +++ b/docs/export-0.5.xsd @@ -0,0 +1,213 @@ + + + + + + + MediaWiki's page export format + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hooks.txt b/docs/hooks.txt index 174fb7d9..8a0003a3 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -263,6 +263,23 @@ $message: out parameter: error message to display on abort $user: the User object that was created. (Parameter added in 1.7) $byEmail: true when account was created "by email" (added in 1.12) +'AfterImportPage': When a page import is completed +$title: Title under which the revisions were imported +$origTitle: Title provided by the XML file +$revCount: Number of revisions in the XML file +$sRevCount: Number of sucessfully imported revisions +$pageInfo: associative array of page information + +'AfterUserMessage': After a user message has been left, this hook is +called to take care of any cleanup. +$user: The user who we left the message for. +$article: The article the message was left on. +$subject: The subject of the message +$text: The text of the message. +$signature: The signature we used. +$summary: The edit summary. +$editor: The editor that performed the edit. + 'AjaxAddScript': Called in output page just before the initialisation of the javascript ajax engine. The hook is only called when ajax is enabled ( $wgUseAjax = true; ). @@ -345,6 +362,13 @@ is the User object. In the hook, just add your callback to the $tokenFunctions array and return true (returning false makes no sense) $tokenFunctions: array(action => callback) +'ApiRsdServiceApis': Add or remove APIs from the RSD services list. +Each service should have its own entry in the $apis array and have a +unique name, passed as key for the array that represents the service data. +In this data array, the key-value-pair identified by the apiLink key is +required. +&$apis: array of services + 'ArticleAfterFetchContent': after fetching content of an article from the database $article: the article (object) being loaded from the database @@ -356,6 +380,10 @@ $article: the article (object) being deleted $output: the OutputPage object ($wgOut) &$reason: the reason (string) the article is being deleted +'ArticleContentOnDiff': before showing the article below a diff + $diffEngine: the DifferenceEngine + $output: the OutputPage object ($wgOut) + 'ArticleDelete': before an article is deleted $article: the article (object) being deleted $user: the user (object) deleting the article @@ -429,7 +457,7 @@ $moveonly: boolean whether it was for move only or not 'ArticlePurge': before executing "&action=purge" $article: article (object) to purge -'ArticleRevisionVisiblitySet': called when changing visibility of one or more +'ArticleRevisionVisibilitySet': called when changing visibility of one or more revision of an article &$title: title object of the article @@ -552,6 +580,9 @@ $user: the user who did the block (not the one being blocked) 'BookInformation': Before information output on Special:Booksources $isbn: ISBN to show information for $output: OutputPage object in use + +'CanonicalNamespaces': For extensions adding their own namespaces or altering the defaults +&$namespaces: Array of namespace numbers with corresponding canonical names 'CategoryPageView': before viewing a categorypage in CategoryPage::view $catpage: CategoryPage instance @@ -617,8 +648,9 @@ $section: The designation of the section being pointed to, to be included in the link, like "§ion=$section" $tooltip: The default tooltip. Escape with htmlspecialchars() before using. By default, this is wrapped in the 'editsectionhint' message. -$result: The HTML to return, prefilled with the default plus whatever other +&$result: The HTML to return, prefilled with the default plus whatever other changes earlier hooks have made +$lang: The language code to use for the link in the wfMsg* functions 'EditFilter': Perform checks on an edit $editor: Edit form (see includes/EditPage.php) @@ -717,7 +749,8 @@ $skin: Skin rendering the UI $title: Title being linked to $section: Section to link to $link: Default link -$result: Result (alter this to override the generated links) +&$result: Result (alter this to override the generated links) +$lang: The language code to use for the link in the wfMsg* functions 'EmailConfirmed': When checking that the user's email address is "confirmed" $user: User being checked @@ -731,17 +764,29 @@ $from: address of sending user $subject: subject of the mail $text: text of the mail +'EmailUserCC': before sending the copy of the email to the author +$to: address of receiving user +$from: address of sending user +$subject: subject of the mail +$text: text of the mail + 'EmailUserComplete': after sending email from one user to another $to: address of receiving user $from: address of sending user $subject: subject of the mail $text: text of the mail +'EmailUserForm': after building the email user form object +$form: HTMLForm object + 'EmailUserPermissionsErrors': to retrieve permissions errors for emailing a user. $user: The user who is trying to email another user. $editToken: The user's edit token. &$hookErr: Out-param for the error. Passed as the parameters to OutputPage::showErrorPage. +'ExtensionTypes': called when generating the extensions credits, use this to change the tables headers +&$extTypes: associative array of extensions types + 'FetchChangesList': When fetching the ChangesList derivative for a particular user &$user: User the list is being fetched for @@ -759,6 +804,8 @@ $reason: reason 'FileUpload': When a file upload occurs $file : Image object representing the file that was uploaded +$reupload : Boolean indicating if there was a previously another image there or not (since 1.17) +$hasDescription : Boolean indicating that there was already a description page and a new one from the comment wasn't created (since 1.17) 'FileUndeleteComplete': When a file is undeleted $title: title object to the file @@ -766,6 +813,12 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored $user: user who performed the undeletion $reason: reason +'FormatUserMessage': Hook to format a message if you want to override +the internal formatter. +$subject: Title of the message. +&$text: Text of the message. +$signature: Signature that they would like to leave. + 'GetAutoPromoteGroups': When determining which autopromote groups a user is entitled to be in. &$user: user to promote. @@ -789,6 +842,9 @@ $title: Title object of page $url: string value as output (out parameter, can modify) $query: query options passed to Title::getInternalURL() +'GetIP': modify the ip of the current user (called only once) +&$ip: string holding the ip as determined so far + 'GetLinkColours': modify the CSS class of an array of page links $linkcolour_ids: array of prefixed DB keys of the pages linked to, indexed by page_id. @@ -818,10 +874,6 @@ $result: User permissions error to add. If none, return true. 'getUserPermissionsErrorsExpensive': Absolutely the same, but is called only if expensive checks are enabled. -'HTMLCacheUpdate::doUpdate': After cache invalidation updates are inserted -into the job queue. -$title: Title object, pages linked to this title are purged. - 'ImageBeforeProduceHTML': Called before producing the HTML created by a wiki image insertion. You can skip the default logic entirely by returning false, or just modify a few things using call-by-reference. @@ -873,6 +925,29 @@ $page: ImagePage object $result[2 through n]=Parameters passed to body text message. Please note the header message cannot receive/use parameters. +'ImportHandleLogItemXMLTag': When parsing a XML tag in a log item +$reader: XMLReader object +$logInfo: Array of information +Return false to stop further processing of the tag + +'ImportHandlePageXMLTag': When parsing a XML tag in a page +$reader: XMLReader object +$pageInfo: Array of information +Return false to stop further processing of the tag + +'ImportHandleRevisionXMLTag': When parsing a XML tag in a page revision +$reader: XMLReader object +$revInfo: Array of information +Return false to stop further processing of the tag + +'ImportHandleToplevelXMLTag': When parsing a top level XML tag +$reader: XMLReader object +Return false to stop further processing of the tag + +'ImportHandleUploadXMLTag': When parsing a XML tag in a file upload +$reader: XMLReader object +$revisionInfo: Array of information +Return false to stop further processing of the tag 'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect $title: Title object ($wgTitle) @@ -964,20 +1039,20 @@ $linkType: The external link type 'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the actual update -&$linksUpdate: the LinkUpdate object +&$linksUpdate: the LinksUpdate object 'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating has completed -&$linksUpdate: the LinkUpdate object +&$linksUpdate: the LinksUpdate object 'LinksUpdateConstructed': At the end of LinksUpdate() is contruction. -&$linksUpdate: the LinkUpdate object +&$linksUpdate: the LinksUpdate object 'ListDefinedTags': When trying to find all defined tags. &$tags: The list of tags. -'LoadExtensionSchemaUpdates': called by maintenance/updaters.inc when upgrading -database schema +'LoadExtensionSchemaUpdates': called during database installation and updates +&updater: A DatabaseUpdater subclass 'LocalFile::getHistory': called before file history query performed $file: the file @@ -1038,7 +1113,9 @@ $magicWords: array of strings $variableIDs: array of strings 'MakeGlobalVariablesScript': called right before Skin::makeVariablesScript -is executed +is executed. Ideally, this hook should only be used to add variables that +depend on the current page/request; static configuration should be added +through ResourceLoaderGetConfigVars instead. &$vars: variable (or multiple variables) to be added into the output of Skin::makeVariablesScript @@ -1090,7 +1167,7 @@ been rendered (useful for adding more) Note: this is only run for the Monobook skin. This hook is deprecated and may be removed in the future. To add items to the toolbox you should use the SkinTemplateToolboxEnd hook instead, which works for all -'SkinTemplate'-type skins. +"SkinTemplate"-type skins. $tools: array of tools 'NewRevisionFromEditComplete': called when a revision was inserted @@ -1130,6 +1207,14 @@ the resulting HTML is about to be displayed. $parserOutput: the parserOutput (object) that corresponds to the page $text: the text that will be displayed, in HTML (string) +'OutputPageBodyAttributes': called when OutputPage::headElement is creating the body +tag to allow for extensions to add attributes to the body of the page they might +need. Or to allow building extensions to add body classes that aren't of high +enough demand to be included in core. +$out: The OutputPage which called the hook, can be used to get the real title +$sk: The Skin that called OutputPage::headElement +&$bodyAttrs: An array of attributes for the body tag passed to Html::openElement + 'OutputPageCheckLastModified': when checking if the page has been modified since the last visit &$modifiedTimes: array of timestamps. @@ -1274,13 +1359,23 @@ $errorMsg: an html message string of an error $article: the page the form is shown for $out: OutputPage object +'ResourceLoaderRegisterModules': Right before modules information is required, such as when responding to a resource +loader request or generating HTML output. +&$resourceLoader: ResourceLoader object + 'RawPageViewBeforeOutput': Right before the text is blown out in action=raw &$obj: RawPage object &$text: The text that's going to be the output -'RecentChange_save': called at the end of RecenChange::save() +'RecentChange_save': called at the end of RecentChange::save() $recentChange: RecentChange object +'ResourceLoaderGetConfigVars': called at the end of +ResourceLoaderStartUpModule::getConfig(). Use this to export static +configuration variables to JavaScript. Things that depend on the current +page/request state must be added through MakeGlobalVariablesScript instead. +&$vars: array( variable name => value ) + 'RevisionInsertComplete': called after a revision is inserted into the DB &$revision: the Revision $data: the data stored in old_text. The meaning depends on $flags: if external @@ -1319,6 +1414,16 @@ $query : Original query. 'SetupAfterCache': Called in Setup.php, after cache objects are set +'SetupUserMessageArticle': Called in User::leaveUserMessage() before +anything has been posted to the article. +$user: The user who we left the message for. +&$article: The article that will be posted to. +$subject: The subject of the message +$text: The text of the message. +$signature: The signature we used. +$summary: The edit summary. +$editor: The editor that performed the edit. + 'ShowMissingArticle': Called when generating the output for a non-existent page $article: The article object corresponding to the page @@ -1351,6 +1456,7 @@ Append to $text to add additional text/scripts after the stock bottom scripts. 'SkinAfterContent': Allows extensions to add text after the page content and article metadata. &$data: (string) Text to be printed out directly (without parsing) +$skin: Skin object This hook should work in all skins. Just set the &$data variable to the text you're going to add. @@ -1364,10 +1470,16 @@ $title: displayed page title $type: 'normal' or 'history' for old/diff views &$msg: overridable message; usually 'copyright' or 'history_copyright'. This message must be in HTML format, not wikitext! &$link: overridable HTML link to be passed into the message as $1 +&$forContent: overridable flag if copyright footer is shown in content language. -'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle() +'SkinGetPoweredBy' +&$text: additional 'powered by' icons in HTML. +Note: Modern skin does not use the MediaWiki icon but plain text instead $skin: Skin object + +'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle() &$subpages: Subpage links HTML +$skin: Skin object If false is returned $subpages will be used instead of the HTML subPageSubtitle() generates. If true is returned, $subpages will be ignored and the rest of @@ -1388,7 +1500,10 @@ $nav_urls: array of tabs [See http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/examples/Content_action.php for an example] -'SkinTemplateNavigation': Alter the structured navigation links in SkinTemplates +Alter the structured navigation links in SkinTemplates, there are three of these hooks called in different spots. +'SkinTemplateNavigation': Called on content pages before variants have been added +'SkinTemplateNavigation::SpecialPage': Called on special pages before variands have been added +'SkinTemplateNavigation::Universal': Called on both content and special pages after variants have been added &$sktemplate: SkinTemplate object &$links: Structured navigation links This is used to alter the navigation for skins which use buildNavigationUrls such as Vector. @@ -1464,6 +1579,11 @@ $movePage: MovePageForm object $oldTitle: old title (object) $newTitle: new title (object) +'SpecialNewpagesConditions': called when building sql query for Special:NewPages +&$special: NewPagesPager object (subclass of ReverseChronologicalPager) +$opts: FormOptions object containing special page options +&$conds: array of WHERE conditionals for query + 'SpecialPage_initList': called when setting up SpecialPage::$mList, use this hook to remove a core special page $list: list (array) of core special pages @@ -1483,16 +1603,21 @@ SpecialRecentChanges $opts: FormOptions for this request 'SpecialRecentChangesQuery': called when building sql query for -SpecialRecentChanges +SpecialRecentChanges and SpecialRecentChangesLinked &$conds: array of WHERE conditionals for query &$tables: array of tables to be queried &$join_conds: join conditions for the tables $opts: FormOptions for this request &$query_options: array of options for the database request +&$select: String '*' or array of columns to select + +'SpecialSearchGo': called when user clicked the "Go" +&$title: title object generated from the text entered by the user +&$term: the search term entered by the user 'SpecialSearchNogomatch': called when user clicked the "Go" button but the target doesn't exist -$title: title object generated from the text entred by the user +&$title: title object generated from the text entered by the user 'SpecialSearchProfiles': allows modification of search profiles &$profiles: profiles, which can be modified. @@ -1569,10 +1694,13 @@ You might set the member-variables $uploadFormTextTop and $uploadFormTextAfterSummary to inject text (HTML) either before or after the editform. -'UploadForm:BeforeProcessing': DEPRECATED! at the beginning of processUpload() +'UploadForm:BeforeProcessing': at the beginning of processUpload() $form: UploadForm object Lets you poke at member variables like $mUploadDescription before the file is saved. +Do not use this hook to break upload processing. This will return the user to +a blank form with no error message; use UploadVerification and +UploadVerifyFile instead 'UploadCreateFromRequest': when UploadBase::createFromRequest has been called $type: (string) the requested upload type @@ -1589,7 +1717,8 @@ $descriptor: (array) the HTMLForm descriptor added to the descriptor $descriptor: (array) the HTMLForm descriptor -'UploadVerification': additional chances to reject an uploaded file +'UploadVerification': additional chances to reject an uploaded file. Consider + using UploadVerifyFile instead. string $saveName: destination file name string $tempName: filesystem path to the temporary file for checks string &$error: output: message key for message to show if upload canceled @@ -1597,6 +1726,16 @@ string &$error: output: message key for message to show if upload canceled is the message key and the remaining elements are used as parameters to the message. +'UploadVerifyFile': extra file verification, based on mime type, etc. Preferred + in most cases over UploadVerification. +object $upload: an instance of UploadBase, with all info about the upload +string $mime: the uploaded file's mime type, as detected by MediaWiki. Handlers + will typically only apply for specific mime types. +object &$error: output: true if the file is valid. Otherwise, an indexed array + representing the problem with the file, where the first element + is the message key and the remaining elements are used as parameters to + the message. + 'UploadComplete': Upon completion of a file upload $uploadBase: UploadBase (or subclass) object. File can be accessed by $uploadBase->getLocalFile(). @@ -1762,10 +1901,6 @@ $user: User object &$timestamp: new timestamp, change this to override local email authentification timestamp -'UserToggles': called when initialising User::$mToggles, use this to add -new toggles -$toggles: array of toggles to add - 'WantedPages::getSQL': called in WantedPagesPage::getSQL(), can be used to alter the SQL query which gets the list of wanted pages &$wantedPages: WantedPagesPage object @@ -1779,6 +1914,13 @@ $article: article object to be watched $user: user that watched $article: article object watched +'WatchlistEditorBuildRemoveLine': when building remove lines in + Special:Watchlist/edit +&$tools: array of extra links +$title: Title object +$redirect: whether the page is a redirect +$skin: Skin object + 'WikiExporter::dumpStableQuery': Get the SELECT query for "stable" revisions dumps One, and only one hook should set this, and return false. diff --git a/docs/maintenance.txt b/docs/maintenance.txt index 039c71c5..988ff280 100644 --- a/docs/maintenance.txt +++ b/docs/maintenance.txt @@ -47,7 +47,7 @@ class DemoMaint extends Maintenance { } $maintClass = "DemoMaint"; -require_once( DO_MAINTENANCE ); +require_once( RUN_MAINTENANCE_IF_MAIN ); ==END== diff --git a/docs/memcached.txt b/docs/memcached.txt index da6add66..d8863c91 100644 --- a/docs/memcached.txt +++ b/docs/memcached.txt @@ -153,16 +153,20 @@ Newtalk: Parser Cache: stored in: $parserMemc controlled by: $wgEnableParserCache - key: $wgDBname:pcache:idhash:$pageid-$renderkey!$hash$edit + key: $wgDBname:pcache:idhash:$pageid-$renderkey!$hash $pageid: id of the page $renderkey: 1 if action=render, 0 otherwise - $hash: hash of user options, see User::getPageRenderingHash() - $edit: '!edit=0' if the user can't edit the page, '' otherwise + $hash: hash of user options applied to the page, see ParserOptions::optionsHash() ex: wikidb:pcache:idhash:1-0!1!0!!en!2 stores: ParserOutput object - modified by: Article::editUpdates() - expriy: $wgParserCacheExpireTime or one hour if it contains specific magic - words + modified by: Article::editUpdates() or Article::getOutputFromWikitext() + expiry: $wgParserCacheExpireTime or less if it contains short lived functions + + key: $wgDBname:pcache:idoptions:$pageid + stores: CacheTime object with an additional list of used options for the hash, + serves as ParserCache pointer. + modified by: ParserCache::save() + expiry: The same as the ParserCache entry it points to. Ping limiter: controlled by: $wgRateLimits diff --git a/docs/scripts.txt b/docs/scripts.txt index 2027d176..4af2a2b4 100644 --- a/docs/scripts.txt +++ b/docs/scripts.txt @@ -20,6 +20,9 @@ Primary scripts: Script that only serve images to logged in users. To configure the wiki to use that script, see http://www.mediawiki.org/wiki/Manual:Image_Authorisation. + load.php + Used by ResourceLoader to serve minified, concatenated and gzipped CSS and JS. + opensearch_desc.php Returns a OpenSearch description document (see http://www.opensearch.org/) that points to the search engines of the wiki. @@ -58,5 +61,5 @@ There is also a file with a .php5 extension for each script. They can be used if the web server needs a .php5 to run the file with the PHP 5 engine and runs .php scripts with PHP 4. To use these files, you have to modify $wgScriptExtension to '.php5' is LocalSettings.php but it is already done by the config script if you -used the config/index.php5 script. +used mw-config/index.php5 for installation. diff --git a/docs/skin.txt b/docs/skin.txt index a42369ce..bbe6fec5 100644 --- a/docs/skin.txt +++ b/docs/skin.txt @@ -1,8 +1,9 @@ skin.txt -MediaWiki's default skin is called Monobook, after the black-and-white photo of -a book, in the page background. This skin has been the default since MediaWiki -1.3 (2004). It is used on Wikipedia, and is popular on other sites. +MediaWiki's default skin is called Vector. This has been the case since +the 1.17 release (2011). This replaces the popular skin, Monobook which +had been been the default since MediaWiki 1.3 (2004). It is now the +default skin on Wikimedia Projects. There are three legacy skins which were introduced before MediaWiki 1.3: @@ -15,6 +16,11 @@ http://nostalgia.wikipedia.org/ * Cologne Blue: A nicer-looking alternative to Standard. +The other skin that is widely used (and is the MediaWiki default before 1.17) +is Monobook. + +* Monobook: Named after the black-and-white photo of a book, in the page background. +This was introduced in the 2004 release of 1.3 And there are four Monobook-derived skins which have been introduced since 1.3: @@ -29,7 +35,6 @@ top bar. * Modern: An attractive blue/grey theme with sidebar and top bar. - == Custom CSS/JS == It is possible to customise the site CSS and JavaScript without editing any -- cgit v1.2.2