Fix bug in BacklinkCache: the lack of an ORDER BY clause in getLinks(), combined...
[lhc/web/wiklou.git] / docs / hooks.txt
index 9e6203a..d4ce23b 100644 (file)
@@ -16,10 +16,10 @@ event
 hook
      A clump of code and data that should be run when an event happens. This can
      be either a function and a chunk of data, or an object and a method.
-     
+
 hook function
      The function part of a hook.
-     
+
 ==Rationale==
 
 Hooks allow us to decouple optionally-run code from code that is run for
@@ -54,21 +54,21 @@ email notification when an article is shown may add:
 
     function showAnArticle($article) {
         global $wgReverseTitle, $wgCapitalizeTitle, $wgNotifyArticle;
-       
+
                if ($wgReverseTitle) {
                        wfReverseTitle($article);
                }
-       
+
                if ($wgCapitalizeTitle) {
                        wfCapitalizeTitle($article);
                }
 
                # code to actually show the article goes here
-       
+
                if ($wgNotifyArticle) {
                        wfNotifyArticleShow($article));
                }
-    }
+       }
 
 Using a hook-running strategy, we can avoid having all this option-specific
 stuff in our mainline code. Using hooks, the function becomes:
@@ -87,7 +87,7 @@ We've cleaned up the code here by removing clumps of weird, infrequently used
 code and moving them off somewhere else. It's much easier for someone working
 with this code to see what's _really_ going on, and make changes or fix bugs.
 
-In addition, we can take all the code that deals with the little-used 
+In addition, we can take all the code that deals with the little-used
 title-reversing options (say) and put it in one place. Instead of having little
 title-reversing if-blocks spread all over the codebase in showAnArticle,
 deleteAnArticle, exportArticle, etc., we can concentrate it all in an extension
@@ -116,8 +116,8 @@ Having all this code related to the title-reversion option in one place means
 that it's easier to read and understand; you don't have to do a grep-find to see
 where the $wgReverseTitle variable is used, say.
 
-If the code is well enough isolated, it can even be excluded when not used -- 
-making for some slight savings in memory and load-up performance at runtime. 
+If the code is well enough isolated, it can even be excluded when not used --
+making for some slight savings in memory and load-up performance at runtime.
 Admins who want to have all the reversed titles can add:
 
        require_once('extensions/ReverseTitle.php');
@@ -162,7 +162,7 @@ would result in the following code being executed when 'EventName' happened:
        $object->someMethod($param1, $param2)
        # object with method and data
        $object->someMethod($someData, $param1, $param2)
-      
+
 Note that when an object is the hook, and there's no specified method, the
 default method called is 'onEventName'. For different events this would be
 different: 'onArticleSave', 'onUserLogin', etc.
@@ -183,13 +183,13 @@ Hooks can return three possible values:
                    should be shown to the user
   * false: the hook has successfully done the work necessary and the calling
            function should skip
-       
+
 The last result would be for cases where the hook function replaces the main
 functionality. For example, if you wanted to authenticate users to a custom
 system (LDAP, another PHP program, whatever), you could do:
 
        $wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
-  
+
        function ldapLogin($username, $password) {
                # log user into LDAP
                return false;
@@ -199,7 +199,7 @@ Returning false makes less sense for events where the action is complete, and
 will normally be ignored.
 
 Note that none of the examples made use of create_function() as a way to
-attach a function to a hook. This is known to cause problems (notably with 
+attach a function to a hook. This is known to cause problems (notably with
 Special:Version), and should be avoided when at all possible.
 
 ==Using hooks==
@@ -207,7 +207,7 @@ Special:Version), and should be avoided when at all possible.
 A calling function or method uses the wfRunHooks() function to run the hooks
 related to a particular event, like so:
 
-       class Article { 
+       class Article {
                # ...
                function protect() {
                        global $wgUser;
@@ -217,7 +217,7 @@ related to a particular event, like so:
                        }
                }
        }
-                                                   
+
 wfRunHooks() returns true if the calling function should continue processing
 (the hooks ran OK, or there are no hooks to run), or false if it shouldn't (an
 error occurred, or one of the hooks handled the action already). Checking the
@@ -270,7 +270,7 @@ is enabled ( $wgUseAjax = true; ).
 'AlternateEdit': before checking if an user can edit a page and
 before showing the edit form ( EditPage::edit() ). This is triggered
 on &action=edit.
