This is a list of known events and parameters; please add to it if you're going
to add events to the MediaWiki code.
+'AbortAutoAccount': Return false to cancel automated local account creation, where normally authentication against an external auth plugin would be creating a local account.
+$user: the User object about to be created (read-only, incomplete)
+$message: out parameter: error message to be displayed to user
+
'AbortAutoblock': Return false to cancel an autoblock.
$autoblockip: The IP going to be autoblocked.
$block: The block from which the autoblock is coming.
&$retval: a LoginForm class constant to return from authenticateUserData();
default is LoginForm::ABORTED. Note that the client may be using
a machine API rather than the HTML user interface.
+&$msg: the message identifier for abort reason (new in 1.18, not available before 1.18)
'AbortMove': allows to abort moving an article (title)
$old: old title
$err: error message
$reason: the reason for the move (added in 1.13)
-'AbortNewAccount': Return false to cancel account creation.
+'AbortNewAccount': Return false to cancel explicit account creation.
$user: the User object about to be created (read-only, incomplete)
$message: out parameter: error message to display on abort
$tokenFunctions array and return true (returning false makes no sense)
$tokenFunctions: array(action => callback)
+'APIQuerySiteInfoGeneralInfo': use this hook to add extra information to
+the sites general information.
+$module: the current ApiQuerySiteInfo module
+&$results: array of results, add things here
+
'APIQueryUsersTokens': use this hook to add custom token to list=users.
Every token has an action, which will be used in the ustoken parameter
and in the output (actiontoken="..."), and a callback function which
$article: article (object) that data will be loaded
$fields: fileds (array) to load from the database
+'ArticlePrepareTextForEdit': called when preparing text to be saved
+$article: the article being saved
+$popts: parser options to be used for pre-save transformation
+
'ArticleProtect': before an article is protected
$article: the article being protected
$user: the user doing the protection
&$sectionanchor: The section anchor link (e.g. "#overview" )
&$extraq: Extra query parameters which can be added via hooked functions
+'ArticleViewFooter': After showing the footer section of an ordinary page view
+$article: Article object
+
'ArticleViewHeader': Before the parser cache is about to be tried for article
viewing.
&$article: the article
Change $bad and return false to override. If an image is "bad", it is not
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
-&$time: image timestamp
-
'BeforeInitialize': before anything is initialized in performRequestForTitle()
&$title: Title being used for request
&$article: The associated Article object
&$out: OutputPage object
&$skin: Skin object
+'BeforeParserFetchFileAndTitle': before an image is rendered by Parser
+$parser: Parser object
+$nt: the image title
+&$time: the image timestamp (use '0' to force a broken thumbnail)
+&$sha1: image base 36 sha1 (used to specify the file, $nt will be ignored if this is set)
+&$descQuery: query string to add to thumbnail URL
+
'BeforeParserFetchTemplateAndtitle': before a template is fetched by Parser
-&$parser: Parser object
-&$title: title of the template
+$parser: Parser object
+$title: title of the template
&$skip: skip this template and link it?
&$id: the id of the revision being parsed
-'BeforeParserMakeImageLinkObj': before an image is rendered by Parser
-&$parser: Parser object
-&$nt: the image title
-&$skip: skip this image and link it?
-&$time: the image timestamp
-
'BeforeParserrenderImageGallery': before an image gallery is rendered by Parser
&$parser: Parser object
&$ig: ImageGallery object
+'BeforeWelcomeCreation': before the welcomecreation message is displayed to a newly created user
+&$welcome_creation_msg: MediaWiki message name to display on the welcome screen to a newly created user account
+&$injected_html: Any HTML to inject after the "logged in" message of a newly created user account
+
+'BitmapHandlerTransform': before a file is transformed, gives extension the
+possibility to transform it themselves
+$handler: BitmapHandler
+$image: File
+&$scalerParams: Array with scaler parameters
+&$mto: null, set to a MediaTransformOutput
+
'BlockIp': before an IP address or user is blocked
$block: the Block object about to be saved
$user: the user _doing_ the block (not the one being blocked)
'FetchChangesList': When fetching the ChangesList derivative for
a particular user
-&$user: User the list is being fetched for
+$user: User the list is being fetched for
&$skin: Skin object to be used with the list
&$list: List object (defaults to NULL, change it to an object
instance and return false override the list derivative used)
$url: string value as output (out parameter, can modify)
$query: query options passed to Title::getLocalURL()
+'GetMetadataVersion': modify the image metadata version currently in use. This is
+ used when requesting image metadata from a ForiegnApiRepo. Media handlers
+ that need to have versioned metadata should add an element to the end of
+ the version array of the form 'handler_name=version'. Most media handlers
+ won't need to do this unless they broke backwards compatibility with a
+ previous version of the media handler metadata output.
+&$version: Array of version strings
+
'GetPreferences': modify user preferences
$user: User whose preferences are being modified.
&$preferences: Preferences description array, to be fed to an HTMLForm object
$target: Title/string of redirect target
$article: Article object
+'InterwikiLoadPrefix': When resolving if a given prefix is an interwiki or not.
+Return true without providing an interwiki to continue interwiki search.
+$prefix: interwiki prefix we are looking for.
+&$iwData: output array describing the interwiki with keys iw_url, iw_local,
+ iw_trans and optionally iw_api and iw_wikiid.
+
'InternalParseBeforeLinks': during Parser's internalParse method before links
but after noinclude/includeonly/onlyinclude and other processing.
&$parser: Parser object
$specialPageAliases: associative array of magic words synonyms
$lang: laguage code (string)
+'LanguageGetTranslatedLanguageNames': Provide translated language names.
+&$names: array of language code => language name
+$code language of the preferred translations
+
'LinkBegin': Used when generating internal and interwiki links in
Linker::link(), before processing starts. Return false to skip default proces-
sing and return $ret. See documentation for Linker::link() for details on the
&$revert: string that is displayed in the UI, similar to $comment.
$time: timestamp of the log entry (added in 1.12)
-'LogPageValidTypes': action being logged.
-DEPRECATED: Use $wgLogTypes
-&$type: array of strings
-
-'LogPageLogName': name of the logging page(s).
-DEPRECATED: Use $wgLogNames
-&$typeText: array of strings
-
-'LogPageLogHeader': strings used by wfMsg as a header.
-DEPRECATED: Use $wgLogHeaders
-&$headerText: array of strings
-
-'LogPageActionText': strings used by wfMsg as a header.
-DEPRECATED: Use $wgLogActions
-&$actionText: array of strings
-
'MagicWordMagicWords': When defining new magic word.
DEPRECATED: use $magicWords in a file listed in
$wgExtensionMessagesFiles instead.
$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
loader request or generating HTML output.
&$resourceLoader: ResourceLoader object
+'ResourceLoaderGetStartupModules': Run once the startup module is being generated. This allows you
+to add modules to the startup module. This hook should be used sparingly since any module added here
+will be loaded on all pages. This hook is useful if you want to make code available to module loader
+scripts.
+
'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
'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
&$siteNotice: HTML returned as the sitenotice
+$skin: Skin object
Return true to allow the normal method of notice selection/rendering to work,
or change the value of $siteNotice and return false to alter it.
'SiteNoticeAfter': After the sitenotice/anonnotice is composed
&$siteNotice: HTML sitenotice
+$skin: Skin object
Alter the contents of $siteNotice to add to/alter the sitenotice/anonnotice.
'SkinAfterBottomScripts': At the end of Skin::bottomScripts()
'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
&$subpages: Subpage links HTML
$skin: Skin object
+$out: OutputPage 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
subPageSubtitle() will run.
-'SkinTemplateBuildContentActionUrlsAfterSpecialPage': after the single tab
-when showing a special page
-$sktemplate: SkinTemplate object
-$content_actions: array of tabs
-
'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the
"permanent link" tab
$sktemplate: SkinTemplate object
$nav_urls: array of tabs
-'SkinTemplateContentActions': Alter the "content action" links in SkinTemplates
-&$content_actions: Content actions
-[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 after the tabs have been added but before before variants have been added
+'SkinTemplateNavigation::SpecialPage': Called on special pages after the special tab is added but before variants 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.
&$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
-$content_actions: array of tabs
-
'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have
been rendered (useful for adding more)
-$tools: array of tools
+$sk: The QuickTemplate based skin template running the hook.
'SoftwareInfo': Called by Special:Version for returning information about
the software
&$query_options: array of options for the database request
&$select: String '*' or array of columns to select
-'SpecialSearchGomatch': called when user clicked the "Go" button and the target
-exists
+'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
'SpecialSearchProfiles': allows modification of search profiles
&$profiles: profiles, which can be modified.
+'SpecialSearchProfileForm': allows modification of search profile forms
+$search: special page object
+&$form: String: form html
+$profile: String: current search profile
+$term: String: search term
+$opts: Array: key => value of hidden options for inclusion in custom forms
+
+'SpecialSearchSetupEngine': allows passing custom data to search engine
+$search: special page object
+$profile: String: current search profile
+$engine: the search engine
+
'SpecialSearchResults': called before search result display when there
are matches
$term: string of search term
$ip: IP of the user who sent the message out
$u: the account whose new password will be set
+'UserAddGroup': called when adding a group; return false to override
+stock group addition.
+$user: the user object that is to have a group added
+&$group: the group to add, can be modified
+
'UserArrayFromResult': called when creating an UserArray object from a
database result
&$userArray: set this to an object to override the default object returned
'UserGetImplicitGroups': Called in User::getImplicitGroups()
&$groups: List of implicit (automatically-assigned) groups
+'UserGetLanguageObject': Called when getting user's interface language object
+$user: User object
+&$code: Langauge code that will be used to create the object
+
'UserGetReservedNames': allows to modify $wgReservedUsernames at run time
&$reservedUsernames: $wgReservedUsernames
$inject_html: Any HTML to inject after the "logged out" message.
$oldName: name of the user before logout (string)
+'UserRemoveGroup': called when removing a group; return false to override
+stock group removal.
+$user: the user object that is to have a group removed
+&$group: the group to be removed, can be modified
+
'UserRights': After a user's group memberships are changed
$user : User object that was changed
$add : Array of strings corresponding to groups added
&$timestamp: new timestamp, change this to override local email
authentification timestamp
-'WantedPages::getSQL': called in WantedPagesPage::getSQL(), can be used to
-alter the SQL query which gets the list of wanted pages
+'WantedPages::getQueryInfo': called in WantedPagesPage::getQueryInfo(), can be
+used to alter the SQL query which gets the list of wanted pages
&$wantedPages: WantedPagesPage object
-&$sql: raw SQL query used to get the list of wanted pages
+&$query: query array, see QueryPage::getQueryInfo() for format documentation
'WatchArticle': before a watch is added to an article
$user: user that will watch
$row: The database row for the revision.
$text: The revision text.
+'XMPGetInfo': Called when obtaining the list of XMP tags to extract. Can be used to add
+ additional tags to extract.
+&$items: Array containing information on which items to extract. See XMPInfo for details on the format.
+
+'XMPGetResults': Called just before returning the results array of parsing xmp data. Can be
+ used to post-process the results.
+&$data: Array of metadata sections (such as $data['xmp-general']) each section is an array of
+ metadata tags returned (each tag is either a value, or an array of values).
+
More hooks might be available but undocumented, you can execute
./maintenance/findhooks.php to find hidden one.