12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590 |
- hooks.txt
- This document describes how event hooks work in MediaWiki; how to add hooks for
- an event; and how to run hooks for an event.
- ==Glossary==
- event
- Something that happens with the wiki. For example: a user logs in. A wiki
- page is saved. A wiki page is deleted. Often there are two events
- associated with a single action: one before the code is run to make the
- event happen, and one after. Each event has a name, preferably in
- CamelCase. For example, 'UserLogin', 'PageContentSave',
- 'PageContentSaveComplete', 'ArticleDelete'.
- 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
- everyone. It allows MediaWiki hackers, third-party developers and local
- administrators to define code that will be run at certain points in the mainline
- code, and to modify the data run by that mainline code. Hooks can keep mainline
- code simple, and make it easier to write extensions. Hooks are a principled
- alternative to local patches.
- Consider, for example, two options in MediaWiki. One reverses the order of a
- title before displaying the article; the other converts the title to all
- uppercase letters. Currently, in MediaWiki code, we would handle this as follows
- (note: not real code, here):
- function showAnArticle( $article ) {
- global $wgReverseTitle, $wgCapitalizeTitle;
- if ( $wgReverseTitle ) {
- wfReverseTitle( $article );
- }
- if ( $wgCapitalizeTitle ) {
- wfCapitalizeTitle( $article );
- }
- # code to actually show the article goes here
- }
- An extension writer, or a local admin, will often add custom code to the
- function -- with or without a global variable. For example, someone wanting
- 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:
- function showAnArticle( $article ) {
- if ( Hooks::run( 'ArticleShow', array( &$article ) ) ) {
- # code to actually show the article goes here
- Hooks::run( 'ArticleShowComplete', array( &$article ) );
- }
- }
- 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
- 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
- file:
- function reverseArticleTitle( $article ) {
- # ...
- }
- function reverseForExport( $article ) {
- # ...
- }
- The setup function for the extension just has to add its hook functions to the
- appropriate events:
- setupTitleReversingExtension() {
- global $wgHooks;
- $wgHooks['ArticleShow'][] = 'reverseArticleTitle';
- $wgHooks['ArticleDelete'][] = 'reverseArticleTitle';
- $wgHooks['ArticleExport'][] = 'reverseForExport';
- }
- 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.
- Admins who want to have all the reversed titles can add:
- require_once 'extensions/ReverseTitle.php';
- ...to their LocalSettings.php file; those of us who don't want or need it can
- just leave it out.
- The extensions don't even have to be shipped with MediaWiki; they could be
- provided by a third-party developer or written by the admin him/herself.
- ==Writing hooks==
- A hook is a chunk of code run at some particular event. It consists of:
- * a function with some optional accompanying data, or
- * an object with a method and some optional accompanying data.
- Hooks are registered by adding them to the global $wgHooks array for a given
- event. All the following are valid ways to define hooks:
- $wgHooks['EventName'][] = 'someFunction'; # function, no data
- $wgHooks['EventName'][] = array( 'someFunction', $someData );
- $wgHooks['EventName'][] = array( 'someFunction' ); # weird, but OK
- $wgHooks['EventName'][] = $object; # object only
- $wgHooks['EventName'][] = array( $object, 'someMethod' );
- $wgHooks['EventName'][] = array( $object, 'someMethod', $someData );
- $wgHooks['EventName'][] = array( $object ); # weird but OK
- When an event occurs, the function (or object method) will be called with the
- optional data provided as well as event-specific parameters. The above examples
- would result in the following code being executed when 'EventName' happened:
- # function, no data
- someFunction( $param1, $param2 )
- # function with data
- someFunction( $someData, $param1, $param2 )
- # object only
- $object->onEventName( $param1, $param2 )
- # object with method
- $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.
- The extra data is useful if we want to use the same function or object for
- different purposes. For example:
- $wgHooks['PageContentSaveComplete'][] = array( 'ircNotify', 'TimStarling' );
- $wgHooks['PageContentSaveComplete'][] = array( 'ircNotify', 'brion' );
- This code would result in ircNotify being run twice when an article is saved:
- once for 'TimStarling', and once for 'brion'.
- Hooks can return three possible values:
- * No return value (or null): the hook has operated successfully. Previously,
- true was required. This is the default since MediaWiki 1.23.
- * "some string": an error occurred; processing should stop and the error
- 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;
- }
- 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
- Special:Version), and should be avoided when at all possible.
- ==Using hooks==
- A calling function or method uses the Hooks::run() function to run the hooks
- related to a particular event, like so:
- class Article {
- # ...
- function protect() {
- global $wgUser;
- // Avoid PHP 7.1 warning from passing $this by reference
- $article = $this;
- if ( Hooks::run( 'ArticleProtect', [ &$article, &$wgUser ] ) ) {
- # protect the article
- Hooks::run( 'ArticleProtectComplete', [ &$article, &$wgUser ] );
- }
- }
- }
- Hooks::run() 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
- return value matters more for "before" hooks than for "complete" hooks.
- Hooks::run() was added in MediaWiki 1.18, before that the global function
- wfRunHooks must be used, which was deprecated in MediaWiki 1.25.
- Note that hook parameters are passed in an array; this is a necessary
- inconvenience to make it possible to pass reference values (that can be changed)
- into the hook code. Also note that earlier versions of wfRunHooks took a
- variable number of arguments; the array() calling protocol came about after
- MediaWiki 1.4rc1.
- ==Events and parameters==
- 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': DEPRECATED! Create a PreAuthenticationProvider instead.
- 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)
- &$abortMsg: out parameter: name of 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.
- 'AbortDiffCache': Can be used to cancel the caching of a diff.
- &$diffEngine: DifferenceEngine object
- 'AbortEmailNotification': Can be used to cancel email notifications for an edit.
- $editor: The User who made the change.
- $title: The Title of the page that was edited.
- $rc: The current RecentChange object.
- 'AbortLogin': DEPRECATED! Create a PreAuthenticationProvider instead.
- Return false to cancel account login.
- $user: the User object being authenticated against
- $password: the password being submitted, not yet checked for validity
- &$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)
- 'AbortNewAccount': DEPRECATED! Create a PreAuthenticationProvider instead.
- Return false to cancel explicit account creation.
- $user: the User object about to be created (read-only, incomplete)
- &$msg: out parameter: HTML to display on abort
- &$status: out parameter: Status object to return, replaces the older $msg param
- (added in 1.23)
- Create the object with Status::newFatal() to ensure proper API error
- messages are returned when creating account through API clients.
- 'AbortTalkPageEmailNotification': Return false to cancel talk page email
- notification
- $targetUser: the user whom to send talk page email notification
- $title: the page title
- 'ActionBeforeFormDisplay': Before executing the HTMLForm object.
- $name: name of the action
- &$form: HTMLForm object
- $article: Article object
- 'ActionModifyFormFields': Before creating an HTMLForm object for a page action;
- Allows to change the fields on the form that will be generated.
- $name: name of the action
- &$fields: HTMLForm descriptor array
- $article: Article object
- 'AddNewAccount': DEPRECATED! Use LocalUserCreated.
- After a user account is created.
- $user: the User object that was created. (Parameter added in 1.7)
- $byEmail: true when account was created "by email" (added in 1.12)
- 'AddNewAccountApiForm': Allow modifying internal login form when creating an
- account via API.
- $apiModule: the ApiCreateAccount module calling
- $loginForm: the LoginForm used
- 'AddNewAccountApiResult': Modify API output when creating a new account via API.
- $apiModule: the ApiCreateAccount module calling
- $loginForm: the LoginForm used
- &$result: associative array for API result data
- 'AfterBuildFeedLinks': Executed in OutputPage.php after all feed links (atom, rss,...)
- are created. Can be used to omit specific feeds from being outputted. You must not use
- this hook to add feeds, use OutputPage::addFeedLink() instead.
- &$feedLinks: Array of created feed links
- 'AfterFinalPageOutput': Nearly at the end of OutputPage::output() but
- before OutputPage::sendCacheControl() and final ob_end_flush() which
- will send the buffered output to the client. This allows for last-minute
- modification of the output within the buffer by using ob_get_clean().
- $output: The OutputPage object where output() was called
- 'AfterImportPage': When a page import is completed.
- $title: Title under which the revisions were imported
- $foreignTitle: ForeignTitle object based on data provided by the XML file
- $revCount: Number of revisions in the XML file
- $sRevCount: Number of successfully imported revisions
- $pageInfo: associative array of page information
- 'AfterParserFetchFileAndTitle': After an image gallery is formed by Parser,
- just before adding its HTML to parser output.
- $parser: Parser object that called the hook
- $ig: Gallery, an object of one of the gallery classes (inheriting from
- ImageGalleryBase)
- &$html: HTML generated by the gallery
- 'AlternateEdit': Before checking if a user can edit a page and before showing
- the edit form ( EditPage::edit() ). This is triggered on &action=edit.
- $editPage: the EditPage object
- 'AlternateEditPreview': Before generating the preview of the page when editing
- ( EditPage::getPreviewText() ).
- Return false and set $previewHTML and $parserOutput to output custom page
- preview HTML.
- $editPage: the EditPage object
- &$content: the Content object for the text field from the edit page
- &$previewHTML: Text to be placed into the page for the preview
- &$parserOutput: the ParserOutput object for the preview
- 'AlternateUserMailer': Called before mail is sent so that mail could be logged
- (or something else) instead of using PEAR or PHP's mail(). Return false to skip
- the regular method of sending mail. Return a string to return a php-mail-error
- message containing the error. Returning true will continue with sending email
- in the regular way.
- $headers: Associative array of headers for the email
- $to: MailAddress object or array
- $from: From address
- $subject: Subject of the email
- $body: Body of the message
- 'APIAfterExecute': After calling the execute() method of an API module. Use
- this to extend core API modules.
- &$module: Module object
- 'ApiBeforeMain': Before calling ApiMain's execute() method in api.php.
- &$main: ApiMain object
- 'ApiCheckCanExecute': Called during ApiMain::checkCanExecute. Use to further
- authenticate and authorize API clients before executing the module. Return
- false and set a message to cancel the request.
- $module: Module object
- $user: Current user
- &$message: API usage message to die with, as a message key or array
- as accepted by ApiBase::dieUsageMsg.
- 'APIEditBeforeSave': 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
- provided context.
- $row: A row of data from ContribsPager. The set of data returned by
- ContribsPager can be adjusted by handling the ContribsPager::reallyDoQuery
- hook.
- $context: An IContextSource implementation.
- &$feedItem: Set this to a FeedItem instance if the callback can handle the
- provided row. This is provided to the hook as a null, if it is non null then
- another callback has already handled the hook.
- 'ApiFormatHighlight': Use to syntax-highlight API pretty-printed output. When
- highlighting, add output to $context->getOutput() and return false.
- $context: An IContextSource.
- $text: Text to be highlighted.
- $mime: MIME type of $text.
- $format: API format code for $text.
- 'APIGetAllowedParams': Use this hook to modify a module's parameters.
- &$module: ApiBase Module object
- &$params: Array of parameters
- $flags: int zero or OR-ed flags like ApiBase::GET_VALUES_FOR_HELP
- 'APIGetDescription': DEPRECATED! Use APIGetDescriptionMessages instead.
- Use this hook to modify a module's description.
- &$module: ApiBase Module object
- &$desc: String description, or array of description strings
- 'APIGetDescriptionMessages': Use this hook to modify a module's help message.
- $module: ApiBase Module object
- &$msg: Array of Message objects
- 'APIGetParamDescription': DEPRECATED! Use APIGetParamDescriptionMessages
- instead.
- Use this hook to modify a module's parameter descriptions.
- &$module: ApiBase Module object
- &$desc: Array of parameter descriptions
- 'APIGetParamDescriptionMessages': Use this hook to modify a module's parameter
- descriptions.
- $module: ApiBase Module object
- &$msg: Array of arrays of Message objects
- 'APIHelpModifyOutput': Use this hook to modify an API module's help output.
- $module: ApiBase Module object
- &$help: Array of HTML strings to be joined for the output.
- $options: Array Options passed to ApiHelp::getHelp
- &$tocData: Array If a TOC is being generated, this array has keys as anchors in
- the page and values as for Linker::generateTOC().
- 'ApiMain::moduleManager': Called when ApiMain has finished initializing its
- module manager. Can be used to conditionally register API modules.
- $moduleManager: ApiModuleManager Module manager instance
- 'ApiMain::onException': Called by ApiMain::executeActionWithErrorHandling() when
- an exception is thrown during API action execution.
- $apiMain: Calling ApiMain instance.
- $e: Exception object.
- 'ApiOpenSearchSuggest': Called when constructing the OpenSearch results. Hooks
- can alter or append to the array.
- &$results: array with integer keys to associative arrays. Keys in associative
- array:
- - title: Title object.
- - redirect from: Title or null.
- - extract: Description for this result.
- - extract trimmed: If truthy, the extract will not be trimmed to
- $wgOpenSearchDescriptionLength.
- - image: Thumbnail for this result. Value is an array with subkeys 'source'
- (url), 'width', 'height', 'alt', 'align'.
- - url: Url for the given title.
- 'ApiQuery::moduleManager': Called when ApiQuery has finished initializing its
- module manager. Can be used to conditionally register API query modules.
- $moduleManager: ApiModuleManager Module manager instance
- 'APIQueryAfterExecute': After calling the execute() method of an
- action=query submodule. Use this to extend core API modules.
- &$module: Module object
- 'APIQueryGeneratorAfterExecute': After calling the executeGenerator() method of
- an action=query submodule. Use this to extend core API modules.
- &$module: Module object
- &$resultPageSet: ApiPageSet object
- 'APIQueryInfoTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
- Use this hook to add custom tokens to prop=info. Every token has an action,
- which will be used in the intoken parameter and in the output
- (actiontoken="..."), and a callback function which should return the token, or
- false if the user isn't allowed to obtain it. The prototype of the callback
- function is func($pageid, $title), where $pageid is the page ID of the page the
- token is requested for and $title is the associated Title object. In the hook,
- just add your callback to the $tokenFunctions array and return true (returning
- false makes no sense).
- &$tokenFunctions: array(action => callback)
- 'APIQueryRecentChangesTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes
- instead.
- Use this hook to add custom tokens to list=recentchanges. Every token has an
- action, which will be used in the rctoken parameter and in the output
- (actiontoken="..."), and a callback function which should return the token, or
- false if the user isn't allowed to obtain it. The prototype of the callback
- function is func($pageid, $title, $rc), where $pageid is the page ID of the
- page associated to the revision the token is requested for, $title the
- associated Title object and $rc the associated RecentChange object. In the
- hook, just add your callback to the $tokenFunctions array and return true
- (returning false makes no sense).
- &$tokenFunctions: array(action => callback)
- 'APIQueryRevisionsTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
- Use this hook to add custom tokens to prop=revisions. Every token has an
- action, which will be used in the rvtoken parameter and in the output
- (actiontoken="..."), and a callback function which should return the token, or
- false if the user isn't allowed to obtain it. The prototype of the callback
- function is func($pageid, $title, $rev), where $pageid is the page ID of the
- page associated to the revision the token is requested for, $title the
- associated Title object and $rev the associated Revision object. In the hook,
- just add your callback to the $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
- 'APIQuerySiteInfoStatisticsInfo': Use this hook to add extra information to the
- sites statistics information.
- &$results: array of results, add things here
- 'ApiQueryTokensRegisterTypes': Use this hook to add additional token types to
- action=query&meta=tokens. Note that most modules will probably be able to use
- the 'csrf' token instead of creating their own token types.
- &$salts: array( type => salt to pass to User::getEditToken() or array of salt
- and key to pass to Session::getToken() )
- 'APIQueryUsersTokens': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
- 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 should return the token, or
- false if the user isn't allowed to obtain it. The prototype of the callback
- function is func($user) where $user 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
- 'ApiTokensGetTokenTypes': DEPRECATED! Use ApiQueryTokensRegisterTypes instead.
- Use this hook to extend action=tokens with new token types.
- &$tokenTypes: supported token types in format 'type' => callback function
- used to retrieve this type of tokens.
- 'Article::MissingArticleConditions': Before fetching deletion & move log entries
- to display a message of a non-existing page being deleted/moved, give extensions
- a chance to hide their (unrelated) log entries.
- &$conds: Array of query conditions (all of which have to be met; conditions will
- AND in the final query)
- $logTypes: Array of log types being queried
- 'ArticleAfterFetchContent': DEPRECATED! Use ArticleAfterFetchContentObject
- instead.
- After fetching content of an article from the database.
- &$article: the article (object) being loaded from the database
- &$content: the content (string) of the article
- 'ArticleAfterFetchContentObject': After fetching content of an article from the
- database.
- &$article: the article (object) being loaded from the database
- &$content: the content of the article, as a Content object
- 'ArticleConfirmDelete': Before writing the confirmation form for article
- deletion.
- $article: the article (object) being deleted
- $output: the OutputPage object
- &$reason: the reason (string) the article is being deleted
- 'ArticleContentOnDiff': Before showing the article content below a diff. Use
- this to change the content in this area or how it is loaded.
- $diffEngine: the DifferenceEngine
- $output: the OutputPage object
- 'ArticleContentViewCustom': Allows to output the text of the article in a
- different format than wikitext. Note that it is preferable to implement proper
- handing for a custom data type using the ContentHandler facility.
- $content: content of the page, as a Content object
- $title: title of the page
- $output: reference to $wgOut
- 'ArticleDelete': Before an article is deleted.
- &$wikiPage: the WikiPage (object) being deleted
- &$user: the user (object) deleting the article
- &$reason: the reason (string) the article is being deleted
- &$error: if the deletion was prohibited, the (raw HTML) error message to display
- (added in 1.13)
- &$status: Status object, modify this to throw an error. Overridden by $error
- (added in 1.20)
- $suppress: Whether this is a suppression deletion or not (added in 1.27)
- 'ArticleDeleteAfterSuccess': Output after an article has been deleted.
- $title: Title of the article that has been deleted.
- $outputPage: OutputPage that can be used to append the output.
- 'ArticleDeleteComplete': After an article is deleted.
- &$wikiPage: the WikiPage that was deleted
- &$user: the user that deleted the article
- $reason: the reason the article was deleted
- $id: id of the article that was deleted
- $content: the Content of the deleted page
- $logEntry: the ManualLogEntry used to record the deletion
- 'ArticleEditUpdateNewTalk': Before updating user_newtalk when a user talk page
- was changed.
- &$wikiPage: WikiPage (object) of the user talk page
- $recipient: User (object) who's talk page was edited
- 'ArticleEditUpdates': When edit updates (mainly link tracking) are made when an
- article has been changed.
- &$wikiPage: the WikiPage (object)
- &$editInfo: data holder that includes the parser output ($editInfo->output) for
- that page after the change
- $changed: bool for if the page was changed
- 'ArticleEditUpdatesDeleteFromRecentchanges': Before deleting old entries from
- recentchanges table, return false to not delete old entries.
- &$wikiPage: WikiPage (object) being modified
- 'ArticleFromTitle': when creating an article object from a title object using
- Wiki::articleFromTitle().
- &$title: Title (object) used to create the article object
- &$article: Article (object) that will be returned
- $context: IContextSource (object)
- 'ArticleInsertComplete': DEPRECATED! Use PageContentInsertComplete.
- After a new article is created.
- $wikiPage: WikiPage created
- $user: User creating the article
- $text: New content
- $summary: Edit summary/comment
- $isMinor: Whether or not the edit was marked as minor
- $isWatch: (No longer used)
- $section: (No longer used)
- $flags: Flags passed to WikiPage::doEditContent()
- $revision: New Revision of the article
- 'ArticleMergeComplete': After merging to article using Special:Mergehistory.
- $targetTitle: target title (object)
- $destTitle: destination title (object)
- 'ArticlePageDataAfter': After loading data of an article from the database.
- &$wikiPage: WikiPage (object) whose data were loaded
- &$row: row (object) returned from the database server
- 'ArticlePageDataBefore': Before loading data of an article from the database.
- &$wikiPage: WikiPage (object) that data will be loaded
- &$fields: fields (array) to load from the database
- 'ArticlePrepareTextForEdit': Called when preparing text to be saved.
- $wikiPage: the WikiPage being saved
- $popts: parser options to be used for pre-save transformation
- 'ArticleProtect': Before an article is protected.
- &$wikiPage: the WikiPage being protected
- &$user: the user doing the protection
- $protect: Set of restriction keys
- $reason: Reason for protect
- 'ArticleProtectComplete': After an article is protected.
- &$wikiPage: the WikiPage that was protected
- &$user: the user who did the protection
- $protect: Set of restriction keys
- $reason: Reason for protect
- 'ArticlePurge': Before executing "&action=purge".
- &$wikiPage: WikiPage (object) to purge
- 'ArticleRevisionUndeleted': After an article revision is restored.
- &$title: the article title
- $revision: the revision
- $oldPageID: the page ID of the revision when archived (may be null)
- 'ArticleRevisionVisibilitySet': Called when changing visibility of one or more
- revisions of an article.
- $title: Title object of the article
- $ids: Ids to set the visibility for
- 'ArticleRollbackComplete': After an article rollback is completed.
- $wikiPage: the WikiPage that was edited
- $user: the user who did the rollback
- $revision: the revision the page was reverted back to
- $current: the reverted revision
- 'ArticleSave': DEPRECATED! Use PageContentSave instead.
- Before an article is saved.
- $wikiPage: the WikiPage (object) being saved
- $user: the user (object) saving the article
- $text: the new article text
- $summary: the article summary (comment)
- $isminor: minor flag
- $iswatch: watch flag
- $section: section #
- 'ArticleSaveComplete': DEPRECATED! Use PageContentSaveComplete instead.
- After an article has been updated.
- $wikiPage: WikiPage modified
- $user: User performing the modification
- $text: New content
- $summary: Edit summary/comment
- $isMinor: Whether or not the edit was marked as minor
- $isWatch: (No longer used)
- $section: (No longer used)
- $flags: Flags passed to WikiPage::doEditContent()
- $revision: New Revision of the article
- $status: Status object about to be returned by doEditContent()
- $baseRevId: the rev ID (or false) this edit was based on
- 'ArticleUndelete': When one or more revisions of an article are restored.
- &$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.
- $oldPageId: ID of page previously deleted (from archive table)
- 'ArticleUndeleteLogEntry': When a log entry is generated but not yet saved.
- $pageArchive: the PageArchive object
- &$logEntry: ManualLogEntry object
- $user: User who is performing the log action
- 'ArticleUpdateBeforeRedirect': After a page is updated (usually on save), before
- the user is redirected back to the page.
- $article: the article
- &$sectionanchor: The section anchor link (e.g. "#overview" )
- &$extraq: Extra query parameters which can be added via hooked functions
- 'ArticleViewCustom': DEPRECATED! Use ArticleContentViewCustom instead.
- Allows to output the text of the article in a different format than wikitext.
- Note that it is preferable to implement proper handing for a custom data type
- using the ContentHandler facility.
- $text: text of the page
- $title: title of the page
- $output: reference to $wgOut
- 'ArticleViewFooter': After showing the footer section of an ordinary page view
- $article: Article object
- $patrolFooterShown: boolean whether patrol footer is shown
- 'ArticleViewHeader': Before the parser cache is about to be tried for article
- viewing.
- &$article: the article
- &$pcache: whether to try the parser cache or not
- &$outputDone: whether the output for this page finished or not. Set to
- a ParserOutput object to both indicate that the output is done and what
- parser output was used.
- 'ArticleViewRedirect': Before setting "Redirected from ..." subtitle when a
- redirect was followed.
- &$article: target article (object)
- 'AuthChangeFormFields': After converting a field information array obtained
- from a set of AuthenticationRequest classes into a form descriptor; hooks
- can tweak the array to change how login etc. forms should look.
- $requests: array of AuthenticationRequests the fields are created from
- $fieldInfo: field information array (union of all AuthenticationRequest::getFieldInfo() responses).
- &$formDescriptor: HTMLForm descriptor. The special key 'weight' can be set
- to change the order of the fields.
- $action: one of the AuthManager::ACTION_* constants.
- 'AuthManagerLoginAuthenticateAudit': A login attempt either succeeded or failed
- for a reason other than misconfiguration or session loss. No return data is
- accepted; this hook is for auditing only.
- $response: The MediaWiki\Auth\AuthenticationResponse in either a PASS or FAIL state.
- $user: The User object being authenticated against, or null if authentication
- failed before getting that far.
- $username: A guess at the user name being authenticated, or null if we can't
- even determine that.
- 'AuthPluginAutoCreate': DEPRECATED! Use the 'LocalUserCreated' hook instead.
- Called when creating a local account for an user logged in from an external
- authentication method.
- $user: User object created locally
- 'AuthPluginSetup': DEPRECATED! Extensions should be updated to use AuthManager.
- Update or replace authentication plugin object ($wgAuth). Gives a chance for an
- extension to set it programmatically to a variable class.
- &$auth: the $wgAuth object, probably a stub
- 'AutopromoteCondition': Check autopromote condition for user.
- $type: condition type
- $args: arguments
- $user: user
- &$result: result of checking autopromote condition
- 'BacklinkCacheGetConditions': Allows to set conditions for query when links to
- certain title are fetched.
- $table: table name
- $title: title of the page to which backlinks are sought
- &$conds: query conditions
- 'BacklinkCacheGetPrefix': Allows to set prefix for a specific link table.
- $table: table name
- &$prefix: prefix
- 'BadImage': When checking against the bad image list. 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.
- $name: Image name being checked
- &$bad: Whether or not the image is "bad"
- 'BaseTemplateAfterPortlet': After output of portlets, allow injecting
- custom HTML after the section. Any uses of the hook need to handle escaping.
- $template: BaseTemplate
- $portlet: string portlet name
- &$html: string
- 'BaseTemplateToolbox': Called by BaseTemplate when building the $toolbox array
- and returning it for the skin to output. You can add items to the toolbox while
- still letting the skin make final decisions on skin-specific markup conventions
- using this hook.
- &$sk: The BaseTemplate base skin template
- &$toolbox: An array of toolbox items, see BaseTemplate::getToolbox and
- BaseTemplate::makeListItem for details on the format of individual items
- inside of this array.
- 'BeforeDisplayNoArticleText': Before displaying message key "noarticletext" or
- "noarticletext-nopermission" at Article::showMissingArticle().
- $article: article object
- 'BeforeHttpsRedirect': Prior to forcing HTTP->HTTPS redirect. Gives a chance to
- override how the redirect is output by modifying, or by returning false, and
- letting standard HTTP rendering take place.
- ATTENTION: This hook is likely to be removed soon due to overall design of the
- system.
- $context: IContextSource object
- &$redirect: string URL, modifiable
- 'BeforeInitialize': Before anything is initialized in
- MediaWiki::performRequest().
- &$title: Title being used for request
- &$unused: null
- &$output: OutputPage object
- &$user: User
- $request: WebRequest object
- $mediaWiki: Mediawiki object
- 'BeforePageDisplay': Prior to outputting a page.
- &$out: OutputPage object
- &$skin: Skin object
- 'BeforePageRedirect': Prior to sending an HTTP redirect. Gives a chance to
- override how the redirect is output by modifying, or by returning false and
- taking over the output.
- $out: OutputPage object
- &$redirect: URL, modifiable
- &$code: HTTP code (eg '301' or '302'), modifiable
- 'BeforeParserFetchFileAndTitle': Before an image is rendered by Parser.
- $parser: Parser object
- $nt: the image title
- &$options: array of options to RepoGroup::findFile. If it contains 'broken'
- as a key then the file will appear as a broken thumbnail.
- &$descQuery: query string to add to thumbnail URL
- 'BeforeParserFetchTemplateAndtitle': Before a template is fetched by Parser.
- $parser: Parser object
- $title: title of the template
- &$skip: skip this template and link it?
- &$id: the id of the revision being parsed
- '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
- 'BitmapHandlerCheckImageArea': By BitmapHandler::normaliseParams, after all
- normalizations have been performed, except for the $wgMaxImageArea check.
- $image: File
- &$params: Array of parameters
- &$checkImageAreaHookResult: null, set to true or false to override the
- $wgMaxImageArea check result.
- '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)
- &$reason: if the hook is aborted, the error message to be returned in an array
- 'BlockIpComplete': After an IP address or user is blocked.
- $block: the Block object that was saved
- $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
- 'CanIPUseHTTPS': Determine whether the client at a given source IP is likely
- to be able to access the wiki via HTTPS.
- $ip: The IP address in human-readable form
- &$canDo: This reference should be set to false if the client may not be able
- to use HTTPS
- 'CanonicalNamespaces': For extensions adding their own namespaces or altering
- the defaults.
- Note that if you need to specify namespace protection or content model for
- a namespace that is added in a CanonicalNamespaces hook handler, you
- should do so by altering $wgNamespaceProtection and
- $wgNamespaceContentModels outside the handler, in top-level scope. The
- point at which the CanonicalNamespaces hook fires is too late for altering
- these variables. This applies even if the namespace addition is
- conditional; it is permissible to declare a content model and protection
- for a namespace and then decline to actually register it.
- &$namespaces: Array of namespace numbers with corresponding canonical names
- 'CategoryAfterPageAdded': After a page is added to a category.
- $category: Category that page was added to
- $wikiPage: WikiPage that was added
- 'CategoryAfterPageRemoved': After a page is removed from a category.
- $category: Category that page was removed from
- $wikiPage: WikiPage that was removed
- 'CategoryPageView': Before viewing a categorypage in CategoryPage::view.
- &$catpage: CategoryPage instance
- 'CategoryViewer::doCategoryQuery': After querying for pages to be displayed
- in a Category page. Gives extensions the opportunity to batch load any
- related data about the pages.
- $type: The category type. Either 'page', 'file' or 'subcat'
- $res: Query result from DatabaseBase::select()
- 'CategoryViewer::generateLink': Before generating an output link allow
- extensions opportunity to generate a more specific or relevant link.
- $type: The category type. Either 'page', 'img' or 'subcat'
- $title: Title object for the categorized page
- $html: Requested html content of anchor
- &$link: Returned value. When set to a non-null value by a hook subscriber
- this value will be used as the anchor instead of Linker::link
- 'ChangeAuthenticationDataAudit': Called when user changes his password.
- No return data is accepted; this hook is for auditing only.
- $req: AuthenticationRequest object describing the change (and target user)
- $status: StatusValue with the result of the action
- 'ChangePasswordForm': DEPRECATED! 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 ResultWrapper instance or
- an array.
- 'ChangesListInsertArticleLink': Override or augment link to article in RC list.
- &$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.
- 'ChangesListSpecialPageFilters': Called after building form options on pages
- inheriting from ChangesListSpecialPage (in core: RecentChanges,
- RecentChangesLinked and Watchlist).
- $special: ChangesListSpecialPage instance
- &$filters: associative array of filter definitions. The keys are the HTML
- name/URL parameters. Each key maps to an associative array with a 'msg'
- (message key) and a 'default' value.
- 'ChangesListSpecialPageQuery': Called when building SQL query on pages
- inheriting from ChangesListSpecialPage (in core: RecentChanges,
- RecentChangesLinked and Watchlist).
- $name: name of the special page, e.g. 'Watchlist'
- &$tables: array of tables to be queried
- &$fields: array of columns to select
- &$conds: array of WHERE conditionals for query
- &$query_options: array of options for the database request
- &$join_conds: join conditions for the tables
- $opts: FormOptions for this request
- 'ChangeTagAfterDelete': Called after a change tag has been deleted (that is,
- removed from all revisions and log entries to which it was applied). This gives
- extensions a chance to take it off their books.
- $tag: name of the tag
- &$status: Status object. Add warnings to this as required. There is no point
- setting errors, as the deletion has already been partly carried out by this
- point.
- 'ChangeTagCanCreate': Tell whether a change tag should be able to be created
- from the UI (Special:Tags) or via the API. You could use this hook if you want
- to reserve a specific "namespace" of tags, or something similar.
- $tag: name of the tag
- $user: user initiating the action
- &$status: Status object. Add your errors using `$status->fatal()` or warnings
- using `$status->warning()`. Errors and warnings will be relayed to the user.
- If you set an error, the user will be unable to create the tag.
- 'ChangeTagCanDelete': Tell whether a change tag should be able to be
- deleted from the UI (Special:Tags) or via the API. The default is that tags
- defined using the ListDefinedTags hook are not allowed to be deleted unless
- specifically allowed. If you wish to allow deletion of the tag, set
- `$status = Status::newGood()` to allow deletion, and then `return false` from
- the hook function. Ensure you consume the 'ChangeTagAfterDelete' hook to carry
- out custom deletion actions.
- $tag: name of the tag
- $user: user initiating the action
- &$status: Status object. See above.
- 'ChangeTagsListActive': Allows you to nominate which of the tags your extension
- uses are in active use.
- &$tags: list of all active tags. Append to this array.
- 'Collation::factory': Called if $wgCategoryCollation is an unknown collation.
- $collationName: Name of the collation in question
- &$collationObject: Null. Replace with a subclass of the Collation class that
- implements the collation given in $collationName.
- 'ConfirmEmailComplete': Called after a user's email has been confirmed
- successfully.
- $user: user (object) whose email is being confirmed
- 'ContentAlterParserOutput': Modify parser output for a given content object.
- Called by Content::getParserOutput after parsing has finished. Can be used
- for changes that depend on the result of the parsing but have to be done
- before LinksUpdate is called (such as adding tracking categories based on
- the rendered HTML).
- $content: The Content to render
- $title: Title of the page, as context
- $parserOutput: ParserOutput to manipulate
- 'ContentGetParserOutput': Customize parser output for a given content object,
- called by AbstractContent::getParserOutput. May be used to override the normal
- model-specific rendering of page content.
- $content: The Content to render
- $title: Title of the page, as context
- $revId: The revision ID, as context
- $options: ParserOptions for rendering. To avoid confusing the parser cache,
- the output can only depend on parameters provided to this hook function, not
- on global state.
- $generateHtml: boolean, indicating whether full HTML should be generated. If
- false, generation of HTML may be skipped, but other information should still
- be present in the ParserOutput object.
- &$output: ParserOutput, to manipulate or replace
- 'ContentHandlerDefaultModelFor': Called when the default content model is
- determined for a given title. May be used to assign a different model for that
- title.
- $title: the Title in question
- &$model: the model name. Use with CONTENT_MODEL_XXX constants.
- 'ContentHandlerForModelID': Called when a ContentHandler is requested for
- a given content model name, but no entry for that model exists in
- $wgContentHandlers.
- $modeName: the requested content model name
- &$handler: set this to a ContentHandler object, if desired.
- 'ContentModelCanBeUsedOn': Called to determine whether that content model can
- be used on a given page. This is especially useful to prevent some content
- models to be used in some special location.
- $contentModel: ID of the content model in question
- $title: the Title in question.
- &$ok: Output parameter, whether it is OK to use $contentModel on $title.
- Handler functions that modify $ok should generally return false to prevent
- further hooks from further modifying $ok.
- 'ContribsPager::getQueryInfo': Before the contributions query is about to run
- &$pager: Pager object for contributions
- &$queryInfo: The query for the contribs Pager
- 'ContribsPager::reallyDoQuery': Called before really executing the query for My
- Contributions
- &$data: an array of results of all contribs queries
- $pager: The ContribsPager object hooked into
- $offset: Index offset, inclusive
- $limit: Exact query limit
- $descending: Query direction, false for ascending, true for descending
- 'ContributionsLineEnding': Called before a contributions HTML line is finished
- $page: SpecialPage object for contributions
- &$ret: the HTML line
- $row: the DB row for this line
- &$classes: the classes to add to the surrounding <li>
- 'ContributionsToolLinks': Change tool links above Special:Contributions
- $id: User identifier
- $title: User page title
- &$tools: Array of tool links
- 'ConvertContent': Called by AbstractContent::convert when a conversion to
- another content model is requested.
- Handler functions that modify $result should generally return false to disable
- further attempts at conversion.
- $content: The Content object to be converted.
- $toModel: The ID of the content model to convert to.
- $lossy: boolean indicating whether lossy conversion is allowed.
- &$result: Output parameter, in case the handler function wants to provide a
- converted Content object. Note that $result->getContentModel() must return
- $toModel.
- 'CustomEditor': When invoking the page editor
- Return true to allow the normal editor to be used, or false if implementing
- a custom editor, e.g. for a special namespace, etc.
- $article: Article being edited
- $user: User performing the edit
- 'DatabaseOraclePostInit': Called after initialising an Oracle database
- $db: the DatabaseOracle object
- 'DeletedContribsPager::reallyDoQuery': Called before really executing the query
- for Special:DeletedContributions
- Similar to ContribsPager::reallyDoQuery
- &$data: an array of results of all contribs queries
- $pager: The DeletedContribsPager object hooked into
- $offset: Index offset, inclusive
- $limit: Exact query limit
- $descending: Query direction, false for ascending, true for descending
- 'DeletedContributionsLineEnding': Called before a DeletedContributions HTML line
- is finished.
- Similar to ContributionsLineEnding
- $page: SpecialPage object for DeletedContributions
- &$ret: the HTML line
- $row: the DB row for this line
- &$classes: the classes to add to the surrounding <li>
- 'DiffRevisionTools': Override or extend the revision tools available from the
- diff view, i.e. undo, etc.
- $newRev: Revision object of the "new" revision
- &$links: Array of HTML links
- $oldRev: Revision object of the "old" revision (may be null)
- $user: Current user object
- 'DiffViewHeader': Called before diff display
- $diff: DifferenceEngine object that's calling
- $oldRev: Revision object of the "old" revision (may be null/invalid)
- $newRev: Revision object of the "new" revision
- 'DisplayOldSubtitle': before creating subtitle when browsing old versions of
- an article
- &$article: article (object) being viewed
- &$oldid: oldid (int) being viewed
- 'DoEditSectionLink': DEPRECATED! Use SkinEditSectionLinks instead.
- Override the HTML generated for section edit links
- $skin: Skin object rendering the UI
- $title: Title object for the title being linked to (may not be the same as
- the page title, if the section is included from a template)
- $section: The designation of the section being pointed to, to be included in
- the link, like "§ion=$section"
- $tooltip: The default tooltip. Escape before using.
- By default, this is wrapped in the 'editsectionhint' message.
- &$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 wfMessage function
- 'EditFilter': Perform checks on an edit
- $editor: EditPage instance (object). The edit form (see includes/EditPage.php)
- $text: Contents of the edit box
- $section: Section being edited
- &$error: Error message to return
- $summary: Edit summary for page
- 'EditFilterMerged': DEPRECATED! Use EditFilterMergedContent instead.
- Post-section-merge edit filter.
- $editor: EditPage instance (object)
- $text: content of the edit box
- &$error: error message to return
- $summary: Edit summary for page
- 'EditFilterMergedContent': Post-section-merge edit filter.
- This may be triggered by the EditPage or any other facility that modifies page
- content. Use the $status object to indicate whether the edit should be allowed,
- and to provide a reason for disallowing it. Return false to abort the edit, and
- true to continue. Returning true if $status->isOK() returns false means "don't
- save but continue user interaction", e.g. show the edit form.
- $status->apiHookResult can be set to an array to be returned by api.php
- action=edit. This is used to deliver captchas.
- $context: object implementing the IContextSource interface.
- $content: content of the edit box, as a Content object.
- $status: Status object to represent errors, etc.
- $summary: Edit summary for page
- $user: the User object representing the user whois performing the edit.
- $minoredit: whether the edit was marked as minor by the user.
- 'EditFormInitialText': Allows modifying the edit form when editing existing
- pages
- $editPage: EditPage object
- 'EditFormPreloadText': Allows population of the edit form when creating
- new pages
- &$text: Text to preload with
- &$title: Title object representing the page being created
- 'EditPage::attemptSave': Called before an article is
- saved, that is before WikiPage::doEditContent() is called
- $editpage_Obj: the current EditPage object
- 'EditPage::attemptSave:after': Called after an article save attempt
- $editpage_Obj: the current EditPage object
- $status: the resulting Status object
- $resultDetails: Result details array
- '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
- Return value is ignored (should always return true)
- &$editor: the EditPage instance for reference
- &$out: an OutputPage instance to write to
- 'EditPage::showEditForm:initial': before showing the edit form
- Return false to halt editing; you'll need to handle error messages, etc.
- yourself. Alternatively, modifying $error and returning true will cause the
- contents of $error to be echoed at the top of the edit form as wikitext.
- Return true without altering $error to allow the edit to proceed.
- &$editor: EditPage instance (object)
- &$out: an OutputPage instance to write to
- 'EditPage::showReadOnlyForm:initial': similar to EditPage::showEditForm:initial
- but for the read-only 'view source' variant of the edit form.
- Return value is ignored (should always return true)
- $editor: EditPage instance (object)
- &$out: an OutputPage instance to write to
- 'EditPage::showStandardInputs:options': allows injection of form fields into
- the editOptions area
- Return value is ignored (should always be true)
- $editor: EditPage instance (object)
- $out: an OutputPage instance to write to
- &$tabindex: HTML tabindex of the last edit check/button
- 'EditPageBeforeConflictDiff': allows modifying the EditPage object and output
- when there's an edit conflict. Return false to halt normal diff output; in
- this case you're responsible for computing and outputting the entire "conflict"
- part, i.e., the "difference between revisions" and "your text" headers and
- sections.
- &$editor: EditPage instance
- &$out: OutputPage instance
- 'EditPageBeforeEditButtons': Allows modifying the edit buttons below the
- textarea in the edit form.
- &$editpage: The current EditPage object
- &$buttons: Array of edit buttons "Save", "Preview", "Live", and "Diff"
- &$tabindex: HTML tabindex of the last edit check/button
- 'EditPageBeforeEditChecks': Allows modifying the edit checks below the textarea
- in the edit form.
- &$editpage: The current EditPage object
- &$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'.
- 'EditPageGetDiffContent': Allow modifying the wikitext that will be used in
- "Show changes". Note that it is preferable to implement diff handling for
- different data types using the ContentHandler facility.
- $editPage: EditPage object
- &$newtext: wikitext that will be used as "your version"
- 'EditPageGetDiffText': DEPRECATED! Use EditPageGetDiffContent instead.
- Allow modifying the wikitext that will be used in "Show changes". Note that it
- is preferable to implement diff handling for different data types using the
- ContentHandler facility.
- $editPage: EditPage object
- &$newtext: wikitext that will be used as "your version"
- 'EditPageGetPreviewContent': Allow modifying the wikitext that will be
- previewed. Note that it is preferable to implement previews for different data
- types using the ContentHandler facility.
- $editPage: EditPage object
- &$content: Content object to be previewed (may be replaced by hook function)
- 'EditPageGetPreviewText': DEPRECATED! Use EditPageGetPreviewContent instead.
- Allow modifying the wikitext that will be previewed. Note that it is preferable
- to implement previews for different data types using the ContentHandler
- facility.
- $editPage: EditPage object
- &$toparse: wikitext that will be parsed
- 'EditPageNoSuchSection': When a section edit request is given for an
- non-existent section
- &$editpage: The current EditPage object
- &$res: the HTML of the error text
- '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'
- 'EmailConfirmed': When checking that the user's email address is "confirmed".
- This runs before the other checks, such as anonymity and the real check; return
- true to allow those checks to occur, and false if checking is done.
- &$user: User being checked
- &$confirmed: Whether or not the email address is confirmed
- 'EmailUser': Before sending email from one user to another.
- &$to: MailAddress object of receiving user
- &$from: MailAddress object of sending user
- &$subject: subject of the mail
- &$text: text of the mail
- &$error: Out-param for an error
- 'EmailUserCC': Before sending the copy of the email to the author.
- &$to: MailAddress object of receiving user
- &$from: MailAddress object of sending user
- &$subject: subject of the mail
- &$text: text of the mail
- 'EmailUserComplete': After sending email from one user to another.
- $to: MailAddress object of receiving user
- $from: MailAddress object 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.
- 'EnhancedChangesList::getLogText': to alter, remove or add to the links of a
- group of changes in EnhancedChangesList.
- Hook subscribers can return false to omit this line from recentchanges.
- $changesList: EnhancedChangesList object
- &$links: The links that were generated by EnhancedChangesList
- $block: The RecentChanges objects in that block
- 'EnhancedChangesListModifyLineData': to alter data used to build
- a grouped recent change inner line in EnhancedChangesList.
- Hook subscribers can return false to omit this line from recentchanges.
- $changesList: EnhancedChangesList object
- &$data: An array with all the components that will be joined in order to create the line
- $block: An array of RecentChange objects in that block
- $rc: The RecentChange object for this line
- 'EnhancedChangesListModifyBlockLineData': to alter data used to build
- a non-grouped recent change line in EnhancedChangesList.
- $changesList: EnhancedChangesList object
- &$data: An array with all the components that will be joined in order to create the line
- $rc: The RecentChange object for this line
- 'ExemptFromAccountCreationThrottle': Exemption from the account creation
- throttle.
- $ip: The ip address of the user
- 'ExtensionTypes': Called when generating the extensions credits, use this to
- change the tables headers.
- &$extTypes: associative array of extensions types
- 'ExtractThumbParameters': DEPRECATED! Media handler should override
- MediaHandler::parseParamString instead.
- Called when extracting thumbnail parameters from a thumbnail file name.
- $thumbname: the base name of the thumbnail file
- &$params: the currently extracted params (has source name, temp or archived
- zone)
- 'FetchChangesList': When fetching the ChangesList derivative for a particular
- user.
- $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)
- 'FileDeleteComplete': When a file is deleted.
- &$file: reference to the deleted file
- &$oldimage: in case of the deletion of an old image, the name of the old file
- &$article: in case all revisions of the file are deleted a reference to the
- WikiFilePage associated with the file.
- &$user: user who performed the deletion
- &$reason: reason
- 'FileTransformed': When a file is transformed and moved into storage.
- $file: reference to the File object
- $thumb: the MediaTransformOutput object
- $tmpThumbPath: The temporary file system path of the transformed file
- $thumbPath: The permanent storage path of the transformed file
- 'FileUndeleteComplete': When a file is undeleted
- $title: title object to the file
- $fileVersions: array of undeleted versions. Empty if all versions were restored
- $user: user who performed the undeletion
- $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)
- 'FormatAutocomments': When an autocomment is formatted by the Linker.
- &$comment: Reference to the accumulated comment. Initially null, when set the
- default code will be skipped.
- $pre: Boolean, true if there is text before this autocomment
- $auto: The extracted part of the parsed comment before the call to the hook.
- $post: Boolean, true if there is text after this autocomment
- $title: An optional title object used to links to sections. Can be null.
- $local: Boolean indicating whether section links should refer to local page.
- $wikiId: String containing the ID (as used by WikiMap) of the wiki from which the
- autocomment originated; null for the local wiki. Added in 1.26, should default
- to null in handler functions, for backwards compatibility.
- 'GalleryGetModes': Get list of classes that can render different modes of a
- gallery.
- &$modeArray: An associative array mapping mode names to classes that implement
- that mode. It is expected all registered classes are a subclass of
- ImageGalleryBase.
- 'GetAutoPromoteGroups': When determining which autopromote groups a user is
- entitled to be in.
- $user: user to promote.
- &$promote: groups that will be added.
- 'GetBlockedStatus': after loading blocking status of an user from the database
- &$user: user (object) being checked
- 'GetCacheVaryCookies': Get cookies that should vary cache options.
- $out: OutputPage object
- &$cookies: array of cookies name, add a value to it if you want to add a cookie
- that have to vary cache options
- 'GetCanonicalURL': Modify fully-qualified URLs used for IRC and e-mail
- notifications.
- &$title: Title object of page
- &$url: string value as output (out parameter, can modify)
- $query: query options passed to Title::getCanonicalURL()
- 'GetDefaultSortkey': Override the default sortkey for a page.
- $title: Title object that we need to get a sortkey for
- &$sortkey: Sortkey to use.
- 'GetDifferenceEngine': Called when getting a new difference engine interface
- object Return false for valid object in $differenceEngine or true for the
- default difference engine.
- $context: IContextSource context to be used for diff
- $old: Revision ID to show and diff with
- $new: Either a revision ID or one of the strings 'cur', 'prev' or 'next'
- $refreshCache: If set, refreshes the diff cache
- $unhide: If set, allow viewing deleted revs
- &$differenceEngine: output parameter, difference engine object to be used for
- diff
- 'GetDoubleUnderscoreIDs': Modify the list of behavior switch (double
- underscore) magic words. Called by MagicWord.
- &$doubleUnderscoreIDs: array of strings
- 'GetExtendedMetadata': Get extended file metadata for the API
- &$combinedMeta: Array of the form:
- 'MetadataPropName' => array(
- value' => prop value,
- 'source' => 'name of hook'
- ).
- $file: File object of file in question
- $context: RequestContext (including language to use)
- $single: Only extract the current language; if false, the prop value should
- be in the metadata multi-language array format:
- mediawiki.org/wiki/Manual:File_metadata_handling#Multi-language_array_format
- &$maxCacheTime: how long the results can be cached
- 'GetFullURL': Modify fully-qualified URLs used in redirects/export/offsite data.
- &$title: Title object of page
- &$url: string value as output (out parameter, can modify)
- $query: query options passed to Title::getFullURL()
- 'GetHumanTimestamp': Pre-emptively override the human-readable timestamp
- generated by MWTimestamp::getHumanTimestamp(). Return false in this hook to use
- the custom output.
- &$output: string for the output timestamp
- $timestamp: MWTimestamp object of the current (user-adjusted) timestamp
- $relativeTo: MWTimestamp object of the relative (user-adjusted) timestamp
- $user: User whose preferences are being used to make timestamp
- $lang: Language that will be used to render the timestamp
- 'GetInternalURL': Modify fully-qualified URLs used for squid cache purging.
- &$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.
- &$colours: (output) array of CSS classes, indexed by prefixed DB keys
- 'GetLocalURL': Modify local URLs as output into page links. Note that if you are
- working with internal urls (non-interwiki) then it may be preferable to work
- with the GetLocalURL::Internal or GetLocalURL::Article hooks as GetLocalURL can
- be buggy for internal urls on render if you do not re-implement the horrible
- hack that Title::getLocalURL uses in your own extension.
- &$title: Title object of page
- &$url: string value as output (out parameter, can modify)
- $query: query options passed to Title::getLocalURL()
- 'GetLocalURL::Article': Modify local URLs specifically pointing to article paths
- without any fancy queries or variants.
- &$title: Title object of page
- &$url: string value as output (out parameter, can modify)
- 'GetLocalURL::Internal': Modify local URLs to internal pages.
- &$title: Title object of page
- &$url: string value as output (out parameter, can modify)
- $query: query options passed to Title::getLocalURL()
- 'GetLogTypesOnUser': Add log types where the target is a userpage
- &$types: Array of log types
- 'GetMetadataVersion': Modify the image metadata version currently in use. This
- is used when requesting image metadata from a ForeignApiRepo. 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
- 'GetNewMessagesAlert': Disable or modify the new messages alert
- &$newMessagesAlert: An empty string by default. If the user has new talk page
- messages, this should be populated with an alert message to that effect
- $newtalks: An empty array if the user has no new messages or an array
- containing links and revisions if there are new messages (See
- User::getNewMessageLinks)
- $user: The user object of the user who is loading the page
- $out: OutputPage object (to check what type of page the user is on)
- 'GetPreferences': Modify user preferences.
- $user: User whose preferences are being modified.
- &$preferences: Preferences description array, to be fed to an HTMLForm object
- 'GetRelativeTimestamp': Pre-emptively override the relative timestamp generated
- by MWTimestamp::getRelativeTimestamp(). Return false in this hook to use the
- custom output.
- &$output: string for the output timestamp
- &$diff: DateInterval representing the difference between the timestamps
- $timestamp: MWTimestamp object of the current (user-adjusted) timestamp
- $relativeTo: MWTimestamp object of the relative (user-adjusted) timestamp
- $user: User whose preferences are being used to make timestamp
- $lang: Language that will be used to render the timestamp
- '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
- array( messagename, param1, param2, ... ) or a MessageSpecifier instance (you
- might want to use ApiMessage to provide machine-readable details for the API).
- For consistency, error messages
- should be plain text with no special coloring, bolding, etc. to show that
- they're errors; presenting them properly to the user as errors is done by the
- caller.
- &$title: Title object being checked against
- &$user: Current user object
- $action: Action being checked
- &$result: User permissions error to add. If none, return true.
- 'getUserPermissionsErrorsExpensive': Equal to getUserPermissionsErrors, but is
- called only if expensive checks are enabled. Add a permissions error when
- permissions errors are checked for. Return false if the user can't do it, and
- populate $result with the reason in the form of array( messagename, param1,
- param2, ... ) or a MessageSpecifier instance (you might want to use ApiMessage
- to provide machine-readable details for the API). For consistency, error
- messages should be plain text with no
- special coloring, bolding, etc. to show that they're errors; presenting them
- properly to the user as errors is done by the caller.
- &$title: Title object being checked against
- &$user: Current user object
- $action: Action being checked
- &$result: User permissions error to add. If none, return true.
- 'GitViewers': Called when generating the list of git viewers for
- Special:Version, use this to change the list.
- &$extTypes: associative array of repo URLS to viewer URLs.
- 'HistoryRevisionTools': Override or extend the revision tools available from the
- page history view, i.e. undo, rollback, etc.
- $rev: Revision object
- &$links: Array of HTML links
- $prevRev: Revision object, next in line in page history, or null
- $user: Current user object
- 'HTMLFileCache::useFileCache': Override whether a page should be cached in file
- cache.
- $context: An IContextSource object with information about the request being
- served.
- '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.
- &$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
- includes/Linker.php for Linker::makeImageLink
- &$handlerParams: Various parameters with special meanings; see documentation in
- includes/Linker.php for Linker::makeImageLink
- &$time: Timestamp of file in 'YYYYMMDDHHIISS' string form, or false for current
- &$res: Final HTML output, used if you return false
- 'ImageOpenShowImageInlineBefore': Call potential extension just before showing
- the image on an image page.
- &$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 constructed.
- $imagePage: ImagePage object ($this)
- $file: the file
- &$line: the HTML of the history line
- &$css: the line CSS class
- 'ImagePageFindFile': Called when fetching the file associated with an image
- page.
- $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 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.
- 'ImportHandleLogItemXMLTag': When parsing a XML tag in a log item.
- Return false to stop further processing of the tag
- $reader: XMLReader object
- $logInfo: Array of information
- 'ImportHandlePageXMLTag': When parsing a XML tag in a page.
- Return false to stop further processing of the tag
- $reader: XMLReader object
- &$pageInfo: Array of information
- 'ImportHandleRevisionXMLTag': When parsing a XML tag in a page revision.
- Return false to stop further processing of the tag
- $reader: XMLReader object
- $pageInfo: Array of page information
- $revisionInfo: Array of revision information
- 'ImportHandleToplevelXMLTag': When parsing a top level XML tag.
- Return false to stop further processing of the tag
- $reader: XMLReader object
- 'ImportHandleUploadXMLTag': When parsing a XML tag in a file upload.
- Return false to stop further processing of the tag
- $reader: XMLReader object
- $revisionInfo: Array of information
- 'ImportLogInterwikiLink': Hook to change the interwiki link used in log entries
- and edit summaries for transwiki imports.
- &$fullInterwikiPrefix: Interwiki prefix, may contain colons.
- &$pageTitle: String that contains page title.
- 'ImportSources': Called when reading from the $wgImportSources configuration
- variable. Can be used to lazy-load the import sources list.
- &$importSources: The value of $wgImportSources. Modify as necessary. See the
- comment in DefaultSettings.php for the detail of how to structure this array.
- 'InfoAction': When building information to display on the action=info page.
- $context: IContextSource object
- &$pageInfo: Array of information
- 'InitializeArticleMaybeRedirect': MediaWiki check to see if title is a redirect.
- &$title: Title object for the current page
- &$request: WebRequest
- &$ignoreRedirect: boolean to skip redirect check
- &$target: Title/string of redirect target
- &$article: Article object
- 'InternalParseBeforeLinks': during Parser's internalParse method before links
- but after nowiki/noinclude/includeonly/onlyinclude and other processings.
- &$parser: Parser object
- &$text: string containing partially parsed text
- &$stripState: Parser's internal StripState object
- 'InternalParseBeforeSanitize': during Parser's internalParse method just before
- the parser removes unwanted/dangerous HTML tags and after nowiki/noinclude/
- includeonly/onlyinclude and other processings. Ideal for syntax-extensions after
- template/parser function execution which respect nowiki and HTML-comments.
- &$parser: Parser object
- &$text: string containing partially parsed text
- &$stripState: Parser's internal StripState 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.
- 'InvalidateEmailComplete': Called after a user's email has been invalidated
- successfully.
- $user: user (object) whose email is being invalidated
- 'IRCLineURL': When constructing the URL to use in an IRC notification.
- Callee may modify $url and $query, URL will be constructed as $url . $query
- &$url: URL to index.php
- &$query: Query string
- $rc: RecentChange object that triggered url generation
- 'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
- &$article: article (object) being checked
- 'IsTrustedProxy': Override the result of IP::isTrustedProxy()
- &$ip: IP being check
- &$result: Change this value to override the result of IP::isTrustedProxy()
- 'IsUploadAllowedFromUrl': Override the result of UploadFromUrl::isAllowedUrl()
- $url: URL used to upload from
- &$allowed: Boolean indicating if uploading is allowed for given URL
- 'isValidEmailAddr': Override the result of Sanitizer::validateEmail(), for
- instance to return false if the domain name doesn't match your organization.
- $addr: The e-mail address entered by the user
- &$result: Set this and return false to override the internal checks
- 'isValidPassword': Override the result of User::isValidPassword()
- $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
- 'Language::getMessagesFileName':
- $code: The language code or the language we're looking for a messages file for
- &$file: The messages file path, you can override this to change the location.
- '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: language code (string)
- 'LanguageGetNamespaces': Provide custom ordering for namespaces or
- remove namespaces. Do not use this hook to add namespaces. Use
- CanonicalNamespaces for that.
- &$namespaces: Array of namespaces indexed by their numbers
- '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: language code (string)
- 'LanguageGetTranslatedLanguageNames': Provide translated language names.
- &$names: array of language code => language name
- $code: language of the preferred translations
- 'LanguageLinks': Manipulate a page's language links. This is called
- in various places to allow extensions to define the effective language
- links for a page.
- $title: The page's Title.
- &$links: Associative array mapping language codes to prefixed links of the
- form "language:title".
- &$linkFlags: Associative array mapping prefixed links to arrays of flags.
- Currently unused, but planned to provide support for marking individual
- language links in the UI, e.g. for featured articles.
- 'LanguageSelector': Hook to change the language selector available on a page.
- $out: The output page.
- $cssClassName: CSS class name of the language selector.
- 'LinkBegin': Used when generating internal and interwiki links in
- Linker::link(), before processing starts. Return false to skip default
- processing and return $ret. See documentation for Linker::link() for details on
- the expected meanings of parameters.
- $skin: the Skin object
- $target: the Title that the link is pointing to
- &$html: the contents that the <a> tag should have (raw HTML); null means
- "default".
- &$customAttribs: the HTML attributes that the <a> tag should have, in
- associative array form, with keys and values unescaped. Should be merged
- with default values, with a value of false meaning to suppress the
- attribute.
- &$query: the query string to add to the generated URL (the bit after the "?"),
- in associative array form, with keys and values unescaped.
- &$options: array of options. Can include 'known', 'broken', 'noclasses'.
- &$ret: the value to return if your hook returns false.
- 'LinkEnd': Used when generating internal and interwiki links in Linker::link(),
- just before the function returns a value. If you return true, an <a> element
- with HTML attributes $attribs and contents $html will be returned. If you
- return false, $ret will be returned.
- $skin: the Skin object
- $target: the Title object that the link is pointing to
- $options: the options. Will always include either 'known' or 'broken', and may
- include 'noclasses'.
- &$html: the final (raw HTML) contents of the <a> tag, after processing.
- &$attribs: the final HTML attributes of the <a> tag, after processing, in
- associative array form.
- &$ret: the value to return if your hook returns false.
- 'LinkerMakeExternalImage': At the end of Linker::makeExternalImage() just
- before the return.
- &$url: the image url
- &$alt: the image's alt text
- &$img: the new image HTML (if returning false)
- 'LinkerMakeExternalLink': At the end of Linker::makeExternalLink() just
- before the return.
- &$url: the link url
- &$text: the link text
- &$link: the new link HTML (if returning false)
- &$attribs: the attributes to be applied.
- $linkType: The external link type
- 'LinkerMakeMediaLinkFile': At the end of Linker::makeMediaLinkFile() just
- before the return.
- $title: the Title object that the link is pointing to
- $file: the File object or false if broken link
- &$html: the link text
- &$attribs: the attributes to be applied
- &$ret: the value to return if your hook returns false
- 'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the
- actual update.
- &$linksUpdate: the LinksUpdate object
- 'LinksUpdateAfterInsert': At the end of LinksUpdate::incrTableUpdate() after
- each link table insert. For example, pagelinks, imagelinks, externallinks.
- $linksUpdate: LinksUpdate object
- $table: the table to insert links to
- $insertions: an array of links to insert
- 'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating,
- including delete and insert, has completed for all link tables
- &$linksUpdate: the LinksUpdate object
- 'LinksUpdateConstructed': At the end of LinksUpdate() is construction.
- &$linksUpdate: the LinksUpdate object
- 'ListDefinedTags': When trying to find all defined tags.
- &$tags: The list of tags.
- 'LoadExtensionSchemaUpdates': Called during database installation and updates.
- $updater: A DatabaseUpdater subclass
- 'LocalFile::getHistory': Called before file history query performed.
- &$file: the File object
- &$tables: tables
- &$fields: select fields
- &$conds: conditions
- &$opts: query options
- &$join_conds: JOIN conditions
- 'LocalFilePurgeThumbnails': Called before thumbnails for a local file a purged.
- $file: the File object
- $archiveName: name of an old file version or false if it's the current one
- 'LocalisationCacheRecache': Called when loading the localisation data into
- cache.
- $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.
- $cache: The LocalisationCache object
- $code: language code
- &$alldata: The localisation data from core and extensions. Note some keys may
- be omitted if they won't be merged into the final result.
- 'LocalisationChecksBlacklist': When fetching the blacklist of
- localisation checks.
- &$blacklist: array of checks to blacklist. See the bottom of
- maintenance/language/checkLanguage.inc for the format of this variable.
- 'LocalisationIgnoredOptionalMessages': When fetching the list of ignored and
- optional localisation messages
- &$ignored: Array of ignored message keys
- &$optional: Array of optional message keys
- 'LocalUserCreated': Called when a local user has been created
- $user: User object for the created user
- $autocreated: Boolean, whether this was an auto-creation
- 'LogEventsListGetExtraInputs': When getting extra inputs to display on
- Special:Log for a specific log type
- $type: String of log type being displayed
- $logEventsList: LogEventsList object for context and access to the WebRequest
- &$input: string HTML of an input element
- 'LogEventsListShowLogExtract': Called before the string is added to OutputPage.
- Returning false will prevent the string from being added to the OutputPage.
- &$s: html string to show for the log extract
- $types: String or Array Log types to show
- $page: String or Title The page title to show log entries for
- $user: String The user who made the log entries
- $param: Associative Array with the following additional options:
- - lim Integer Limit of items to show, default is 50
- - conds Array Extra conditions for the query (e.g. "log_action != 'revision'")
- - showIfEmpty boolean Set to false if you don't want any output in case the
- loglist is empty if set to true (default), "No matching items in log" is
- displayed if loglist is empty
- - msgKey Array If you want a nice box with a message, set this to the key of
- the message. First element is the message key, additional optional elements
- are parameters for the key that are processed with
- wfMessage()->params()->parseAsBlock()
- - offset Set to overwrite offset parameter in $wgRequest set to '' to unset
- offset
- - wrap String Wrap the message in html (usually something like
- "<div ...>$1</div>").
- - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
- 'LogException': Called before an exception (or PHP error) is logged. This is
- meant for integration with external error aggregation services; returning false
- will NOT prevent logging.
- $e: The exception (in case of a plain old PHP error, a wrapping ErrorException)
- $suppressed: true if the error was suppressed via
- error_reporting()/wfSuppressWarnings()
- '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
- $password: the password being submitted and found wanting
- $retval: a LoginForm class constant with authenticateUserData() return
- value (SUCCESS, WRONG_PASS, etc.).
- 'LoginFormValidErrorMessages': Called in LoginForm when a function gets valid
- error messages. Allows to add additional error messages (except messages already
- in LoginForm::$validErrorMessages).
- &$messages: Already added messages (inclusive messages from
- LoginForm::$validErrorMessages)
- 'LoginUserMigrated': DEPRECATED! Create a PreAuthenticationProvider instead.
- Called during login to allow extensions the opportunity to inform a user that
- their username doesn't exist for a specific reason, instead of letting the
- login form give the generic error message that the account does not exist. For
- example, when the account has been renamed or deleted.
- $user: the User object being authenticated against.
- &$msg: the message identifier for abort reason, or an array to pass a message
- key and parameters.
- 'LogLine': Processes a single log entry on Special:Log.
- $log_type: string for the type of log entry (e.g. 'move'). Corresponds to
- logging.log_type database field.
- $log_action: string for the type of log action (e.g. 'delete', 'block',
- 'create2'). Corresponds to logging.log_action database field.
- $title: Title object that corresponds to logging.log_namespace and
- logging.log_title database fields.
- $paramArray: Array of parameters that corresponds to logging.log_params field.
- Note that only $paramArray[0] appears to contain anything.
- &$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)
- 'LonelyPagesQuery': Allow extensions to modify the query used by
- Special:LonelyPages.
- &$tables: tables to join in the query
- &$conds: conditions for the query
- &$joinConds: join conditions for the query
- 'MagicWordwgVariableIDs': When defining new magic words IDs.
- &$variableIDs: array of strings
- 'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance
- script.
- $refreshLinks: RefreshLinks object
- 'MakeGlobalVariablesScript': Called at end of OutputPage::getJSVars.
- 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
- $out: The OutputPage which called the hook, can be used to get the real title.
- 'MarkPatrolled': Before an edit is marked patrolled.
- $rcid: ID of the revision to be marked patrolled
- &$user: the user (object) marking the revision as patrolled
- $wcOnlySysopsCanPatrol: config setting indicating whether the user needs to be a
- sysop in order to mark an edit patrolled.
- $auto: true if the edit is being marked as patrolled automatically
- 'MarkPatrolledComplete': After an edit is marked patrolled.
- $rcid: ID of the revision marked as patrolled
- &$user: user (object) who marked the edit patrolled
- $wcOnlySysopsCanPatrol: config setting indicating whether the user must be a
- sysop to patrol the edit.
- $auto: true if the edit is being marked as patrolled automatically
- '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
- $article: Article on which the action will be performed
- $title: Title on which the action will be performed
- $user: $wgUser
- $request: $wgRequest
- $mediaWiki: The $mediawiki object
- 'MediaWikiServices': Override services in the default MediaWikiServices instance.
- Extensions may use this to define, replace, or wrap existing services.
- However, the preferred way to define a new service is the $wgServiceWiringFiles array.
- $services: MediaWikiServices
- 'MessageCache::get': When fetching a message. Can be used to override the key
- for customisations. Given and returned message key must be in special format:
- 1) first letter must be in lower case according to the content language.
- 2) spaces must be replaced with underscores
- &$key: message key (string)
- 'MessageCacheReplace': When a message page is changed. Useful for updating
- caches.
- $title: name of the page changed.
- $text: new contents of the page.
- 'MessagesPreLoad': When loading a message from the database.
- $title: title of the message (string)
- &$message: value (string), change it to the message you want to define
- 'MimeMagicGuessFromContent': Allows MW extensions guess the MIME by content.
- $mimeMagic: Instance of MimeMagic.
- &$head: First 1024 bytes of the file in a string (in - Do not alter!).
- &$tail: More or equal than last 65558 bytes of the file in a string
- (in - Do not alter!).
- $file: File path.
- &$mime: MIME type (out).
- 'MimeMagicImproveFromExtension': Allows MW extensions to further improve the
- MIME type detected by considering the file extension.
- $mimeMagic: Instance of MimeMagic.
- $ext: File extension.
- &$mime: MIME type (in/out).
- 'MimeMagicInit': Before processing the list mapping MIME types to media types
- and the list mapping MIME types to file extensions.
- As an extension author, you are encouraged to submit patches to MediaWiki's
- core to add new MIME types to mime.types.
- $mimeMagic: Instance of MimeMagic.
- Use $mimeMagic->addExtraInfo( $stringOfInfo );
- for adding new MIME info to the list.
- Use $mimeMagic->addExtraTypes( $stringOfTypes );
- for adding new MIME types to the list.
- '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.
- 'MovePageCheckPermissions': Specify whether the user is allowed to move the
- page.
- $oldTitle: Title object of the current (old) location
- $newTitle: Title object of the new location
- $user: User making the move
- $reason: string of the reason provided by the user
- $status: Status object to pass error messages to
- 'MovePageIsValidMove': Specify whether a page can be moved for technical
- reasons.
- $oldTitle: Title object of the current (old) location
- $newTitle: Title object of the new location
- $status: Status object to pass error messages to
- 'NamespaceIsMovable': Called when determining if it is possible to pages in a
- namespace.
- $index: Integer; the index of the namespace being checked.
- &$result: Boolean; whether MediaWiki currently thinks that pages in this
- namespace are movable. Hooks may change this value to override the return
- value of MWNamespace::isMovable().
- '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
- &$newId: the actual new Id to use in the diff (0 means current)
- $old: the ?old= param value from the url
- $new: the ?new= param value from the url
- 'NewRevisionFromEditComplete': Called when a revision was inserted due to an
- edit.
- $wikiPage: the WikiPage edited
- $rev: the new revision
- $baseID: the revision ID this was based off, if any
- $user: the editing user
- 'OldChangesListRecentChangesLine': Customize entire recent changes line, or
- return false to omit the line from RecentChanges and Watchlist special pages.
- &$changeslist: The OldChangesList instance.
- &$s: HTML of the form "<li>...</li>" containing one RC entry.
- $rc: The RecentChange object.
- &$classes: array of css classes for the <li> element
- 'OpenSearchUrls': Called when constructing the OpenSearch description XML. Hooks
- can alter or append to the array of URLs for search & suggestion formats.
- &$urls: array of associative arrays with Url element attributes
- 'OpportunisticLinksUpdate': Called by WikiPage::triggerOpportunisticLinksUpdate
- when a page view triggers a re-rendering of the page. This may happen
- particularly if the parser cache is split by user language, and no cached
- rendering of the page exists in the user's language. The hook is called
- before checking whether page_links_updated indicates that the links are up
- to date. Returning false will cause triggerOpportunisticLinksUpdate() to abort
- without triggering any updates.
- $page: the Page that was rendered.
- $title: the Title of the rendered page.
- $parserOutput: ParserOutput resulting from rendering the page.
- 'OtherBlockLogLink': 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
- '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
- &$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.
- The following keys are set: page, user, epoch
- 'OutputPageMakeCategoryLinks': Links are about to be generated for the page's
- categories. Implementations should return false if they generate the category
- links, so the default link generation is skipped.
- &$out: OutputPage instance (object)
- $categories: associative array, keys are category names, values are category
- types ("normal" or "hidden")
- &$links: array, intended to hold the result. Must be an associative array with
- category types as keys and arrays of HTML links as values.
- 'OutputPageParserOutput': after adding a parserOutput to $wgOut
- &$out: OutputPage instance (object)
- $parserOutput: parserOutput instance being added in $out
- 'PageContentInsertComplete': After a new article is created.
- $wikiPage: WikiPage created
- $user: User creating the article
- $content: New content as a Content object
- $summary: Edit summary/comment
- $isMinor: Whether or not the edit was marked as minor
- $isWatch: (No longer used)
- $section: (No longer used)
- $flags: Flags passed to WikiPage::doEditContent()
- $revision: New Revision of the article
- 'PageContentLanguage': Allows changing the language in which the content of a
- page is written. Defaults to the wiki content language ($wgContLang).
- $title: Title object
- &$pageLang: the page content language (either an object or a language code)
- $wgLang: the user language
- 'PageContentSave': Before an article is saved.
- $wikiPage: the WikiPage (object) being saved
- $user: the user (object) saving the article
- $content: the new article content, as a Content object
- $summary: the article summary (comment)
- $isminor: minor flag
- $iswatch: watch flag
- $section: section #
- 'PageContentSaveComplete': After an article has been updated.
- $wikiPage: WikiPage modified
- $user: User performing the modification
- $content: New content, as a Content object
- $summary: Edit summary/comment
- $isMinor: Whether or not the edit was marked as minor
- $isWatch: (No longer used)
- $section: (No longer used)
- $flags: Flags passed to WikiPage::doEditContent()
- $revision: New Revision of the article (can be null for edits that change
- nothing)
- $status: Status object about to be returned by doEditContent()
- $baseRevId: the rev ID (or false) this edit was based on
- 'PageHistoryBeforeList': When a history page list is about to be constructed.
- &$article: the article that the history is loading for
- $context: RequestContext object
- 'PageHistoryLineEnding': Right before the end <li> is added to a history line.
- $historyAction: the action object
- &$row: the revision row for this line
- &$s: the string representing this parsed line
- &$classes: array containing the <li> element classes
- 'PageHistoryPager::doBatchLookups': Called after the pager query was run, before
- any output is generated, to allow batch lookups for prefetching information
- needed for display. If the hook handler returns false, the regular behavior of
- doBatchLookups() is skipped.
- $pager: the PageHistoryPager
- $result: a ResultWrapper representing the query result
- 'PageHistoryPager::getQueryInfo': when a history pager query parameter set is
- constructed.
- &$pager: the pager
- &$queryInfo: the query parameters
- 'PageRenderingHash': Alter the parser cache option hash key. A parser extension
- which depends on user options should install this hook and append its values to
- the key.
- &$confstr: reference to a hash key string which can be modified
- $user: User (object) requesting the page
- &$forOptions: array of options the hash is for
- 'PageViewUpdates': Allow database (or other) changes to be made after a
- page view is seen by MediaWiki. Note this does not capture views made
- via external caches such as Squid.
- $wikipage: WikiPage (object) for the page being viewed.
- $user: User (object) for the user who is viewing.
- 'ParserAfterParse': Called from Parser::parse() just after the call to
- Parser::internalParse() returns.
- &$parser: parser object
- &$text: text being parsed
- &$stripState: stripState used (object)
- 'ParserAfterStrip': Called at end of parsing time.
- TODO: No more strip, deprecated ?
- &$parser: parser object
- &$text: text being parsed
- &$stripState: stripState used (object)
- 'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
- &$parser: Parser object being used
- &$text: text that will be returned
- 'ParserAfterUnstrip': Called after the first unstripGeneral() in
- Parser::internalParseHalfParsed()
- &$parser: Parser object being used
- &$text: text that will be returned
- 'ParserBeforeInternalParse': Called at the beginning of Parser::internalParse().
- &$parser: Parser object
- &$text: text to parse
- &$stripState: StripState instance being used
- 'ParserBeforeStrip': Called at start of parsing time.
- TODO: No more strip, deprecated ?
- &$parser: parser object
- &$text: text being parsed
- &$stripState: stripState used (object)
- 'ParserBeforeTidy': Called before tidy and custom tags replacements.
- &$parser: Parser object being used
- &$text: actual text
- 'ParserCacheSaveComplete': Called after a ParserOutput has been committed to
- the parser cache.
- $parserCache: ParserCache object $parserOutput was stored in
- $parserOutput: ParserOutput object that was stored
- $title: Title of the page that was parsed to generate $parserOutput
- $popts: ParserOptions used for generating $parserOutput
- $revId: ID of the revision that was parsed to create $parserOutput
- 'ParserClearState': Called at the end of Parser::clearState().
- &$parser: Parser object being cleared
- 'ParserCloned': Called when the parser is cloned.
- $parser: Newly-cloned Parser object
- 'ParserFirstCallInit': Called when the parser initialises for the first time.
- &$parser: Parser object being cleared
- 'ParserGetVariableValueSwitch': Called when the parser need the value of a
- custom magic word
- &$parser: Parser object
- &$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.
- &$parser: Parser object
- &$time: actual time (timestamp)
- 'ParserGetVariableValueVarCache': use this to change the value of the variable
- cache or return false to not use it.
- &$parser: Parser object
- &$varCache: variable cache (array)
- 'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare and
- ParserLimitReportFormat instead.
- Called at the end of Parser:parse() when the parser will
- include comments about size of the text parsed.
- $parser: Parser object
- &$limitReport: text that will be included (without comment tags)
- 'ParserLimitReportFormat': Called for each row in the parser limit report that
- needs formatting. If nothing handles this hook, the default is to use "$key" to
- get the label, and "$key-value" or "$key-value-text"/"$key-value-html" to
- format the value.
- $key: Key for the limit report item (string)
- &$value: Value of the limit report item
- &$report: String onto which to append the data
- $isHTML: If true, $report is an HTML table with two columns; if false, it's
- text intended for display in a monospaced font.
- $localize: If false, $report should be output in English.
- 'ParserLimitReportPrepare': Called at the end of Parser:parse() when the parser
- will include comments about size of the text parsed. Hooks should use
- $output->setLimitReportData() to populate data. Functions for this hook should
- not use $wgLang; do that in ParserLimitReportFormat instead.
- $parser: Parser object
- $output: ParserOutput object
- 'ParserMakeImageParams': Called before the parser make an image link, use this
- to modify the parameters of the image.
- $title: title object representing the file
- $file: file object that will be used to create the image
- &$params: 2-D array of parameters
- $parser: Parser object that called the hook
- 'ParserSectionCreate': Called each time the parser creates a document section
- from wikitext. Use this to apply per-section modifications to HTML (like
- wrapping the section in a DIV). Caveat: DIVs are valid wikitext, and a DIV
- can begin in one section and end in another. Make sure your code can handle
- that case gracefully. See the EditSectionClearerLink extension for an example.
- $parser: the calling Parser instance
- $section: the section number, zero-based, but section 0 is usually empty
- &$sectionContent: ref to the content of the section. modify this.
- $showEditLinks: boolean describing whether this section has an edit link
- 'ParserTestGlobals': Allows to define globals for parser tests.
- &$globals: Array with all the globals which should be set for parser tests.
- The arrays keys serve as the globals names, its values are the globals values.
- 'ParserTestParser': Called when creating a new instance of Parser in
- tests/parser/parserTest.inc.
- &$parser: Parser object created
- 'ParserTestTables': Alter the list of tables to duplicate when parser tests are
- run. Use when page save hooks require the presence of custom tables to ensure
- that tests continue to run properly.
- &$tables: array of table names
- 'ParserOutputStashForEdit': Called when an edit stash parse finishes, before the output is cached.
- $page: the WikiPage of the candidate edit
- $content: the Content object of the candidate edit
- $output: the ParserOutput result of the candidate edit
- 'PasswordPoliciesForUser': Alter the effective password policy for a user.
- $user: User object whose policy you are modifying
- &$effectivePolicy: Array of policy statements that apply to this user
- $purpose: string indicating purpose of the check, one of 'login', 'create',
- or 'reset'
- 'PerformRetroactiveAutoblock': Called before a retroactive autoblock is applied
- to a user.
- $block: Block object (which is set to be autoblocking)
- &$blockIds: Array of block IDs of the autoblock
- 'PersonalUrls': Alter the user-specific navigation links (e.g. "my page,
- my talk page, my contributions" etc).
- &$personal_urls: Array of link specifiers (see SkinTemplate.php)
- &$title: Title object representing the current page
- $skin: SkinTemplate object providing context (e.g. to check if the user is
- logged in, etc.)
- 'PingLimiter': Allows extensions to override the results of User::pingLimiter().
- &$user: User performing the action
- $action: Action being performed
- &$result: Whether or not the action should be prevented
- Change $result and return false to give a definitive answer, otherwise
- the built-in rate limiting checks are used, if enabled.
- $incrBy: Amount to increment counter by
- 'PlaceNewSection': Override placement of new sections. Return false and put the
- merged text into $text to override the default behavior.
- $wikipage: WikiPage object
- $oldtext: the text of the article before editing
- $subject: subject of the new section
- &$text: text of the new section
- 'PostLoginRedirect': Modify the post login redirect behavior.
- Occurs after signing up or logging in, allows for interception of redirect.
- &$returnTo: The page name to return to, as a string
- &$returnToQuery: array of url parameters, mapping parameter names to values
- &$type: type of login redirect as string;
- error: display a return to link ignoring $wgRedirectOnLogin
- signup: display a return to link using $wgRedirectOnLogin if needed
- success: display a return to link using $wgRedirectOnLogin if needed
- successredirect: send an HTTP redirect using $wgRedirectOnLogin if needed
- 'PreferencesFormPreSave': Override preferences being saved
- $formData: array of user submitted data
- $form: PreferencesForm object, also a ContextSource
- $user: User object with preferences to be saved set
- &$result: boolean indicating success
- 'PreferencesGetLegend': Override the text used for the <legend> of a
- preferences section.
- $form: the PreferencesForm object. This is a ContextSource as well
- $key: the section name
- &$legend: the legend text. Defaults to wfMessage( "prefs-$key" )->text() but may
- be overridden
- 'PrefixSearchBackend': DEPRECATED! Override SearchEngine::completionSearchBackend instead.
- Override the title prefix search used for OpenSearch and
- AJAX search suggestions. Put results into &$results outparam and return false.
- $ns: array of int namespace keys to search in
- $search: search term (not guaranteed to be conveniently normalized)
- $limit: maximum number of results to return
- &$results: out param: array of page names (strings)
- $offset: number of results to offset from the beginning
- 'PrefixSearchExtractNamespace': Called if core was not able to extract a
- namespace from the search string so that extensions can attempt it.
- &$namespaces: array of int namespace keys to search in (change this if you can
- extract namespaces)
- &$search: search term (replace this with term without the namespace if you can
- extract one)
- 'PrefsEmailAudit': Called when user changes their email address.
- $user: User (object) changing his email address
- $oldaddr: old email address (string)
- $newaddr: new email address (string)
- '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 Page being (un)protected
- &$errorMsg: an html message string of an error or an array of message name and
- its parameters
- $reasonstr: a string describing the reason page protection level is altered
- 'ProtectionForm::showLogExtract': Called after the protection log extract is
- shown.
- $article: the page the form is shown for
- $out: OutputPage object
- 'RandomPageQuery': Lets you modify the query used by Special:Random to select
- random pages.
- &$tables: Database tables to be used in the query
- &$conds: Conditions to be applied in the query
- &$joinConds: Join conditions to be applied in the query
- 'RawPageViewBeforeOutput': Right before the text is blown out in action=raw.
- &$obj: RawAction object
- &$text: The text that's going to be the output
- 'RecentChange_save': Called at the end of RecentChange::save().
- &$recentChange: RecentChange object
- 'RedirectSpecialArticleRedirectParams': Lets you alter the set of parameter
- names such as "oldid" that are preserved when using redirecting special pages
- such as Special:MyPage and Special:MyTalk.
- &$redirectParams: An array of parameters preserved by redirecting special pages.
- 'RejectParserCacheValue': Return false to reject an otherwise usable
- cached value from the Parser cache. NOTE: CARELESS USE OF THIS HOOK CAN
- HAVE CATASTROPHIC CONSEQUENCES FOR HIGH-TRAFFIC INSTALLATIONS. USE WITH
- EXTREME CARE.
- $parserOutput: ParserOutput value.
- $wikiPage: WikiPage object.
- $parserOptions: ParserOptions object.
- 'RequestContextCreateSkin': Called when RequestContext::getSkin creates a skin
- instance. Can be used by an extension override what skin is used in certain
- contexts.
- $context: (IContextSource) The RequestContext the skin is being created for.
- &$skin: A variable reference you may set a Skin instance or string key on to
- override the skin that will be used for the context.
- 'RequestHasSameOriginSecurity': Called to determine if the request is somehow
- flagged to lack same-origin security. Return false to indicate the lack. Note
- if the "somehow" involves HTTP headers, you'll probably need to make sure
- the header is varied on.
- $request: The WebRequest object.
- 'ResetPasswordExpiration': Allow extensions to set a default password expiration
- $user: The user having their password expiration reset
- &$newExpire: The new expiration date
- 'ResourceLoaderForeignApiModules': Called from ResourceLoaderForeignApiModule.
- Use this to add dependencies to 'mediawiki.ForeignApi' module when you wish
- to override its behavior. See the module docs for more information.
- &$dependencies: string[] List of modules that 'mediawiki.ForeignApi' should
- depend on
- $context: ResourceLoaderContext|null
- 'ResourceLoaderGetConfigVars': Called at the end of
- ResourceLoaderStartUpModule::getConfigSettings(). Use this to export static
- configuration variables to JavaScript. Things that depend on the current page
- or request state must be added through MakeGlobalVariablesScript instead.
- &$vars: array( variable name => value )
- 'ResourceLoaderGetLessVars': Called in ResourceLoader::getLessVars after
- variables from $wgResourceLoaderLESSVars are added. Can be used to add
- context-based variables.
- &$lessVars: array of variables already added
- 'ResourceLoaderRegisterModules': Right before modules information is required,
- such as when responding to a resource
- loader request or generating HTML output.
- &$resourceLoader: ResourceLoader object
- 'ResourceLoaderTestModules': Let you add new JavaScript testing modules. This is
- called after the addition of 'qunit' and MediaWiki testing resources.
- &$testModules: array of JavaScript testing modules. The 'qunit' framework,
- included in core, is fed using tests/qunit/QUnitTestResources.php.
- To add a new qunit module named 'myext.tests':
- $testModules['qunit']['myext.tests'] = array(
- 'script' => 'extension/myext/tests.js',
- 'dependencies' => <any module dependency you might have>
- );
- For QUnit framework, the mediawiki.tests.qunit.testrunner dependency will be
- added to any module.
- &$ResourceLoader: object
- 'RevisionInsertComplete': Called after a revision is inserted into the database.
- &$revision: the Revision
- $data: the data stored in old_text. The meaning depends on $flags: if external
- is set, it's the URL of the revision text in external storage; otherwise,
- it's the revision text itself. In either case, if gzip is set, the revision
- text is gzipped.
- $flags: a comma-delimited list of strings representing the options used. May
- include: utf8 (this will always be set for new revisions); gzip; external.
- 'SearchableNamespaces': An option to modify which namespaces are searchable.
- &$arr: Array of namespaces ($nsId => $name) which will be used.
- 'SearchAfterNoDirectMatch': If there was no match for the exact result. This
- runs before lettercase variants are attempted, whereas 'SearchGetNearMatch'
- runs after.
- $term: Search term string
- &$title: Outparam; set to $title object and return false for a match
- 'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches
- if nothing was found.
- $term: Search term string
- &$title: Outparam; set to $title object and return false for a match
- 'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before
- the normal operations.
- $allSearchTerms: Array of the search terms in all content languages
- &$titleResult: Outparam; the value to return. A Title object or null.
- 'SearchGetNearMatchComplete': A chance to modify exact-title-matches in "go"
- searches.
- $term: Search term string
- &$title: Current Title object that is being returned (null if none found).
- 'SearchResultInitFromTitle': Set the revision used when displaying a page in
- search results.
- $title: Current Title object being displayed in search results.
- &$id: Revision ID (default is false, for latest)
- 'SecondaryDataUpdates': Allows modification of the list of DataUpdates to
- perform when page content is modified. Currently called by
- AbstractContent::getSecondaryDataUpdates.
- $title: Title of the page that is being edited.
- $oldContent: Content object representing the page's content before the edit.
- $recursive: bool indicating whether DataUpdates should trigger recursive
- updates (relevant mostly for LinksUpdate).
- $parserOutput: ParserOutput representing the rendered version of the page
- after the edit.
- &$updates: a list of DataUpdate objects, to be modified or replaced by
- the hook handler.
- 'SecuritySensitiveOperationStatus': Affect the return value from
- MediaWiki\Auth\AuthManager::securitySensitiveOperationStatus().
- &$status: (string) The status to be returned. One of the AuthManager::SEC_*
- constants. SEC_REAUTH will be automatically changed to SEC_FAIL if
- authentication isn't possible for the current session type.
- $operation: (string) The operation being checked.
- $session: (MediaWiki\Session\Session) The current session. The
- currently-authenticated user may be retrieved as $session->getUser().
- $timeSinceAuth: (int) The time since last authentication. PHP_INT_MAX if
- the time of last auth is unknown, or -1 if authentication is not possible.
- 'SelfLinkBegin': Called before a link to the current article is displayed to
- allow the display of the link to be customized.
- $nt: the Title object
- &$html: html to display for the link
- &$trail: optional text to display before $html
- &$prefix: optional text to display after $html
- &$ret: the value to return if your hook returns false
- 'SendWatchlistEmailNotification': Return true to send watchlist email
- notification
- $targetUser: the user whom to send watchlist email notification
- $title: the page title
- $enotif: EmailNotification object
- 'SessionCheckInfo': Validate a MediaWiki\Session\SessionInfo as it's being
- loaded from storage. Return false to prevent it from being used.
- &$reason: String rejection reason to be logged
- $info: MediaWiki\Session\SessionInfo being validated
- $request: WebRequest being loaded from
- $metadata: Array|false Metadata array for the MediaWiki\Session\Session
- $data: Array|false Data array for the MediaWiki\Session\Session
- 'SessionMetadata': Add metadata to a session being saved.
- $backend: MediaWiki\Session\SessionBackend being saved.
- &$metadata: Array Metadata to be stored. Add new keys here.
- $requests: Array of WebRequests potentially being saved to. Generally 0-1 real
- request and 0+ FauxRequests.
- 'SetupAfterCache': Called in Setup.php, after cache objects are set
- 'ShortPagesQuery': Allow extensions to modify the query used by
- Special:ShortPages.
- &$tables: tables to join in the query
- &$conds: conditions for the query
- &$joinConds: join conditions for the query
- &$options: options for the query
- 'ShowMissingArticle': Called when generating the output for a non-existent page.
- $article: The article object corresponding to the page
- 'ShowRawCssJs': DEPRECATED! Use the ContentGetParserOutput hook instead.
- 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
- 'ShowSearchHit': Customize display of search hit.
- $searchPage: The SpecialSearch instance.
- $result: The SearchResult to show
- $terms: Search terms, for highlighting
- &$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.
- &$extract: HTML of content extract. May be modified.
- &$score: HTML of score. May be modified.
- &$size: HTML of page size. May be modified.
- &$date: HTML of of page modification date. May be modified.
- &$related: HTML of additional info for the matching page. May be modified.
- &$html: May be set to the full HTML that should be used to represent the search
- hit. Must include the <li> ... </li> tags. Will only be used if the hook
- function returned false.
- '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
- &$query: Query string to be appended to the link
- 'SidebarBeforeOutput': Allows to edit sidebar just before it is output by skins.
- Warning: This hook is run on each display. You should consider to use
- 'SkinBuildSidebar' that is aggressively cached.
- $skin: Skin object
- &$bar: Sidebar content
- Modify $bar to add or modify sidebar portlets.
- 'SiteNoticeAfter': After the sitenotice/anonnotice is composed.
- &$siteNotice: HTML sitenotice. Alter the contents of $siteNotice to add to/alter
- the sitenotice/anonnotice.
- $skin: Skin object
- 'SiteNoticeBefore': Before the sitenotice/anonnotice is composed. 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.
- &$siteNotice: HTML returned as the sitenotice
- $skin: Skin object
- 'SkinAfterBottomScripts': At the end of Skin::bottomScripts().
- $skin: Skin object
- &$text: bottomScripts Text. 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. This hook should work in all skins. Set the &$data variable to
- the text you're going to add.
- &$data: (string) Text to be printed out directly (without parsing)
- $skin: Skin object
- 'SkinBuildSidebar': At the end of Skin::buildSidebar().
- $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
- &$forContent: DEPRECATED! overridable flag if copyright footer is shown in
- content language.
- 'SkinEditSectionLinks': Modify the section edit links
- $skin: Skin object rendering the UI
- $title: Title object for the title being linked to (may not be the same as
- the page title, if the section is included from a template)
- $section: The designation of the section being pointed to, to be included in
- the link, like "§ion=$section"
- $tooltip: The default tooltip. Escape before using.
- By default, this is wrapped in the 'editsectionhint' message.
- &$result: Array containing all link detail arrays. Each link detail array should
- contain the following keys:
- - targetTitle - Target Title object
- - text - String for the text
- - attribs - Array of attributes
- - query - Array of query parameters to add to the URL
- - options - Array of options for Linker::link
- $lang: The language code to use for the link in the wfMessage function
- 'SkinGetPoweredBy': TODO
- &$text: additional 'powered by' icons in HTML. Note: Modern skin does not use
- the MediaWiki icon but plain text instead.
- $skin: Skin object
- 'SkinPreloadExistence': Supply titles that should be added to link existence
- cache before the page is rendered.
- &$titles: Array of Title objects
- $skin: Skin object
- 'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle().
- 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.
- &$subpages: Subpage links HTML
- $skin: Skin object
- $out: OutputPage object
- 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': After creating the "permanent
- link" tab.
- &$sktemplate: SkinTemplate object
- &$nav_urls: array of tabs
- &$revid: The revision id of the permanent link
- &$revid2: The revision id of the permanent link, second time
- 'SkinTemplateGetLanguageLink': After building the data for a language link from
- which the actual html is constructed.
- &$languageLink: array containing data about the link. The following keys can be
- modified: href, text, title, class, lang, hreflang. Each of them is a string.
- $languageLinkTitle: Title object belonging to the external language link.
- $title: Title object of the page the link belongs to.
- $outputPage: The OutputPage object the links are built from.
- 'SkinTemplateNavigation': Called on content pages after the tabs have been
- added, but before 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.
- 'SkinTemplateNavigation::SpecialPage': Called on special pages after the special
- tab is added but before 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.
- '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.
- 'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage() starts
- page output.
- &$sktemplate: SkinTemplate object
- &$tpl: QuickTemplate engine object
- 'SkinTemplatePreventOtherActiveTabs': Use this to prevent showing active tabs.
- &$sktemplate: SkinTemplate object
- &$res: set to true to prevent active tabs
- 'SkinTemplateTabAction': Override SkinTemplate::tabAction().
- You can either create your own array, or alter the parameters for
- the normal one.
- &$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.
- 'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have
- been rendered (useful for adding more).
- &$sk: The QuickTemplate based skin template running the hook.
- $dummy: Called when SkinTemplateToolboxEnd is used from a BaseTemplate skin,
- extensions that add support for BaseTemplateToolbox should watch for this
- dummy parameter with "$dummy=false" in their code and return without echoing
- any HTML to avoid creating duplicate toolbox items.
- 'SoftwareInfo': Called by Special:Version for returning information about the
- software.
- &$software: The array of software in format 'name' => 'version'. See
- SpecialVersion::softwareInformation().
- 'SpecialBlockModifyFormFields': Add more fields to Special:Block
- $sp: SpecialPage object, for context
- &$fields: Current HTMLForm fields
- 'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
- $id: User id number, only provided for backwards-compatibility
- $user: User object representing user contributions are being fetched for
- $sp: SpecialPage instance, providing context
- '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
- 'SpecialListusersDefaultQuery': Called right before the end of
- UsersPager::getDefaultQuery().
- $pager: The UsersPager instance
- &$query: The query array to be returned
- 'SpecialListusersFormatRow': Called right before the end of
- UsersPager::formatRow().
- &$item: HTML to be returned. Will be wrapped in <li></li> after the hook finishes
- $row: Database row object
- 'SpecialListusersHeader': Called before closing the <fieldset> in
- UsersPager::getPageHeader().
- $pager: The UsersPager instance
- &$out: The header HTML
- 'SpecialListusersHeaderForm': Called before adding the submit button in
- UsersPager::getPageHeader().
- $pager: The UsersPager instance
- &$out: The header HTML
- 'SpecialListusersQueryInfo': Called right before the end of.
- UsersPager::getQueryInfo()
- $pager: The UsersPager instance
- &$query: The query array to be returned
- 'SpecialLogAddLogSearchRelations': Add log relations to the current log
- $type: String of the log type
- $request: WebRequest object for getting the value provided by the current user
- &$qc: Array for query conditions to add
- 'SpecialMovepageAfterMove': Called after moving a page.
- &$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
- &$tables: array of tables to be queried
- &$fields: array of columns to select
- &$join_conds: join conditions for the tables
- 'SpecialNewPagesFilters': Called after building form options at NewPages.
- $special: the special page object
- &$filters: associative array of filter definitions. The keys are the HTML
- name/URL parameters. Each key maps to an associative array with a 'msg'
- (message key) and a 'default' value.
- 'SpecialPage_initList': Called when setting up SpecialPageFactory::$list, use
- this hook to remove a core special page or conditionally register special pages.
- &$list: list (array) of core special pages
- 'SpecialPageAfterExecute': Called after SpecialPage::execute.
- $special: the SpecialPage object
- $subPage: the subpage string or null if no subpage was specified
- 'SpecialPageBeforeExecute': Called before SpecialPage::execute.
- Return false to prevent execution.
- $special: the SpecialPage object
- $subPage: the subpage string or null if no subpage was specified
- 'SpecialPageBeforeFormDisplay': Before executing the HTMLForm object.
- $name: name of the special page
- &$form: HTMLForm object
- 'SpecialPasswordResetOnSubmit': When executing a form submission on
- Special:PasswordReset.
- &$users: array of User objects.
- $data: array of data submitted by the user
- &$error: string, error code (message key) used to describe to error (out
- parameter). The hook needs to return false when setting this, otherwise it
- will have no effect.
- '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
- 'SpecialRecentChangesFilters': DEPRECATED! Use ChangesListSpecialPageFilters
- instead.
- Called after building form options at RecentChanges.
- $special: the special page object
- &$filters: associative array of filter definitions. The keys are the HTML
- name/URL parameters. Each key maps to an associative array with a 'msg'
- (message key) and a 'default' value.
- 'SpecialRecentChangesPanel': Called when building form options in
- SpecialRecentChanges.
- &$extraOpts: array of added items, to which can be added
- $opts: FormOptions for this request
- 'SpecialRecentChangesQuery': DEPRECATED! Use ChangesListSpecialPageQuery
- instead.
- Called when building SQL query for 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: Array of columns to select
- 'SpecialResetTokensTokens': Called when building token list for
- SpecialResetTokens.
- &$tokens: array of token information arrays in the format of
- array(
- 'preference' => '<preference-name>',
- 'label-message' => '<message-key>',
- )
- 'SpecialSearchCreateLink': Called when making the message to create a page or
- go to the existing page.
- $t: title object searched for
- &$params: an array of the default message name and page title (as parameter)
- 'SpecialSearchGoResult': If a hook returns false the 'go' feature will be
- canceled and a normal search will be performed. Returning true without setting
- $url does a standard redirect to $title. Setting $url redirects to the
- specified URL.
- $term - The string the user searched for
- $title - The title the 'go' feature has decided to forward the user to
- &$url - Initially null, hook subscribers can set this to specify the final url to redirect to
- 'SpecialSearchNogomatch': Called when user clicked the "Go" button but the
- target doesn't exist.
- &$title: title object generated from the text entered by the user
- 'SpecialSearchPowerBox': The equivalent of SpecialSearchProfileForm for
- the advanced form, a.k.a. power search box.
- &$showSections: an array to add values with more options to
- $term: the search term (not a title object)
- $opts: an array of hidden options (containing 'redirs' and 'profile')
- '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
- 'SpecialSearchProfiles': Allows modification of search profiles.
- &$profiles: profiles, which can be modified.
- 'SpecialSearchResults': Called before search result display
- $term: string of search term
- &$titleMatches: empty or SearchResultSet object
- &$textMatches: empty or SearchResultSet object
- 'SpecialSearchResultsPrepend': Called immediately before returning HTML
- on the search results page. Useful for including an external search
- provider. To disable the output of MediaWiki search output, return
- false.
- $specialSearch: SpecialSearch object ($this)
- $output: $wgOut
- $term: Search term specified by the user
- 'SpecialSearchResultsAppend': Called immediately before returning HTML
- on the search results page. Useful for including a feedback link.
- $specialSearch: SpecialSearch object ($this)
- $output: $wgOut
- $term: Search term specified by the user
- 'SpecialSearchSetupEngine': Allows passing custom data to search engine.
- $search: SpecialSearch special page object
- $profile: String: current search profile
- $engine: the search engine
- 'SpecialStatsAddExtra': Add extra statistic at the end of Special:Statistics.
- &$extraStats: Array to save the new stats
- $extraStats['<name of statistic>'] => <value>;
- <value> can be an array with the keys "name" and "number":
- "name" is the HTML to be displayed in the name column
- "number" is the number to be displayed.
- or, <value> can be the number to be displayed and <name> is the
- message key to use in the name column,
- $context: IContextSource object
- 'SpecialUploadComplete': Called after successfully uploading a file from
- Special:Upload.
- &$form: The SpecialUpload object
- 'SpecialVersionVersionUrl': Called when building the URL for Special:Version.
- $wgVersion: Current $wgVersion for you to use
- &$versionUrl: Raw url to link to (eg: release notes)
- 'SpecialWatchlistFilters': DEPRECATED! Use ChangesListSpecialPageFilters
- instead.
- Called after building form options at Watchlist.
- $special: the special page object
- &$filters: associative array of filter definitions. The keys are the HTML
- name/URL parameters. Each key maps to an associative array with a 'msg'
- (message key) and a 'default' value.
- 'SpecialWatchlistGetNonRevisionTypes': Called when building sql query for
- SpecialWatchlist. Allows extensions to register custom values they have
- inserted to rc_type so they can be returned as part of the watchlist.
- &$nonRevisionTypes: array of values in the rc_type field of recentchanges table
- 'SpecialWatchlistQuery': DEPRECATED! Use ChangesListSpecialPageQuery instead.
- Called when building sql query for SpecialWatchlist.
- &$conds: array of WHERE conditionals for query
- &$tables: array of tables to be queried
- &$join_conds: join conditions for the tables
- &$fields: array of query fields
- $opts: A FormOptions object with watchlist options for the current request
- 'TestCanonicalRedirect': Called when about to force a redirect to a canonical
- URL for a title when we have no other parameters on the URL. Gives a chance for
- extensions that alter page view behavior radically to abort that redirect or
- handle it manually.
- $request: WebRequest
- $title: Title of the currently found title obj
- $output: OutputPage object
- 'ThumbnailBeforeProduceHTML': Called before an image HTML is about to be
- rendered (by ThumbnailImage:toHtml method).
- $thumbnail: the ThumbnailImage object
- &$attribs: image attribute array
- &$linkAttribs: image link attribute array
- 'TitleArrayFromResult': Called when creating an TitleArray object from a
- database result.
- &$titleArray: set this to an object to override the default object returned
- $res: database result used to create the object
- 'TitleExists': Called when determining whether a page exists at a given title.
- $title: The title being tested.
- &$exists: Whether the title exists.
- 'TitleGetEditNotices': Allows extensions to add edit notices
- $title: The Title object for the page the edit notices are for
- $oldid: Revision ID that the edit notices are for (or 0 for latest)
- &$notices: Array of notices. Keys are i18n message keys, values are
- parseAsBlock()ed messages.
- 'TitleGetRestrictionTypes': Allows extensions to modify the types of protection
- that can be applied.
- $title: The title in question.
- &$types: The types of protection available.
- 'TitleIsAlwaysKnown': Called when determining if a page exists. Allows
- overriding default behavior for determining if a page exists. If $isKnown is
- kept as null, regular checks happen. If it's a boolean, this value is returned
- by the isKnown method.
- $title: Title object that is being checked
- &$isKnown: Boolean|null; whether MediaWiki currently thinks this page is known
- 'TitleIsCssOrJsPage': DEPRECATED! Use ContentHandlerDefaultModelFor instead.
- Called when determining if a page is a CSS or JS page.
- $title: Title object that is being checked
- &$result: Boolean; whether MediaWiki currently thinks this is a CSS/JS page.
- Hooks may change this value to override the return value of
- Title::isCssOrJsPage().
- 'TitleIsMovable': Called when determining if it is possible to move a page. Note
- that this hook is not called for interwiki pages or pages in immovable
- namespaces: for these, isMovable() always returns false.
- $title: Title object that is being checked
- &$result: Boolean; whether MediaWiki currently thinks this page is movable.
- Hooks may change this value to override the return value of
- Title::isMovable().
- 'TitleIsWikitextPage': DEPRECATED! Use ContentHandlerDefaultModelFor instead.
- Called when determining if a page is a wikitext or should
- be handled by separate handler (via ArticleViewCustom).
- $title: Title object that is being checked
- &$result: Boolean; whether MediaWiki currently thinks this is a wikitext page.
- Hooks may change this value to override the return value of
- Title::isWikitextPage()
- 'TitleMove': Before moving an article (title).
- $old: old title
- $nt: new title
- $user: user who does the move
- 'TitleMoveStarting': Before moving an article (title), but just after the atomic DB section starts.
- $old: old title
- $nt: new title
- $user: user who does the move
- 'TitleMoveComplete': After moving an article (title), post-commit.
- &$old: old title
- &$nt: new title
- &$user: user who did the move
- $pageid: database ID of the page that's been moved
- $redirid: database ID of the created redirect
- $reason: reason for the move
- $revision: the Revision created by the move
- 'TitleMoveCompleting': After moving an article (title), pre-commit.
- $old: old title
- $nt: new title
- $user: user who did the move
- $pageid: database ID of the page that's been moved
- $redirid: database ID of the created redirect
- $reason: reason for the move
- $revision: the Revision created by the move
- 'TitleQuickPermissions': Called from Title::checkQuickPermissions to add to
- or override the quick permissions check.
- $title: The Title object being accessed
- $user: The User performing the action
- $action: Action being performed
- &$errors: Array of errors
- $doExpensiveQueries: Whether to do expensive DB queries
- $short: Whether to return immediately on first error
- 'TitleReadWhitelist': Called at the end of read permissions checks, just before
- adding the default error message if nothing allows the user to read the page. If
- a handler wants a title to *not* be whitelisted, it should also return false.
- $title: Title object being checked against
- $user: Current user object
- &$whitelisted: Boolean value of whether this title is whitelisted
- 'TitleSquidURLs': Called to determine which URLs to purge from HTTP caches.
- $title: Title object to purge
- &$urls: An array of URLs to purge from the caches, to be manipulated.
- 'UndeleteForm::showHistory': Called in UndeleteForm::showHistory, after a
- PageArchive object has been created but before any further processing is done.
- &$archive: PageArchive object
- $title: Title object of the page that we're viewing
- 'UndeleteForm::showRevision': Called in UndeleteForm::showRevision, after a
- PageArchive object has been created but before any further processing is done.
- &$archive: PageArchive object
- $title: Title object of the page that we're viewing
- 'UndeleteForm::undelete': Called un UndeleteForm::undelete, after checking that
- the site is not in read-only mode, that the Title object is not null and after
- a PageArchive object has been constructed but before performing any further
- processing.
- &$archive: PageArchive object
- $title: Title object of the page that we're about to undelete
- 'UndeleteShowRevision': Called when showing a revision in Special:Undelete.
- $title: title object related to the revision
- $rev: revision (object) that will be viewed
- 'UnitTestsList': Called when building a list of paths containing PHPUnit tests.
- Since 1.24: Paths pointing to a directory will be recursively scanned for
- test case files matching the suffix "Test.php".
- &$paths: list of test cases and directories to search.
- 'UnknownAction': An unknown "action" has occurred (useful for defining your own
- actions).
- $action: action name
- $article: article "acted on"
- 'UnwatchArticle': Before a watch is removed from an article.
- &$user: user watching
- &$page: WikiPage object to be removed
- &$status: Status object to be returned if the hook returns false
- 'UnwatchArticleComplete': After a watch is removed from an article.
- $user: user that watched
- &$page: WikiPage object that was watched
- 'UpdateUserMailerFormattedPageStatus': Before notification email gets sent.
- &$formattedPageStatus: list of valid page states
- 'UploadComplete': Upon completion of a file upload.
- &$uploadBase: UploadBase (or subclass) object. File can be accessed by
- $uploadBase->getLocalFile().
- 'UploadCreateFromRequest': When UploadBase::createFromRequest has been called.
- $type: (string) the requested upload type
- &$className: the class name of the Upload instance to be created
- 'UploadForm:BeforeProcessing': At the beginning of processUpload(). 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.
- &$form: UploadForm object
- 'UploadForm:initial': Before the upload form is generated. You might set the
- member-variables $uploadFormTextTop and $uploadFormTextAfterSummary to inject
- text (HTML) either before or after the editform.
- &$form: UploadForm object
- 'UploadFormInitDescriptor': After the descriptor for the upload form as been
- assembled.
- &$descriptor: (array) the HTMLForm descriptor
- 'UploadFormSourceDescriptors': after the standard source inputs have been
- added to the descriptor
- &$descriptor: (array) the HTMLForm descriptor
- &$radio: Boolean, if source type should be shown as radio button
- $selectedSourceType: The selected source type
- 'UploadVerification': Additional chances to reject an uploaded file. Consider
- using UploadVerifyFile instead.
- $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
- $mime: (string) The uploaded file's MIME type, as detected by MediaWiki.
- Handlers will typically only apply for specific MIME types.
- &$error: (object) 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.
- 'User::mailPasswordInternal': before creation and mailing of a user's new
- temporary password
- &$user: the user who sent the message out
- &$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
- $res: database result used to create the object
- 'userCan': To interrupt/advise the "user can do X to Y article" check. If you
- want to display an error message, try getUserPermissionsErrors.
- &$title: Title object being checked against
- &$user: Current user object
- $action: Action being checked
- &$result: Pointer to result returned if hook returns false. If null is returned,
- userCan checks are continued by internal code.
- 'UserCanSendEmail': To override User::canSendEmail() permission check.
- &$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 will clear the message
- $oldid: ID of the talk page revision being viewed (0 means the most recent one)
- 'UserCreateForm': DEPRECATED! Create an AuthenticationProvider instead.
- Manipulate the login form.
- &$template: SimpleTemplate instance for the form
- 'UserEffectiveGroups': Called in User::getEffectiveGroups().
- &$user: User to get groups for
- &$groups: Current effective groups
- 'UserGetAllRights': After calculating a list of all available rights.
- &$rights: Array of rights, which may be added to.
- 'UserGetDefaultOptions': After fetching the core default, this hook is run right
- before returning the options to the caller. Warning: This hook is called for
- every call to User::getDefaultOptions(), which means it's potentially called
- dozens or hundreds of times. You may want to cache the results of non-trivial
- operations in your hook function for this reason.
- &$defaultOptions: Array of preference keys and their default values.
- 'UserGetEmail': Called when getting an user email address.
- $user: User object
- &$email: email, change this to override local email
- 'UserGetEmailAuthenticationTimestamp': Called when getting the timestamp of
- email authentication.
- $user: User object
- &$timestamp: timestamp, change this to override local email authentication
- timestamp
- 'UserGetImplicitGroups': DEPRECATED!
- Called in User::getImplicitGroups().
- &$groups: List of implicit (automatically-assigned) groups
- 'UserGetLanguageObject': Called when getting user's interface language object.
- $user: User object
- &$code: Language code that will be used to create the object
- $context: IContextSource object
- 'UserGetReservedNames': Allows to modify $wgReservedUsernames at run time.
- &$reservedUsernames: $wgReservedUsernames
- 'UserGetRights': Called in User::getRights().
- $user: User to get rights for
- &$rights: Current rights
- 'UserGroupsChanged': Called after user groups are changed.
- $user: User whose groups changed
- $added: Groups added
- $removed: Groups removed
- $performer: User who performed the change, false if via autopromotion
- $reason: The reason, if any, given by the user performing the change,
- false if via autopromotion.
- '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
- &$blocked: Whether the user is blocked, to be modified by the hook
- &$block: The Block object, to be modified by the hook
- 'UserIsEveryoneAllowed': Check if all users are allowed some user right; return
- 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().
- $user: User in question.
- &$hidden: Set true if the user's name should be hidden.
- 'UserIsLocked': Check if the user is locked. See User::isLocked().
- $user: User in question.
- &$locked: Set true if the user should be locked.
- 'UserLoadAfterLoadFromSession': Called to authenticate users on external or
- environmental means; occurs after session is loaded.
- $user: user object being loaded
- 'UserLoadDefaults': Called when loading a default user.
- $user: user object
- $name: user name
- 'UserLoadFromDatabase': Called when loading a user from the database.
- $user: user object
- &$s: database query object
- 'UserLoadFromSession': DEPRECATED! Create a MediaWiki\Session\SessionProvider instead.
- Called to authenticate users on external/environmental means; occurs before
- session is loaded.
- $user: user object being loaded
- &$result: set this to a boolean value to abort the normal authentication
- process
- 'UserLoadOptions': When user options/preferences are being loaded from the
- database.
- $user: User object
- &$options: Options, can be modified.
- 'UserLoggedIn': Called after a user is logged in
- $user: User object for the logged-in user
- 'UserLoginComplete': Show custom content after a user has logged in via the web interface.
- For functionality that needs to run after any login (API or web) use UserLoggedIn.
- &$user: the user object that was created on login
- &$inject_html: Any HTML to inject after the "logged in" message.
- 'UserLoginForm': DEPRECATED! Create an AuthenticationProvider instead.
- Manipulate the login form.
- &$template: QuickTemplate instance for the form
- '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.
- $oldName: name of the user before logout (string)
- 'UserMailerChangeReturnPath': Called to generate a VERP return address
- when UserMailer sends an email, with a bounce handling extension.
- $to: Array of MailAddress objects for the recipients
- &$returnPath: The return address string
- 'UserMailerSplitTo': Called in UserMailer::send() to give extensions a chance
- to split up an email with multiple the To: field into separate emails.
- &$to: array of MailAddress objects; unset the ones which should be mailed separately
- 'UserMailerTransformContent': Called in UserMailer::send() to change email contents.
- Extensions can block sending the email by returning false and setting $error.
- $to: array of MailAdresses of the targets
- $from: MailAddress of the sender
- &$body: email body, either a string (for plaintext emails) or an array with 'text' and 'html' keys
- &$error: should be set to an error message string
- 'UserMailerTransformMessage': Called in UserMailer::send() to change email after it has gone through
- the MIME transform. Extensions can block sending the email by returning false and setting $error.
- $to: array of MailAdresses of the targets
- $from: MailAddress of the sender
- &$subject: email subject (not MIME encoded)
- &$headers: email headers (except To: and Subject:) as an array of header name => value pairs
- &$body: email body (in MIME format) as a string
- &$error: should be set to an error message 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
- 'UserRequiresHTTPS': Called to determine whether a user needs
- to be switched to HTTPS.
- $user: User in question.
- &$https: Boolean whether $user should be switched to HTTPS.
- 'UserResetAllOptions': Called in User::resetOptions() when user preferences
- have been requested to be reset. This hook can be used to exclude certain
- options from being reset even when the user has requested all prefs to be reset,
- because certain options might be stored in the user_properties database table
- despite not being visible and editable via Special:Preferences.
- $user: the User (object) whose preferences are being reset
- &$newOptions: array of new (site default) preferences
- $options: array of the user's old preferences
- $resetKinds: array containing the kinds of preferences to reset
- 'UserRetrieveNewTalks': Called when retrieving "You have new messages!"
- message(s).
- &$user: user retrieving new talks messages
- &$talks: array of new talks page(s)
- 'UserRights': DEPRECATED! Use UserGroupsChanged instead.
- After a user's group memberships are changed.
- &$user: User object that was changed
- $add: Array of strings corresponding to groups added
- $remove: Array of strings corresponding to groups removed
- 'UserSaveOptions': Called just before saving user preferences/options.
- $user: User object
- &$options: Options, modifiable
- 'UserSaveSettings': Called when saving user settings.
- $user: User object
- 'UserSetCookies': DEPRECATED! If you're trying to replace core session cookie
- handling, you want to create a subclass of MediaWiki\Session\CookieSessionProvider
- instead. Otherwise, you can no longer count on user data being saved to cookies
- versus some other mechanism.
- Called when setting user cookies.
- $user: User object
- &$session: session array, will be added to the session
- &$cookies: cookies array mapping cookie name to its value
- 'UserSetEmail': Called when changing user email address.
- $user: User object
- &$email: new email, change this to override new email address
- 'UserSetEmailAuthenticationTimestamp': Called when setting the timestamp of
- email authentication.
- $user: User object
- &$timestamp: new timestamp, change this to override local email
- authentication timestamp
- 'UserToolLinksEdit': Called when generating a list of user tool links, e.g.
- "Foobar (Talk | Contribs | Block)".
- $userId: User id of the current user
- $userText: User name of the current user
- &$items: Array of user tool links as HTML fragments
- 'ValidateExtendedMetadataCache': Called to validate the cached metadata in
- FormatMetadata::getExtendedMeta (return false means cache will be
- invalidated and GetExtendedMetadata hook called again).
- $timestamp: The timestamp metadata was generated
- $file: The file the metadata is for
- 'WantedPages::getQueryInfo': Called in WantedPagesPage::getQueryInfo(), can be
- used to alter the SQL query which gets the list of wanted pages.
- &$wantedPages: WantedPagesPage object
- &$query: query array, see QueryPage::getQueryInfo() for format documentation
- 'WatchArticle': Before a watch is added to an article.
- &$user: user that will watch
- &$page: WikiPage object to be watched
- &$status: Status object to be returned if the hook returns false
- 'WatchArticleComplete': After a watch is added to an article.
- &$user: user that watched
- &$page: WikiPage object watched
- 'WatchlistEditorBeforeFormRender': Before building the Special:EditWatchlist
- form, used to manipulate the list of pages or preload data based on that list.
- &$watchlistInfo: array of watchlisted pages in
- [namespaceId => ['title1' => 1, 'title2' => 1]] format
- '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
- &$link: HTML link to title
- 'WebRequestPathInfoRouter': While building the PathRouter to parse the
- REQUEST_URI.
- $router: The PathRouter instance
- 'WebResponseSetCookie': when setting a cookie in WebResponse::setcookie().
- Return false to prevent setting of the cookie.
- &$name: Cookie name passed to WebResponse::setcookie()
- &$value: Cookie value passed to WebResponse::setcookie()
- &$expire: Cookie expiration, as for PHP's setcookie()
- &$options: Options passed to WebResponse::setcookie()
- 'wfShellWikiCmd': Called when generating a shell-escaped command line string to
- run a MediaWiki cli script.
- &$script: MediaWiki cli script path
- &$parameters: Array of arguments and options to the script
- &$options: Associative array of options, may contain the 'php' and 'wrapper'
- keys
- 'wgQueryPages': Called when initialising list of QueryPage subclasses, use this
- to add new query pages to be updated with maintenance/updateSpecialPages.php.
- &$qp: The list of QueryPages
- 'WhatLinksHereProps': Allows annotations to be added to WhatLinksHere
- $row: The DB row of the entry.
- $title: The Title of the page where the link comes FROM
- $target: The Title of the page where the link goes TO
- &$props: Array of HTML strings to display after the title.
- 'WikiExporter::dumpStableQuery': Get the SELECT query for "stable" revisions
- dumps. One, and only one hook should set this, and return false.
- &$tables: Database tables to use in the SELECT query
- &$opts: Options to use for the query
- &$join: Join conditions
- 'WikiPageDeletionUpdates': manipulate the list of DataUpdates to be applied when
- a page is deleted. Called in WikiPage::getDeletionUpdates(). Note that updates
- specific to a content model should be provided by the respective Content's
- getDeletionUpdates() method.
- $page: the WikiPage
- $content: the Content to generate updates for
- &$updates: the array of DataUpdate objects. Hook function may want to add to it.
- '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
- "php maintenance/findHooks.php" to find hidden ones.
|