-$EditPage : the EditPage object
+$EditPage: the EditPage object
 
 'APIAfterExecute': after calling the execute() method of an API module.
 Use this to extend core API modules.
@@ -282,7 +282,7 @@ fail, returning an error message or an <edit result="Failure"> tag
 if $resultArr was filled.
 $EditPage : the EditPage object
 $text : the new text of the article (has yet to be saved)
-$resultArr : data in this array will be added to the API result
+&$resultArr : data in this array will be added to the API result
 
 'APIGetAllowedParams': use this hook to modify a module's parameters.
 &$module: Module object
@@ -350,6 +350,12 @@ the database
 $article: the article (object) being loaded from the database
 $content: the content (string) of the article
 
+'ArticleConfirmDelete': before writing the confirmation form for article
+       deletion
+$article: the article (object) being deleted
+$output: the OutputPage object ($wgOut)
+&$reason: the reason (string) the article is being deleted
+
 'ArticleDelete': before an article is deleted
 $article: the article (object) being deleted
 $user: the user (object) deleting the article
@@ -396,7 +402,7 @@ $revision: New Revision of the article
 
 'ArticleMergeComplete': after merging to article using Special:Mergehistory
 $targetTitle: target title (object)
-$destTitle: destination title (object) 
+$destTitle: destination title (object)
 
 'ArticlePageDataAfter': after loading data of an article from the database
 $article: article (object) whose data were loaded
@@ -420,7 +426,7 @@ $protect: boolean whether it was a protect or an unprotect
 $reason: Reason for protect
 $moveonly: boolean whether it was for move only or not
 
-'ArticlePurge': before executing "&action=purge" 
+'ArticlePurge': before executing "&action=purge"
 $article: article (object) to purge
 
 'ArticleRevisionVisiblitySet': called when changing visibility of one or more
