deleteAnArticle, exportArticle, etc., we can concentrate it all in an extension
file:
- function reverseArticleTitle( $article ) {
+ function onArticleShow( &$article ) {
# ...
}
- function reverseForExport( $article ) {
+ function onArticleDelete( &$article ) {
# ...
}
-The setup function for the extension just has to add its hook functions to the
-appropriate events:
-
- setupTitleReversingExtension() {
- global $wgHooks;
+ function onArticleExport( &$article ) {
+ # ...
+ }
- $wgHooks['ArticleShow'][] = 'reverseArticleTitle';
- $wgHooks['ArticleDelete'][] = 'reverseArticleTitle';
- $wgHooks['ArticleExport'][] = 'reverseForExport';
+General practice is to have a dedicated file for functions activated by hooks,
+which functions named 'onHookName'. In the example above, the file
+'ReverseHooks.php' includes the functions that should be activated by the
+'ArticleShow', 'ArticleDelete', and 'ArticleExport' hooks. The 'extension.json'
+file with the extension's registration just has to add its hook functions
+to the appropriate events:
+
+ "Hooks": {
+ "ArticleShow": "ReverseHooks:onArticleShow",
+ "ArticleDelete": "ReverseHooks::onArticleDelete",
+ "ArticleExport": "ReverseHooks::onArticleExport"
}
Having all this code related to the title-reversion option in one place means
&$msgs: Message[] Messages to include in the help. Multiple messages will be
joined with spaces.
-'APIEditBeforeSave': DEPRECATED since 1.28! Use EditFilterMergedContent instead.
-Before saving a page with api.php?action=edit, after
-processing request parameters. Return false to let the request fail, returning
-an error message or an <edit result="Failure"> tag if $resultArr was filled.
-Unlike for example 'EditFilterMergedContent' this also being run on undo.
-Since MediaWiki 1.25, 'EditFilterMergedContent' can also return error details
-for the API and it's recommended to use it instead of this hook.
-$editPage: the EditPage object
-$text: the text passed to the API. Note that this includes only the single
- section for section edit, and is not necessarily the final text in case of
- automatically resolved edit conflicts.
-&$resultArr: data in this array will be added to the API result
-
'ApiFeedContributions::feedItem': Called to convert the result of ContribsPager
into a FeedItem instance that ApiFeedContributions can consume. Implementors of
this hook may cancel the hook to signal that the item is not viewable in the
$req: AuthenticationRequest object describing the change (and target user)
$status: StatusValue with the result of the action
-'ChangePasswordForm': DEPRECATED since 1.27! Use AuthChangeFormFields or
-security levels. For extensions that need to add a field to the ChangePassword
-form via the Preferences form.
-&$extraFields: An array of arrays that hold fields like would be passed to the
- pretty function.
-
'ChangesListInitRows': Batch process change list rows prior to rendering.
$changesList: ChangesList instance
$rows: The data that will be rendered. May be a \Wikimedia\Rdbms\IResultWrapper
&$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)
+$groups Array of ChangesListFilterGroup objects (added in 1.34)
'FileDeleteComplete': When a file is deleted.
&$file: reference to the deleted file
$user: user to promote.
&$promote: groups that will be added.
-'GetBlockedStatus': after loading blocking status of an user from the database
+'GetBlockedStatus': DEPRECATED since 1.34 - use GetUserBlock instead. After
+loading blocking status of a user from the database
&$user: user (object) being checked
'GetCacheVaryCookies': Get cookies that should vary cache options.
&$slotDiffRenderer: SlotDiffRenderer to change or replace.
$context: IContextSource
+'GetUserBlock': Modify the block found by the block manager. This may be a
+single block or a composite block made from multiple blocks; the original
+blocks can be seen using CompositeBlock::getOriginalBlocks()
+$user: User targeted by the block
+$ip: string|null The IP of the current request if $user is the current user
+ and they're not exempted from IP blocks. Null otherwise.
+&$block: AbstractBlock object
+
'getUserPermissionsErrors': Add a permissions error when permissions errors are
checked for. Use instead of userCan for most cases. Return false if the user
can't do it, and populate $result with the reason in the form of
$page: ImagePage object
&$toc: Array of <li> strings
-'ImgAuthBeforeStream': executed before file is streamed to user, but only when
+'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 web
$result[2 through n]=Parameters passed to body text message. Please note the
header message cannot receive/use parameters.
+'ImgAuthModifyHeaders': Executed just before a file is streamed to a user via
+img_auth.php, allowing headers to be modified beforehand.
+$title: LinkTarget object
+&$headers: HTTP headers ( name => value, names are case insensitive ).
+ Two headers get special handling: If-Modified-Since (value must be
+ a valid HTTP date) and Range (must be of the form "bytes=(\d*-\d*)")
+ will be honored when streaming the file.
+
'ImportHandleLogItemXMLTag': When parsing a XML tag in a log item.
Return false to stop further processing of the tag
$reader: XMLReader object
$cache: The LocalisationCache object
$code: language code
&$alldata: The localisation data from core and extensions
-&$purgeBlobs: whether to purge/update the message blobs via
- MessageBlobStore::clear()
'LocalisationCacheRecacheFallback': Called for each language when merging
fallback data into the cache.
Skin is made available for skin specific config.
&$vars: [ variable name => value ]
$skin: Skin
+$config: Config object (since 1.34)
'ResourceLoaderJqueryMsgModuleMagicWords': Called in
ResourceLoaderJqueryMsgModule to allow adding magic words for jQueryMsg.
Note that lists should be in the format name => object and the names in both
lists should be distinct.
-'SecondaryDataUpdates': DEPRECATED! Use RevisionDataUpdates or override
+'SecondaryDataUpdates': DEPRECATED since 1.32! Use RevisionDataUpdates or override
ContentHandler::getSecondaryDataUpdates instead.
Allows modification of the list of DataUpdates to perform when page content is modified.
$title: Title of the page that is being edited.
'ShowSearchHit': Customize display of search hit.
$searchPage: The SpecialSearch instance.
$result: The SearchResult to show
-$terms: Search terms, for highlighting
+$terms: Search terms, for highlighting (unreliable as search engine dependent).
&$link: HTML of link to the matching page. May be modified.
&$redirect: HTML of redirect info. May be modified.
&$section: HTML of matching section. May be modified.
'SpecialContributions::getForm::filters': Called with a list of filters to render
on Special:Contributions.
$sp: SpecialContributions object, for context
-&$filters: List of filters rendered as HTML
+&$filters: List of filter object definitions (compatible with OOUI form)
'SpecialListusersDefaultQuery': Called right before the end of
UsersPager::getDefaultQuery().
&$oldTitle: old title (object)
&$newTitle: new title (object)
+'SpecialMuteModifyFormFields': Add more fields to Special:Mute
+$sp: SpecialPage object, for context
+&$fields: Current HTMLForm fields descriptors
+
+'SpecialMuteSubmit': DEPRECATED since 1.34! Used only for instrumentation on SpecialMute
+$data: Array containing information about submitted options on SpecialMute form
+
'SpecialNewpagesConditions': Called when building sql query for
Special:NewPages.
&$special: NewPagesPager object (subclass of ReverseChronologicalPager)
'SpecialSearchResults': Called before search result display
$term: string of search term
-&$titleMatches: empty or SearchResultSet object
-&$textMatches: empty or SearchResultSet object
+&$titleMatches: empty or ISearchResultSet object
+&$textMatches: empty or ISearchResultSet object
'SpecialSearchResultsPrepend': Called immediately before returning HTML
on the search results page. Useful for including an external search
&$archive: PageArchive object
$title: Title object of the page that we're about to undelete
+'UndeletePageToolLinks': Add one or more links to edit page subtitle when a page
+has been previously deleted.
+$context: IContextSource (object)
+$linkRenderer: LinkRenderer instance
+&$links: Array of HTML strings
+
'UndeleteShowRevision': Called when showing a revision in Special:Undelete.
$title: title object related to the revision
$rev: revision (object) that will be viewed
MessageSpecifier instance (you might want to use ApiMessage to provide machine
-readable details for the API).
-'UploadVerification': DEPRECATED since 1.28! Use UploadVerifyFile instead.
-Additional chances to reject an uploaded file.
-$saveName: (string) destination file name
-$tempName: (string) filesystem path to the temporary file for checks
-&$error: (string) 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.
-
'UploadVerifyFile': extra file verification, based on MIME type, etc. Preferred
in most cases over UploadVerification.
$upload: (object) an instance of UploadBase, with all info about the upload
the user's current group memberships.
'UserIsBlockedFrom': Check if a user is blocked from a specific page (for
-specific block exemptions).
+specific block exemptions if a user is already blocked).
$user: User in question
$title: Title of the page in question
&$blocked: Out-param, whether or not the user is blocked from that page.
false if a UserGetRights hook might remove the named right.
$right: The user right being checked
-'UserIsHidden': Check if the user's name should be hidden. See User::isHidden().
+'UserIsHidden': DEPRECATED since 1.34 - use GetUserBlock instead, and add a
+system block that hides the user. Check if the user's name should be hidden.
+See User::isHidden().
$user: User in question.
&$hidden: Set true if the user's name should be hidden.
&$opts: Options to use for the query
&$join: Join conditions
-'WikiPageDeletionUpdates': DEPRECATED! Use PageDeletionDataUpdates or
+'WikiPageDeletionUpdates': DEPRECATED since 1.32! Use PageDeletionDataUpdates or
override ContentHandler::getDeletionDataUpdates instead.
Manipulates the list of DeferrableUpdates to be applied when a page is deleted.
$page: the WikiPage
add extra metadata.
&$obj: The XmlDumpWriter object.
&$out: The text being output.
-$row: The database row for the revision.
-$text: The revision text.
+$row: The database row for the revision being dumped. DEPRECATED, use $rev instead.
+$text: The revision text to be dumped. DEPRECATED, use $rev instead.
+$rev: The RevisionRecord that is being dumped to XML
More hooks might be available but undocumented, you can execute
"php maintenance/findHooks.php" to find hidden ones.