@@ -463,6 +469,7 @@ $baseRevId: the rev ID (or false) this edit was based on
 $title: Title corresponding to the article restored
 $create: Whether or not the restoration caused the page to be created
 (i.e. it didn't exist before)
+$comment: The comment associated with the undeletion.
 
 'ArticleUpdateBeforeRedirect': After a page is updated (usually on save),
 before the user is redirected back to the page
@@ -503,9 +510,17 @@ rendered inline in wiki pages or galleries in category pages.
 
 'BeforeGalleryFindFile': before an image is fetched for a gallery
 &$gallery,: the gallery object
-&$nt: the image title 
+&$nt: the image title
 &$time: image timestamp
 
+'BeforeInitialize': before anything is initialized in performRequestForTitle()
+&$title: Title being used for request
+&$article: The associated Article object
+&$output: OutputPage object
+&$user: User
+$request: WebRequest object
+$mediaWiki: Mediawiki object
+
 'BeforePageDisplay': Prior to outputting a page
 &$out: OutputPage object
 &$skin: Skin object
@@ -538,17 +553,25 @@ $user: the user who did the block (not the one being blocked)
 $isbn: ISBN to show information for
 $output: OutputPage object in use
 
+'CacheHeadersAfterSet': after cache headers have been set in 
+OutputPage::sendCacheControl, so they can be overridden without 
+disabling output method
+$out: OutputPage instance
 'CategoryPageView': before viewing a categorypage in CategoryPage::view
 $catpage: CategoryPage instance
 
 'ChangesListInsertArticleLink': Override or augment link to article in RC list.
-&$this:        ChangesList instance.
+&$changesList: ChangesList instance.
 &$articlelink: HTML of link to article (already filled-in).
 &$s:           HTML of row that is being constructed.
 &$rc:          RecentChange instance.
 $unpatrolled:  Whether or not we are showing unpatrolled changes.
 $watched:      Whether or not the change is watched by the user.
 
+'ConfirmEmailComplete': Called after a user's email has been confirmed successfully
+$user: user (object) whose email is being confirmed
+
 'ContribsPager::getQueryInfo': Before the contributions query is about to run
 &$pager: Pager object for contributions
 &queryInfo: The query for the contribs Pager
@@ -571,6 +594,9 @@ Return true to allow the normal editor to be used, or false
 if implementing a custom editor, e.g. for a special namespace,
 etc.
 
+'DatabaseOraclePostInit': Called after initialising an Oracle database
+&$db: the DatabaseOracle object
+
 'NewDifferenceEngine': Called when a new DifferenceEngine object is made
 $title: the diff page title (nullable)
 &$oldId: the actual old Id to use in the diff
@@ -609,7 +635,7 @@ $summary: Edit summary for page
 'EditFilterMerged': Post-section-merge edit filter
 $editor: EditPage instance (object)
 $text: content of the edit box
-$error: error message to return
+&$error: error message to return
 $summary: Edit summary for page
 
 'EditFormPreloadText': Allows population of the edit form when creating
@@ -619,7 +645,13 @@ new pages
 
 'EditPage::attemptSave': called before an article is
 saved, that is before insertNewArticle() is called
-&$editpage_Obj: the current EditPage object
+$editpage_Obj: the current EditPage object
+
+'EditPage::importFormData': allow extensions to read additional data
+posted in the form
+$editpage: EditPage instance 
+$request: Webrequest
+return value is ignored (should always return true)
 
 'EditPage::showEditForm:fields': allows injection of form field into edit form
 &$editor: the EditPage instance for reference
@@ -654,6 +686,20 @@ textarea in the edit form
 &$checks: Array of edit checks like "watch this page"/"minor edit"
 &$tabindex: HTML tabindex of the last edit check/button
 
+'EditPageBeforeEditToolbar': allows modifying the edit toolbar above the
+textarea in the edit form
+&$toolbar: The toolbar HTMl
+
+'EditPageCopyrightWarning': Allow for site and per-namespace customization of contribution/copyright notice.
+$title: title of page being edited
+&$msg: localization message name, overridable. Default is either 'copyrightwarning' or 'copyrightwarning2'
+
+'EditPageTosSummary':  Give a chance for site and per-namespace customizations
+of terms of service summary link that might exist separately from the copyright
+notice.
+$title: title of page being edited
+&$msg: localization message name, overridable. Default is 'editpage-tos-summary'
+
 'EditSectionLink': Do not use, use DoEditSectionLink instead.
 $skin: Skin rendering the UI
 $title: Title being linked to
@@ -741,6 +787,11 @@ $title: Title object of page
 $url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getLocalURL()
 
+'getOtherBlockLogLink': Get links to the block log from extensions which blocks
+       users and/or IP addresses too
+$otherBlockLink: An array with links to other block logs
+$ip: The requested IP address or username
+
 'GetPreferences': modify user preferences
 $user: User whose preferences are being modified.
 &$preferences: Preferences description array, to be fed to an HTMLForm object
@@ -767,7 +818,7 @@ $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.
-&$this: Skin object
+&$skin: Skin object
 &$title: Title object of the image
 &$file: File object, or false if it doesn't exist
 &$frameParams: Various parameters with special meanings; see documentation in
@@ -783,6 +834,11 @@ $title: Title object, pages linked to this title are purged.
 $imagePage: ImagePage object ($this)
 $output: $wgOut
 
+'ImagePageAfterImageLinks': called after the image links section on an image 
+       page is built
+$imagePage: ImagePage object ($this)
+&$html: HTML for the hook to add
+
 'ImagePageFileHistoryLine': called when a file history line is contructed
 $file: the file
 $line: the HTML of the history line
@@ -793,6 +849,24 @@ $page: ImagePage object
 &$file: File object
 &$displayFile: displayed File object
 
+'ImagePageShowTOC': called when the file toc on an image page is generated
+$page: ImagePage object
+&$toc: Array of <li> strings
+
+'ImgAuthBeforeStream': executed before file is streamed to user, but only when
+       using img_auth.php
+&$title: the Title object of the file as it would appear for the upload page
+&$path: the original file and path name when img_auth was invoked by the the web
+       server
+&$name: the name only component of the file
+&$result: The location to pass back results of the hook routine (only used if
+       failed)
+       $result[0]=The index of the header message
+       $result[1]=The index of the body text message
+       $result[2 through n]=Parameters passed to body text message. Please note the
+       header message cannot receive/use parameters.
+
+
 'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect
 $title: Title object ($wgTitle)
 $request: WebRequest
@@ -802,9 +876,12 @@ $article: Article object
 
 'InternalParseBeforeLinks': during Parser's internalParse method before links
 but after noinclude/includeonly/onlyinclude and other processing.
-&$this: Parser object
+&$parser: Parser object
 &$text: string containing partially parsed text
-&$this->mStripState: Parser's internal StripState object
+&$stripState: Parser's internal StripState object
+
+'InvalidateEmailComplete': Called after a user's email has been invalidated successfully
+$user: user (object) whose email is being invalidated
 
 'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
 $article: article (object) being checked
@@ -823,13 +900,15 @@ $password: The password entered by the user
 &$result: Set this and return false to override the internal checks
 $user: User the password is being validated for
 
-'LanguageGetMagic': Use this to define synonyms of magic words depending
-of the language
+'LanguageGetMagic': DEPRECATED, use $magicWords in a file listed in 
+$wgExtensionMessagesFiles instead. 
+Use this to define synonyms of magic words depending of the language
 $magicExtensions: associative array of magic words synonyms
 $lang: laguage code (string)
 
-'LanguageGetSpecialPageAliases': Use to define aliases of special pages
-names depending of the language
+'LanguageGetSpecialPageAliases': DEPRECATED, use $specialPageAliases in a file
+listed in $wgExtensionMessagesFiles instead.
+Use to define aliases of special pages names depending of the language
 $specialPageAliases: associative array of magic words synonyms
 $lang: laguage code (string)
 
@@ -890,10 +969,6 @@ completed
 'ListDefinedTags': When trying to find all defined tags.
 &$tags: The list of tags.
 
-'LoadAllMessages': called by MessageCache::loadAllMessages() to load extensions
-messages
-&$messageCache: The MessageCache object
-
 'LoadExtensionSchemaUpdates': called by maintenance/updaters.inc when upgrading
 database schema
 
@@ -905,6 +980,11 @@ $conds: conditions
 $opts: query options
 $join_conds: JOIN conditions
 
+'LocalisationCacheRecache': Called when loading the localisation data into cache
+$cache: The LocalisationCache object
+$code: language code
+&$alldata: The localisation data from core and extensions
+
 'LoginAuthenticateAudit': a login attempt for a valid user account either
 succeeded or failed. No return data is accepted; this hook is for auditing only.
 $user: the User object being authenticated against
@@ -924,7 +1004,7 @@ $paramArray: Array of parameters that corresponds to logging.log_params field.
 &$comment: string that corresponds to logging.log_comment database field, and
        which is displayed in the UI.
 &$revert: string that is displayed in the UI, similar to $comment.
-$time: timestamp of the log entry (added in 1.12) 
+$time: timestamp of the log entry (added in 1.12)
 
 'LogPageValidTypes': action being logged.
 DEPRECATED: Use $wgLogTypes
@@ -943,15 +1023,16 @@ DEPRECATED: Use $wgLogActions
 &$actionText: array of strings
 
 'MagicWordMagicWords': When defining new magic word.
-DEPRECATED: Use LanguageGetMagic hook instead
+DEPRECATED: use $magicWords in a file listed in 
+$wgExtensionMessagesFiles instead.
 $magicWords: array of strings
 
 'MagicWordwgVariableIDs': When definig new magic words IDs.
 $variableIDs: array of strings
 
 'MakeGlobalVariablesScript': called right before Skin::makeVariablesScript
-is executed   
-&$vars: variable (or multiple variables) to be added into the output   
+is executed
+&$vars: variable (or multiple variables) to be added into the output
        of Skin::makeVariablesScript
 
 'MarkPatrolled': before an edit is marked patrolled
@@ -974,12 +1055,12 @@ $errmsg: error message, in HTML (string). Nonempty indicates failure
 'MediaWikiPerformAction': Override MediaWiki::performAction().
 Use this to do something completely different, after the basic
 globals have been set up, but before ordinary actions take place.
-$output:  $wgOut
+$output: $wgOut
 $article: $wgArticle
-$title:   $wgTitle
-$user:    $wgUser
+$title: $wgTitle
+$user: $wgUser
 $request: $wgRequest
-$this:    The $mediawiki object
+$mediaWiki: The $mediawiki object
 
 'MessagesPreLoad': When loading a message from the database
 $title: title of the message (string)
@@ -990,12 +1071,12 @@ Useful for updating caches.
 $title: name of the page changed.
 $text: new contents of the page.
 
-'MessageNotInMwNs': When trying to get a message that isn't found in the
-MediaWiki namespace (but before checking the message files)
-&$message: message's content; can be changed
-$lckey: message's name
-$langcode: language code
-$isFullKey: specifies whether $lckey is a two part key "msg/lang"
+'ModifyExportQuery': Modify the query used by the exporter.
+$db: The database object to be queried.
+&$tables: Tables in the query.
+&$conds: Conditions in the query.
+&$opts: Options for the query.
+&$join_conds: Join conditions for the query.
 
 'MonoBookTemplateToolboxEnd': Called by Monobook skin after toolbox links have
 been rendered (useful for adding more)
@@ -1032,8 +1113,8 @@ Hooks can alter or append to the array of URLs for search & suggestion formats.
 &$urls: array of associative arrays with Url element attributes
 
 'OutputPageBeforeHTML': a page has been processed by the parser and
-the resulting HTML is about to be displayed.  
-$parserOutput: the parserOutput (object) that corresponds to the page 
+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)
 
 'OutputPageCheckLastModified': when checking if the page has been modified
@@ -1074,7 +1155,7 @@ $hash: reference to a hash key string which can be modified
 'ParserAfterStrip': Same as ParserBeforeStrip
 
 'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
-$parser: Parser object being used 
+$parser: Parser object being used
 $text: text that'll be returned
 
 'ParserBeforeInternalParse': called at the beginning of Parser::internalParse()
@@ -1089,7 +1170,7 @@ $text: text being parsed
 $stripState: stripState used (object)
 
 'ParserBeforeTidy': called before tidy and custom tags replacements
-$parser: Parser object being used 
+$parser: Parser object being used
 $text: actual text
 
 'ParserClearState': called at the end of Parser::clearState()
@@ -1105,6 +1186,7 @@ $varCache: array to store the value in case of multiples calls of the
        same magic word
 $index: index (string) of the magic
 $ret: value of the magic word (the hook should set it)
+$frame: PPFrame object to use for expanding any template variables
 
 'ParserGetVariableValueTs': use this to change the value of the time for the
 {{LOCAL...}} magic word
@@ -1166,6 +1248,18 @@ $user: User (object) changing his passoword
 $newPass: new password
 $error: error (string) 'badretype', 'wrongpassword', 'error' or 'success'
 
+'ProtectionForm::buildForm': called after all protection type fieldsets are made in the form
+$article: the title being (un)protected
+$output: a string of the form HTML so far
+
+'ProtectionForm::save': called when a protection form is submitted
+$article: the title being (un)protected
+$errorMsg: an html message string of an error
+
+'ProtectionForm::showLogExtract': called after the protection log extract is shown
+$article: the page the form is shown for
+$out: OutputPage 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
@@ -1194,11 +1288,21 @@ $term : Search term string
 
 'SetupAfterCache': Called in Setup.php, after cache objects are set
 
+'ShowMissingArticle': Called when generating the output for a non-existent page
+$article: The article object corresponding to the page
+
 'ShowRawCssJs': Customise the output of raw CSS and JavaScript in page views
 $text: Text being shown
 $title: Title of the custom script/stylesheet page
 $output: Current OutputPage object
 
+'ShowSearchHitTitle': Customise display of search hit title/link.
+&$title: Title to link to
+&$text: Text to use for the link
+$result: The search result
+$terms: The search terms entered
+$page: The SpecialSearch object.
+
 'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
 &$siteNotice: HTML returned as the sitenotice
 Return true to allow the normal method of notice selection/rendering to work,
@@ -1224,6 +1328,12 @@ $skin: Skin object
 &$bar: Sidebar contents
 Modify $bar to add or modify sidebar portlets.
 
+'SkinCopyrightFooter': Allow for site and per-namespace customization of copyright notice.
+$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
+
 'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
 $skin: Skin object
 &$subpages: Subpage links HTML
@@ -1247,6 +1357,11 @@ $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
+&$sktemplate: SkinTemplate object
+&$links: Structured navigation links
+This is used to alter the navigation for skins which use buildNavigationUrls such as Vector.
+
 'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage()
 starts page output
 &$sktemplate: SkinTemplate object
@@ -1262,15 +1377,15 @@ $out: Css to return
 'SkinTemplateTabAction': Override SkinTemplate::tabAction().
 You can either create your own array, or alter the parameters for
 the normal one.
-&$this:     The SkinTemplate instance.
-$title:     Title instance for the page.
-$message:   Visible label of tab.
-$selected:  Whether this is a selected tab.
+&$sktemplate: The SkinTemplate instance.
+$title: Title instance for the page.
+$message: Visible label of tab.
+$selected: Whether this is a selected tab.
 $checkEdit: Whether or not the action=edit query should be added if appropriate.
-&$classes:  Array of CSS classes to apply.
-&$query:    Query string to add to link.
-&$text:     Link text.
-&$result:   Complete assoc. array if you want to return true.
+&$classes: Array of CSS classes to apply.
+&$query: Query string to add to link.
+&$text: Link text.
+&$result: Complete assoc. array if you want to return true.
 
 'SkinTemplateTabs': called when finished to build the actions tabs
 $sktemplate: SkinTemplate object
@@ -1322,6 +1437,15 @@ $newTitle: new title (object)
 hook to remove a core special page
 $list: list (array) of core special pages
 
+'SpecialRandomGetRandomTitle': called during the execution of Special:Random,
+use this to change some selection criteria or substitute a different title
+&$randstr: The random number from wfRandom()
+&$isRedir: Boolean, whether to select a redirect or non-redirect 
+&$namespaces: An array of namespace indexes to get the title from
+&$extra: An array of extra SQL statements 
+&$title: If the hook returns false, a Title object to use instead of the
+result from the normal query
+
 'SpecialRecentChangesPanel': called when building form options in
 SpecialRecentChanges
 &$extraOpts: array of added items, to which can be added
@@ -1338,6 +1462,9 @@ $opts: FormOptions for this request
 target doesn't exist
 $title: title object generated from the text entred by the user
 
+'SpecialSearchProfiles': allows modification of search profiles
+&$profiles: profiles, which can be modified.
+
 'SpecialSearchResults': called before search result display when there
 are matches
 $term: string of search term
@@ -1348,6 +1475,14 @@ $term: string of search term
 no matches
 $term: string of search term
 
+'SpecialStatsAddExtra': add extra statistic at the end of Special:Statistics
+&$extraStats: Array to save the new stats 
+              ( $extraStats['<name of statistic>'] => <value>; )
+
+'SpecialUploadComplete': Called after successfully uploading a file from 
+Special:Upload
+$form: The SpecialUpload object
+
 'SpecialVersionExtensionTypes': called when generating the extensions credits,
 use this to change the tables headers
 $extTypes: associative array of extensions types
@@ -1363,6 +1498,11 @@ database result
 &$titleArray: set this to an object to override the default object returned
 $res: database result used to create the object
 
+'TitleGetRestrictionTypes': Allows extensions to modify the types of protection
+  that can be applied.
+$title: The title in question.
+&$types: The types of protection available.
+
 'TitleMoveComplete': after moving an article (title)
 $old: old title
 $nt: new title
@@ -1391,25 +1531,32 @@ $article: article object removed
 $user: user that watched
 $article: article object that was watched
 
-'UploadForm:initial': before the upload form is generated
-$form: UploadForm object
-You might set the member-variables $uploadFormTextTop and 
-$uploadFormTextAfterSummary to inject text (HTML) either before
-or after the editform.
+'UploadCreateFromRequest': when UploadBase::createFromRequest has been called
+$type: (string) the requested upload type
+&$className: the class name of the Upload instance to be created
+
+'UploadComplete': when Upload completes an upload
+&$upload: an UploadBase child instance
+
+'UploadFormInitDescriptor': after the descriptor for the upload form as been 
+       assembled
+$descriptor: (array) the HTMLForm descriptor
 
-'UploadForm:BeforeProcessing': at the beginning of processUpload()
-$form: UploadForm object
-Lets you poke at member variables like $mUploadDescription before the
-file is saved.
+'UploadFormSourceDescriptors': after the standard source inputs have been 
+added to the descriptor
+$descriptor: (array) the HTMLForm descriptor
 
 'UploadVerification': additional chances to reject an uploaded file
 string $saveName: destination file name
 string $tempName: filesystem path to the temporary file for checks
-string &$error: output: HTML error to show if upload canceled by returning false
+string &$error: output: message key for message to show if upload canceled 
+       by returning false. May also be an array, 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
-$uploadForm: Upload form object. File can be accessed by
-       $uploadForm->mLocalFile.
+$uploadBase: UploadBase (or subclass) object. File can be accessed by
+       $uploadBase->getLocalFile().
 
 'User::mailPasswordInternal': before creation and mailing of a user's new
 temporary password
@@ -1434,7 +1581,6 @@ $result: Pointer to result returned if hook returns false. If null is returned,
 $user: User (object) whose permission is being checked
 &$canSend: bool set on input, can override on output
 
-
 'UserClearNewTalkNotification': called when clearing the
 "You have new messages!" message, return false to not delete it
 $user: User (object) that'll clear the message
@@ -1480,12 +1626,20 @@ $user: User object
 &$groups: List of implicit (automatically-assigned) groups
 
 'UserGetReservedNames': allows to modify $wgReservedUsernames at run time
-*&$reservedUsernames: $wgReservedUsernames
+&$reservedUsernames: $wgReservedUsernames
 
 'UserGetRights': Called in User::getRights()
 $user: User to get rights for
 &$rights: Current rights
 
+'UserIsBlockedFrom': Check if a user is blocked from a specific page (for specific block
+       exemptions).
+$user: User in question
+$title: Title of the page in question
+&$blocked: Out-param, whether or not the user is blocked from that page.
+&$allowUsertalk: If the user is blocked, whether or not the block allows users to edit their
+                  own user talk pages.
+
 'UserIsBlockedGlobally': Check if user is blocked on all wikis.
 &$user: User object
 $ip: User's IP address
@@ -1517,17 +1671,17 @@ $user: User object
 'UserLoginComplete': after a user has logged in
 $user: the user object that was created on login
 $inject_html: Any HTML to inject after the "logged in" message.
-                   
+
 'UserLoginForm': change to manipulate the login form
 $template: SimpleTemplate instance for the form
 
 'UserLoginMailPassword': Block users from emailing passwords
 $name: the username to email the password of.
-&$error: out-param ÐÊthe error message to return.
+&$error: out-param the error message to return.
 
 'UserLogout': before a user logs out
 $user: the user object that is about to be logged out
-       
+
 'UserLogoutComplete': after a user has logged out
 $user: the user object _after_ logout (won't have name, ID, etc.)
 $inject_html: Any HTML to inject after the "logged out" message.
@@ -1538,19 +1692,6 @@ $user  : User object that was changed
 $add   : Array of strings corresponding to groups added
 $remove: Array of strings corresponding to groups removed
 
-'UserrightsChangeableGroups': allows modification of the groups a user
-may add or remove via Special:UserRights
-$userrights  : UserrightsPage object
-$user        : User object of the current user
-$addergroups : Array of groups that the user is in
-&$groups     : Array of groups that can be added or removed. In format of
-                               array( 
-                                       'add'         => array( addablegroups ), 
-                                       'remove'      => array( removablegroups ), 
-                                       'add-self'    => array( addablegroups to self ),
-                                       'remove-self' => array( removable groups from self )
-                               )
-
 'UserRetrieveNewTalks': called when retrieving "You have new messages!"
 message(s)
 $user: user retrieving new talks messages
@@ -1582,6 +1723,13 @@ authentification timestamp
 new toggles
 $toggles: array of toggles to add
 
+'VectorTemplateToolboxEnd': Called by Vector skin after toolbox links have
+been rendered (useful for adding more)
+Note: this is only run for the Vector skin.  To add items to the toolbox
+for all 'SkinTemplate'-type skins, use the SkinTemplateToolboxEnd hook
+instead.
+$tools: array of tools
+
 'WantedPages::getSQL': called in WantedPagesPage::getSQL(), can be used to
 alter the SQL query which gets the list of wanted pages
 &$wantedPages: WantedPagesPage object
@@ -1606,5 +1754,19 @@ One, and only one hook should set this, and return false.
 query pages to be updated with maintenance/updateSpecialPages.php
 $query: $wgQueryPages itself
 
+'XmlDumpWriterOpenPage': Called at the end of XmlDumpWriter::openPage, to allow extra
+ metadata to be added.
+$obj: The XmlDumpWriter object.
+&$out: The output string.
+$row: The database row for the page.
+$title: The title of the page.
+
+'XmlDumpWriterWriteRevision': Called at the end of a revision in an XML dump, to add extra
+ metadata.
+$obj: The XmlDumpWriter object.
+&$out: The text being output.
+$row: The database row for the revision.
+$text: The revision text.
+
 More hooks might be available but undocumented, you can execute
 ./maintenance/findhooks.php to find hidden one.