123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083 |
- 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', [ &$article ] ) ) {
- # code to actually show the article goes here
- Hooks::run( 'ArticleShowComplete', [ &$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'][] = [ 'someFunction', $someData ];
- $wgHooks['EventName'][] = [ 'someFunction' ]; # weird, but OK
- $wgHooks['EventName'][] = $object; # object only
- $wgHooks['EventName'][] = [ $object, 'someMethod' ];
- $wgHooks['EventName'][] = [ $object, 'someMethod', $someData ];
- $wgHooks['EventName'][] = [ $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'][] = [ 'ircNotify', 'TimStarling' ];
- $wgHooks['PageContentSaveComplete'][] = [ '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'][] = [ '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 since 1.27! 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 since 1.27! 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 since 1.27! 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 since 1.27! 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)
- '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
- 'AncientPagesQuery': Allow extensions to modify the query used by
- Special:AncientPages.
- &$tables: tables to join in the query
- &$conds: conditions for the query
- &$joinConds: join conditions for the query
- '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 message to die with. Specific values accepted depend on the
- MediaWiki version:
- * 1.29+: IApiMessage, Message, string message key, or key+parameters array to
- pass to ApiBase::dieWithError().
- * 1.27+: IApiMessage, or a key or key+parameters in ApiBase::$messageMap.
- * Earlier: A key or key+parameters in ApiBase::$messageMap.
- 'ApiDeprecationHelp': Add messages to the 'deprecation-help' warning generated
- from ApiBase::addDeprecation().
- &$msgs: Message[] Messages to include in the help. Multiple messages will be
- joined with spaces.
- 'APIEditBeforeSave': DEPRECATED since 1.28! Use EditFilterMergedContent instead.
- Before saving a page with api.php?action=edit, after
- processing request parameters. Return false to let the request fail, returning
- an error message or an <edit result="Failure"> tag if $resultArr was filled.
- Unlike for example 'EditFilterMergedContent' this also being run on undo.
- Since MediaWiki 1.25, 'EditFilterMergedContent' can also return error details
- for the API and it's recommended to use it instead of this hook.
- $editPage: the EditPage object
- $text: the text passed to the API. Note that this includes only the single
- section for section edit, and is not necessarily the final text in case of
- automatically resolved edit conflicts.
- &$resultArr: data in this array will be added to the API result
- 'ApiFeedContributions::feedItem': Called to convert the result of ContribsPager
- into a FeedItem instance that ApiFeedContributions can consume. Implementors of
- this hook may cancel the hook to signal that the item is not viewable in the
- 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 since 1.25! 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 since 1.25! 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.
- 'ApiMakeParserOptions': Called from ApiParse and ApiExpandTemplates to allow
- extensions to adjust the ParserOptions before parsing.
- $options: ParserOptions object
- $title: Title to be parsed
- $params: Parameter array for the API module
- $module: API module (which is also a ContextSource)
- &$reset: Set to a ScopedCallback used to reset any hooks after the parse is done.
- &$suppressCache: Set true if cache should be suppressed.
- '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.
- 'ApiParseMakeOutputPage': Called when preparing the OutputPage object for
- ApiParse. This is mainly intended for calling OutputPage::addContentOverride()
- or OutputPage::addContentOverrideCallback().
- $module: ApiBase (which is also a ContextSource)
- $output: OutputPage
- '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
- 'ApiQueryBaseAfterQuery': Called for (some) API query modules after the
- database query has returned. An API query module wanting to use this hook
- should see the ApiQueryBase::select() and ApiQueryBase::processRow()
- documentation.
- $module: ApiQueryBase module in question
- $result: ResultWrapper|bool returned from the IDatabase::select()
- &$hookData: array that was passed to the 'ApiQueryBaseBeforeQuery' hook and
- will be passed to the 'ApiQueryBaseProcessRow' hook, intended for inter-hook
- communication.
- 'ApiQueryBaseBeforeQuery': Called for (some) API query modules before a
- database query is made. WARNING: It would be very easy to misuse this hook and
- break the module! Any joins added *must* join on a unique key of the target
- table unless you really know what you're doing. An API query module wanting to
- use this hook should see the ApiQueryBase::select() and
- ApiQueryBase::processRow() documentation.
- $module: ApiQueryBase module in question
- &$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
- &$hookData: array that will be passed to the 'ApiQueryBaseAfterQuery' and
- 'ApiQueryBaseProcessRow' hooks, intended for inter-hook communication.
- 'ApiQueryBaseProcessRow': Called for (some) API query modules as each row of
- the database result is processed. Return false to stop processing the result
- set. An API query module wanting to use this hook should see the
- ApiQueryBase::select() and ApiQueryBase::processRow() documentation.
- $module: ApiQueryBase module in question
- $row: stdClass Database result row
- &$data: array to be included in the ApiResult.
- &$hookData: array that was be passed to the 'ApiQueryBaseBeforeQuery' and
- 'ApiQueryBaseAfterQuery' hooks, intended for inter-hook communication.
- '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 since 1.24! 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: [ action => callback ]
- 'APIQueryRecentChangesTokens': DEPRECATED since 1.24! 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: [ action => callback ]
- 'APIQueryRevisionsTokens': DEPRECATED since 1.24! 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: [ 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: [ type => salt to pass to User::getEditToken(), or array of salt
- and key to pass to Session::getToken() ]
- 'APIQueryUsersTokens': DEPRECATED since 1.24! 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: [ action => callback ]
- 'ApiQueryWatchlistExtractOutputData': Extract row data for ApiQueryWatchlist.
- $module: ApiQueryWatchlist instance
- $watchedItem: WatchedItem instance
- $recentChangeInfo: Array of recent change info data
- &$vals: Associative array of data to be output for the row
- 'ApiQueryWatchlistPrepareWatchedItemQueryServiceOptions': Populate the options
- to be passed from ApiQueryWatchlist to WatchedItemQueryService.
- $module: ApiQueryWatchlist instance
- $params: Array of parameters, as would be returned by $module->extractRequestParams()
- &$options: Array of options for WatchedItemQueryService::getWatchedItemsWithRecentChangeInfo()
- '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 since 1.24! 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.
- 'ApiValidatePassword': Called from ApiValidatePassword.
- $module: ApiValidatePassword instance.
- &$r: Result array.
- '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
- 'ArticleAfterFetchContentObject': DEPRECATED since 1.32, use ArticleRevisionViewCustom
- to control output. 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
- 'ArticleRevisionViewCustom': Allows custom rendering of an article's content.
- Note that it is preferable to implement proper handing for a custom data type using
- the ContentHandler facility.
- $revision: content of the page, as a RevisionRecord object, or null if the revision
- could not be loaded. May also be a fake that wraps content supplied by an extension.
- $title: title of the page
- $oldid: the requested revision id, or 0 for the currrent revision.
- $output: a ParserOutput object
- 'ArticleContentViewCustom': DEPRECATED since 1.32, use ArticleRevisionViewCustom instead,
- or provide an appropriate ContentHandler. Allows to output the text of the article in a
- different format than wikitext.
- $content: content of the page, as a Content object
- $title: title of the page
- $output: a ParserOutput object
- '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 (or null, when deleting a broken page)
- $logEntry: the ManualLogEntry used to record the deletion
- $archivedRevisionCount: the number of revisions archived during 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)
- '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
- &$tables: tables (array) to load from the database
- &$joinConds: join conditions (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
- $visibilityChangeMap: Map of revision id to oldBits and newBits. This array can be
- examined to determine exactly what visibility bits have changed for each
- revision. This array is of the form
- [id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ]
- '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
- 'ArticleShowPatrolFooter': Called at the beginning of Article#showPatrolFooter.
- Extensions can use this to not show the [mark as patrolled] link in certain
- circumstances.
- $article: the Article object
- '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). This ID will be used
- for the restored page.
- $restoredPages: Set of page IDs that have revisions restored for this undelete,
- with keys being page IDs and values are 'true'.
- '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
- 'ArticleViewFooter': After showing the footer section of an ordinary page view
- $article: Article object
- $patrolFooterShown: boolean whether patrol footer is shown
- 'ArticleViewHeader': Control article output. Called 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 since 1.27! 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 since 1.27! 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)
- $priorBlock: the Block object for the prior block or null if there was none
- '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
- $id: the page ID (original ID in case of page deletions)
- '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 Wikimedia\Rdbms\IDatabase::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 since 1.27! Use AuthChangeFormFields or
- security levels. For extensions that need to add a field to the ChangePassword
- form via the Preferences form.
- &$extraFields: An array of arrays that hold fields like would be passed to the
- pretty function.
- 'ChangesListInitRows': Batch process change list rows prior to rendering.
- $changesList: ChangesList instance
- $rows: The data that will be rendered. May be a 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': DEPRECATED since 1.29! Use
- 'ChangesListSpecialPageStructuredFilters' instead.
- 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).
- Do not use this to implement individual filters if they are compatible with the
- ChangesListFilter and ChangesListFilterGroup structure.
- Instead, use sub-classes of those classes, in conjunction with the
- ChangesListSpecialPageStructuredFilters hook.
- This hook can be used to implement filters that do not implement that structure,
- or custom behavior that is not an individual filter.
- $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
- 'ChangesListSpecialPageStructuredFilters': Called to allow extensions to register
- filters for pages inheriting from ChangesListSpecialPage (in core: RecentChanges,
- RecentChangesLinked, and Watchlist). Generally, you will want to construct
- new ChangesListBooleanFilter or ChangesListStringOptionsFilter objects.
- When constructing them, you specify which group they belong to. You can reuse
- existing groups (accessed through $special->getFilterGroup), or create your own
- (ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup).
- If you create new groups, you must register them with $special->registerFilterGroup.
- Note that this is called regardless of whether the user is currently using
- the new (structured) or old (unstructured) filter UI. If you want your boolean
- filter to show on both the new and old UI, specify all the supported fields.
- These include showHide, label, and description.
- See the constructor of each ChangesList* class for documentation of supported
- fields.
- $special: ChangesListSpecialPage instance
- '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.
- 'ChangeTagsAfterUpdateTags': Called after tags have been updated with the
- ChangeTags::updateTags function. Params:
- $addedTags: tags effectively added in the update
- $removedTags: tags effectively removed in the update
- $prevTags: tags that were present prior to the update
- $rc_id: recentchanges table id
- $rev_id: revision table id
- $log_id: logging table id
- $params: tag params
- $rc: RecentChange being tagged when the tagging accompanies the action, or null
- $user: User who performed the tagging when the tagging is subsequent to the
- action, or null
- 'ChangeTagsAllowedAdd': Called when checking if a user can add tags to a change.
- &$allowedTags: List of all the tags the user is allowed to add. Any tags the
- user wants to add ($addTags) that are not in this array will cause it to fail.
- You may add or remove tags to this array as required.
- $addTags: List of tags user intends to add.
- $user: User who is adding the tags.
- 'ChangeUserGroups': Called before user groups are changed.
- $performer: The User who will perform the change
- $user: The User whose groups will be changed
- &$add: The groups that will be added
- &$remove: The groups that will be removed
- '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.
- Note: if your extension implements additional models via this hook, please
- use GetContentModels hook to make them known to core.
- $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>
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- 'ContributionsToolLinks': Change tool links above Special:Contributions
- $id: User identifier
- $title: User page title
- &$tools: Array of tool links
- $specialPage: SpecialPage instance for context and services. Can be either
- SpecialContributions or DeletedContributionsPage. Extensions should type
- hint against a generic SpecialPage though.
- '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.
- 'ContentSecurityPolicyDefaultSource': Modify the allowed CSP load sources. This
- affects all directives except for the script directive. If you want to add a
- script source, see ContentSecurityPolicyScriptSource hook.
- &$defaultSrc: Array of Content-Security-Policy allowed sources
- $policyConfig: Current configuration for the Content-Security-Policy header
- $mode: ContentSecurityPolicy::REPORT_ONLY_MODE or
- ContentSecurityPolicy::FULL_MODE depending on type of header
- 'ContentSecurityPolicyDirectives': Modify the content security policy
- directives. Use this only if ContentSecurityPolicyDefaultSource and
- ContentSecurityPolicyScriptSource do not meet your needs.
- &$directives: Array of CSP directives
- $policyConfig: Current configuration for the CSP header
- $mode: ContentSecurityPolicy::REPORT_ONLY_MODE or
- ContentSecurityPolicy::FULL_MODE depending on type of header
- 'ContentSecurityPolicyScriptSource': Modify the allowed CSP script sources.
- Note that you also have to use ContentSecurityPolicyDefaultSource if you
- want non-script sources to be loaded from
- whatever you add.
- &$scriptSrc: Array of CSP directives
- $policyConfig: Current configuration for the CSP header
- $mode: ContentSecurityPolicy::REPORT_ONLY_MODE or
- ContentSecurityPolicy::FULL_MODE depending on type of header
- '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>
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- 'DeleteUnknownPreferences': Called by the cleanupPreferences.php maintenance
- script to build a WHERE clause with which to delete preferences that are not
- known about. This hook is used by extensions that have dynamically-named
- preferences that should not be deleted in the usual cleanup process. For
- example, the Gadgets extension creates preferences prefixed with 'gadget-', and
- so anything with that prefix is excluded from the deletion.
- &where: An array that will be passed as the $cond parameter to
- IDatabase::select() to determine what will be deleted from the user_properties
- table.
- $db: The IDatabase object, useful for accessing $db->buildLike() etc.
- 'DifferenceEngineAfterLoadNewText': called in DifferenceEngine::loadNewText()
- after the new revision's content has been loaded into the class member variable
- $differenceEngine->mNewContent but before returning true from this function.
- $differenceEngine: DifferenceEngine object
- 'DifferenceEngineLoadTextAfterNewContentIsLoaded': called in
- DifferenceEngine::loadText() after the new revision's content has been loaded
- into the class member variable $differenceEngine->mNewContent but before
- checking if the variable's value is null.
- This hook can be used to inject content into said class member variable.
- $differenceEngine: DifferenceEngine object
- 'DifferenceEngineMarkPatrolledLink': Allows extensions to change the "mark as
- patrolled" link which is shown both on the diff header as well as on the bottom
- of a page, usually wrapped in a span element which has class="patrollink".
- $differenceEngine: DifferenceEngine object
- &$markAsPatrolledLink: The "mark as patrolled" link HTML (string)
- $rcid: Recent change ID (rc_id) for this change (int)
- 'DifferenceEngineMarkPatrolledRCID': Allows extensions to possibly change the
- rcid parameter. For example the rcid might be set to zero due to the user being
- the same as the performer of the change but an extension might still want to
- show it under certain conditions.
- &$rcid: rc_id (int) of the change or 0
- $differenceEngine: DifferenceEngine object
- $change: RecentChange object
- $user: User object representing the current user
- 'DifferenceEngineNewHeader': Allows extensions to change the $newHeader
- variable, which contains information about the new revision, such as the
- revision's author, whether the revision was marked as a minor edit or not, etc.
- $differenceEngine: DifferenceEngine object
- &$newHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
- include things like revision author info, revision comment, RevisionDelete
- link and more
- $formattedRevisionTools: Array containing revision tools, some of which may have
- been injected with the DiffRevisionTools hook
- $nextlink: String containing the link to the next revision (if any); also
- included in $newHeader
- $rollback: Rollback link (string) to roll this revision back to the previous
- one, if any
- $newminor: String indicating if the new revision was marked as a minor edit
- $diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
- whether we should show just the diff; passed in as a query string parameter to
- the various URLs constructed here (i.e. $nextlink)
- $rdel: RevisionDelete link for the new revision, if the current user is allowed
- to use the RevisionDelete feature
- $unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
- 'DifferenceEngineOldHeader': Allows extensions to change the $oldHeader
- variable, which contains information about the old revision, such as the
- revision's author, whether the revision was marked as a minor edit or not, etc.
- $differenceEngine: DifferenceEngine object
- &$oldHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
- include things like revision author info, revision comment, RevisionDelete
- link and more
- $prevlink: String containing the link to the previous revision (if any); also
- included in $oldHeader
- $oldminor: String indicating if the old revision was marked as a minor edit
- $diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
- whether we should show just the diff; passed in as a query string parameter to
- the various URLs constructed here (i.e. $prevlink)
- $ldel: RevisionDelete link for the old revision, if the current user is allowed
- to use the RevisionDelete feature
- $unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
- 'DifferenceEngineOldHeaderNoOldRev': Change the $oldHeader variable in cases
- when there is no old revision
- &$oldHeader: empty string by default
- 'DifferenceEngineRenderRevisionAddParserOutput': Allows extensions to change the
- parser output. Return false to not add parser output via OutputPage's
- addParserOutput method.
- $differenceEngine: DifferenceEngine object
- $out: OutputPage object
- $parserOutput: ParserOutput object
- $wikiPage: WikiPage object
- 'DifferenceEngineRenderRevisionShowFinalPatrolLink': An extension can hook into
- this hook point and return false to not show the final "mark as patrolled" link
- on the bottom of a page.
- This hook has no arguments.
- 'DifferenceEngineShowDiff': Allows extensions to affect the diff text which
- eventually gets sent to the OutputPage object.
- $differenceEngine: DifferenceEngine object
- 'DifferenceEngineShowEmptyOldContent': Allows extensions to change the diff
- table body (without header) in cases when there is no old revision or the old
- and new revisions are identical.
- $differenceEngine: DifferenceEngine object
- 'DifferenceEngineShowDiffPage': Add additional output via the available
- OutputPage object into the diff view
- $out: OutputPage object
- 'DifferenceEngineShowDiffPageMaybeShowMissingRevision': called in
- DifferenceEngine::showDiffPage() when revision data cannot be loaded.
- Return false in order to prevent displaying the missing revision message
- (i.e. to prevent DifferenceEngine::showMissingRevision() from being called).
- $differenceEngine: DifferenceEngine object
- '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 since 1.25! 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
- '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
- Return value is ignored (should always return true)
- $editpage: EditPage instance
- $request: Webrequest
- '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
- 'EditPageBeforeEditToolbar': Allows modifying the edit toolbar above the
- textarea in the edit form.
- Hook subscribers can return false to avoid the default toolbar code being
- loaded.
- &$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'.
- 'EditPageGetCheckboxesDefinition': Allows modifying the edit checkboxes
- below the textarea in the edit form.
- $editpage: The current EditPage object
- &$checkboxes: Array of checkbox definitions. See
- EditPage::getCheckboxesDefinition() for the format.
- '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"
- '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)
- '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. Should be set to a Status object or boolean
- false.
- '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
- &$classes: An array of classes to change
- &$attribs: associative array of other HTML attributes for the <tr> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- '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
- '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()
- 'GetContentModels': Add content models to the list of available models.
- &$models: array containing current model list, as strings. Extensions should add to this list.
- '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. Can be used to decorate or replace 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: The difference engine object to be used for the 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' => [
- 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
- 'GetLangPreferredVariant': Called in LanguageConverter#getPreferredVariant() to
- allow fetching the language variant code from cookies or other such
- alternative storage.
- &$req: language variant from the URL (string) or boolean false if no variant
- was specified in the URL; the value of this variable comes from
- LanguageConverter#getURLVariant()
- '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
- $title: Title object of the page being parsed, on which the links will be shown
- '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
- 'GetSlotDiffRenderer': Replace or wrap the standard SlotDiffRenderer for some
- content type.
- $contentHandler: ContentHandler for which the slot diff renderer is fetched.
- &$slotDiffRenderer: SlotDiffRenderer to change or replace.
- $context: IContextSource
- '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
- [ 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 [ 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
- 'HistoryPageToolLinks': Add one or more links to revision history page subtitle.
- $context: IContextSource (object)
- $linkRenderer: LinkRenderer instance
- &$links: Array of HTML strings
- '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
- $parser: Parser instance
- &$query: Query params for desc URL
- &$widthOption: Used by the parser to remember the user preference thumbnailsize
- '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
- 'ImportHandleUnknownUser': When a user doesn't exist locally, this hook is
- called to give extensions an opportunity to auto-create it. If the auto-creation
- is successful, return false.
- $name: User name
- '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 since 1.16! 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: Array with elements of the form "language:title" in the order
- that they will be output.
- &$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': DEPRECATED since 1.28! Use HtmlPageLinkRendererBegin instead.
- 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': DEPRECATED since 1.28! Use HtmlPageLinkRendererEnd hook instead
- 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
- 'LogEventsListLineEnding': Called before a Special:Log line is finished
- $page: the LogEventsList object
- &$ret: the HTML line
- $entry: the DatabaseLogEntry object for this row
- &$classes: the classes to add to the surrounding <li>
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- 'HtmlPageLinkRendererBegin':
- Used when generating internal and interwiki links in
- LinkRenderer, before processing starts. Return false to skip default
- processing and return $ret.
- $linkRenderer: the LinkRenderer object
- $target: the LinkTarget that the link is pointing to
- &$text: the contents that the <a> tag should have; either a plain, unescaped
- string or a HtmlArmor object; 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.
- &$ret: the value to return if your hook returns false.
- 'HtmlPageLinkRendererEnd':
- Used when generating internal and interwiki links in LinkRenderer,
- 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.
- $linkRenderer: the LinkRenderer object
- $target: the LinkTarget object that the link is pointing to
- $isKnown: boolean indicating whether the page is known or not
- &$text: the contents that the <a> tag should have; either a plain, unescaped
- string or a HtmlArmor object.
- &$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.
- '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
- $ticket: prior result of LBFactory::getEmptyTransactionTicket()
- '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 (deprecated, use $formDescriptor instead)
- &$formDescriptor: array HTMLForm's form descriptor
- '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()
- '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 since 1.27! 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
- 'ApiMaxLagInfo': When lag information is being requested via API. Use this to
- override lag information. Generally a hook function should only replace
- $lagInfo if the new $lagInfo['lag'] is greater than the current $lagInfo['lag'].
- &$lagInfo: Maximum lag information array. Fields in the array are:
- 'lag' is the number of seconds of lag.
- 'host' is the host name on which the lag exists.
- 'type' is an indication of the type of lag,
- e.g. "db" for database replication lag or "jobqueue" for job queue size
- converted to pseudo-seconds.
- It is possible to add more fields and they will be returned to the user in
- the API response.
- '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': Called when a global MediaWikiServices instance is
- initialized. Extensions may use this to define, replace, or wrap 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
- $code: code (string) denoting the language to try.
- 'MimeMagicGuessFromContent': Allows MW extensions guess the MIME by content.
- $mimeMagic: Instance of MimeAnalyzer.
- &$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 MimeAnalyzer.
- $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 MimeAnalyzer.
- 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
- 'NewPagesLineEnding': Called before a NewPages line is finished.
- $page: the SpecialNewPages object
- &$ret: the HTML line
- $row: the database row for this page (the recentchanges record and a few extras
- - see NewPagesPager::getQueryInfo)
- &$classes: the classes to add to the surrounding <li>
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- 'NewRevisionFromEditComplete': Called when a revision was inserted due to an
- edit.
- $wikiPage: the WikiPage edited
- $rev: the new revision
- $originalRevId: if the edit restores or repeats an earlier revision (such as a
- rollback or a null revision), the ID of that earlier revision. False otherwise.
- (Used to be called $baseID.)
- $user: the editing user
- &$tags: tags to apply to the edit and recent change
- '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.
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- '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.
- 'OtherAutoblockLogLink': Get links to the autoblock log from extensions which
- autoblocks users and/or IP addresses too.
- &$otherBlockLink: An array with links to other autoblock logs
- '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
- 'OutputPageAfterGetHeadLinksArray': Called in OutputPage#getHeadLinksArray right
- before returning the result.
- &$tags: array containing all <head> links generated so far. The array format is
- "link name or number => 'link HTML'".
- $out: the OutputPage object
- '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
- $out: OutputPage object (since 1.28)
- '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()
- $originalRevId: if the edit restores or repeats an earlier revision (such as a
- rollback or a null revision), the ID of that earlier revision. False otherwise.
- (Used to be called $baseRevId.)
- $undidRevId: the rev ID (or 0) this edit undid
- 'PageDeletionDataUpdates': Called when constructing a list of DeferrableUpdate to be
- executed when a page is deleted.
- $title The Title of the page being deleted.
- $revision A RevisionRecord representing the page's current revision at the time of deletion.
- &$updates A list of DeferrableUpdate that can be manipulated by the hook handler.
- '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
- &$attribs: associative array of other HTML attributes for the <li> element.
- Currently only data attributes reserved to MediaWiki are allowed
- (see Sanitizer::isReservedDataAttribute).
- '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': NOTE: Consider using ParserOptionsRegister instead.
- 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
- 'ParserFetchTemplate': Called when the parser fetches a template
- $parser: Parser Parser object or false
- $title: Title object of the template to be fetched
- $rev: Revision object of the template
- &$text: Transclusion text of the template or false or null
- &$deps: Array of template dependencies with 'title', 'page_id', 'rev_id' keys
- '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 since 1.22! 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
- 'ParserOptionsRegister': Register additional parser options. Note that if you
- change the default value for an option, all existing parser cache entries will
- be invalid. To avoid bugs, you'll need to handle that somehow (e.g. with the
- RejectParserCacheValue hook) because MediaWiki won't do it for you.
- &$defaults: Set the default value for your option here.
- &$inCacheKey: To fragment the parser cache on your option, set a truthy value
- here.
- &$lazyLoad: To lazy-initialize your option, set it null in $defaults and set a
- callable here. The callable is passed the ParserOptions object and the option
- name.
- 'ParserOutputPostCacheTransform': Called from ParserOutput::getText() to do
- post-cache transforms.
- $parserOutput: The ParserOutput object.
- &$text: The text being transformed, before core transformations are done.
- &$options: The options array being used for the transformation.
- '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.
- '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
- $summary: the change summary of the candidate edit
- $user: the User considering the 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
- '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: HTMLForm object, also a ContextSource
- $user: User object with preferences to be saved set
- &$result: boolean indicating success
- $oldUserOptions: array with user old options (before save)
- 'PreferencesGetLegend': Override the text used for the <legend> of a
- preferences section.
- $form: the HTMLForm 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 since 1.27! 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
- 'RecentChangesPurgeRows': Called when old recentchanges rows are purged, after
- deleting those rows but within the same transaction.
- $rows: The deleted rows as an array of recentchanges row objects (with up to
- $wgUpdateRowsPerQuery items).
- '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: [ variable name => value ]
- 'ResourceLoaderJqueryMsgModuleMagicWords': Called in
- ResourceLoaderJqueryMsgModule to allow adding magic words for jQueryMsg.
- The value should be a string, and they can depend only on the
- ResourceLoaderContext.
- $context: ResourceLoaderContext
- &$magicWords: Associative array mapping all-caps magic word to a string value
- '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'] = [
- '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
- 'RevisionDataUpdates': Called when constructing a list of DeferrableUpdate to be
- executed to record secondary data about a revision.
- $title The Title of the page the revision belongs to
- $renderedRevision a RenderedRevision object representing the new revision and providing access
- to the RevisionRecord as well as ParserOutput of that revision.
- &$updates A list of DeferrableUpdate that can be manipulated by the hook handler.
- 'RevisionRecordInserted': Called after a revision is inserted into the database.
- $revisionRecord: the RevisionRecord that has just been inserted.
- 'RevisionInsertComplete': DEPRECATED since 1.31! Use RevisionRecordInserted hook
- instead. Called after a revision is inserted into the database.
- $revision: the Revision
- $data: DEPRECATED! Always null!
- $flags: DEPRECATED! Always null!
- '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)
- 'SearchIndexFields': Add fields to search index mapping.
- &$fields: Array of fields, all implement SearchIndexField
- $engine: SearchEngine instance for which mapping is being built.
- 'SearchDataForIndex': Add data to search document. Allows to add any data to
- the field map used to index the document.
- &$fields: Array of name => value pairs for fields
- $handler: ContentHandler for the content being indexed
- $page: WikiPage that is being indexed
- $output: ParserOutput that is produced from the page
- $engine: SearchEngine for which the indexing is intended
- 'SearchResultsAugment': Allows extension to add its code to the list of search
- result augmentors.
- &$setAugmentors: List of whole-set augmentor objects, must implement
- ResultSetAugmentor.
- &$rowAugmentors: List of per-row augmentor objects, must implement
- ResultAugmentor.
- Note that lists should be in the format name => object and the names in both
- lists should be distinct.
- 'SecondaryDataUpdates': DEPRECATED! Use RevisionDataUpdates or override
- ContentHandler::getSecondaryDataUpdates instead.
- Allows modification of the list of DataUpdates to perform when page content is modified.
- $title: Title of the page that is being edited.
- $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
- '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
- &$titleSnippet: Label for the link representing the search result. Typically the
- article title.
- $result: The SearchResult object
- $terms: String of the search terms entered
- $specialSearch: The SpecialSearch object
- &$query: Array of query string parameters for the link representing the search
- result.
- &$attributes: Array of title link attributes, can be modified by extension.
- '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::formatRow::flags': Called before rendering a
- Special:Contributions row.
- $context: IContextSource object
- $row: Revision information from the database
- &$flags: List of flags on this row
- '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 an <li> after the hook finishes
- $row: Database row object
- 'SpecialListusersHeader': Called after adding the submit button 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
- '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 since 1.23! Use
- ChangesListSpecialPageStructuredFilters or 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
- [
- '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 the 'Go' feature is triggered (generally
- from autocomplete search other than the main bar on Special:Search) and the
- target doesn't exist. Full text search results are generated after this hook is
- called.
- &$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
- 'SpecialTrackingCategories::preprocess': Called after LinkBatch on
- Special:TrackingCategories
- $specialPage: The SpecialTrackingCategories object
- $trackingCategories: Array of data from Special:TrackingCategories with msg and
- cats
- 'SpecialTrackingCategories::generateCatLink': Called for each cat link on
- Special:TrackingCategories
- $specialPage: The SpecialTrackingCategories object
- $catTitle: The Title object of the linked category
- &$html: The Result html
- '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)
- '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 since 1.23! Use
- ChangesListSpecialPageStructuredFilters or 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
- '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().
- '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.
- 'UnblockUser': Before an IP address or user is unblocked.
- &$block: The Block object about to be saved
- &$user: The user performing the unblock (not the one being unblocked)
- &$reason: If the hook is aborted, the error message to be returned in an array
- 'UnblockUserComplete': After an IP address or user has been unblocked.
- $block: The Block object that was saved
- $user: The user who performed the unblock (not the one being unblocked)
- '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 in 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
- 'UnitTestsAfterDatabaseSetup': Called right after MediaWiki's test
- infrastructure has finished creating/duplicating core tables for unit tests.
- $database: Database in question
- $prefix: Table prefix to be used in unit tests
- 'UnitTestsBeforeDatabaseTeardown': Called right before MediaWiki tears down its
- database infrastructure used for unit tests.
- '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': DEPRECATED since 1.19! To add an action in an extension,
- create a subclass of Action, and add a new key to $wgActions.
- 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 UploadVerifyUpload or UploadVerifyFile instead.
- &$upload: SpecialUpload object
- 'UploadForm:getInitialPageText': After the initial page text for file uploads
- is generated, to allow it to be altered.
- &$pageText: the page text
- $msg: array of header messages
- $config: Config 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.
- &$upload: SpecialUpload 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
- 'UploadStashFile': Before a file is stashed (uploaded to stash).
- Note that code which has not been updated for MediaWiki 1.28 may not call this
- hook. If your extension absolutely, positively must prevent some files from
- being uploaded, use UploadVerifyFile or UploadVerifyUpload.
- $upload: (object) An instance of UploadBase, with all info about the upload
- $user: (object) An instance of User, the user uploading this file
- $props: (array) File properties, as returned by FSFile::getPropsFromPath()
- &$error: output: If the file stashing should be prevented, set this to the
- reason in the form of [ messagename, param1, param2, ... ] or a
- MessageSpecifier instance (you might want to use ApiMessage to provide machine
- -readable details for the API).
- 'UploadVerification': DEPRECATED since 1.28! Use UploadVerifyFile instead.
- Additional chances to reject an uploaded file.
- $saveName: (string) destination file name
- $tempName: (string) filesystem path to the temporary file for checks
- &$error: (string) output: message key for message to show if upload canceled by
- returning false. May also be an array, where the first element is the message
- key and the remaining elements are used as parameters to the message.
- 'UploadVerifyFile': extra file verification, based on MIME type, etc. Preferred
- in most cases over UploadVerification.
- $upload: (object) an instance of UploadBase, with all info about the upload
- $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, set this to the
- reason in the form of [ messagename, param1, param2, ... ] or a
- MessageSpecifier instance (you might want to use ApiMessage to provide machine
- -readable details for the API).
- 'UploadVerifyUpload': Upload verification, based on both file properties like
- MIME type (same as UploadVerifyFile) and the information entered by the user
- (upload comment, file page contents etc.).
- $upload: (object) An instance of UploadBase, with all info about the upload
- $user: (object) An instance of User, the user uploading this file
- $props: (array) File properties, as returned by FSFile::getPropsFromPath()
- $comment: (string) Upload log comment (also used as edit summary)
- $pageText: (string) File description page text (only used for new uploads)
- &$error: output: If the file upload should be prevented, set this to the reason
- in the form of [ messagename, param1, param2, ... ] or a MessageSpecifier
- instance (you might want to use ApiMessage to provide machine-readable details
- for the API).
- 'UserIsBot': when determining whether a user is a bot account
- $user: the user
- &$isBot: whether this is user a bot or not (boolean)
- '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 or changing a group's expiry; 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
- &$expiry: the expiry time in TS_MW format, or null if the group is not to
- expire; 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 since 1.27! 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 since 1.25!
- 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.
- $oldUGMs: An associative array (group name => UserGroupMembership object) of
- the user's group memberships before the change.
- $newUGMs: An associative array (group name => UserGroupMembership object) of
- the user's current group memberships.
- '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 since 1.27! 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.
- $direct: (bool) The hook is called directly after a successful login. This will
- only happen once per login. A UserLoginComplete call with direct=false can
- happen when the user visits the login page while already logged in.
- 'UserLoginForm': DEPRECATED since 1.27! 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 since 1.26! 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. Hook handlers can
- either add or manipulate options, or reset one back to it's default to block
- changing it. Hook handlers are also allowed to abort the process by returning
- false, e.g. to save to a global profile instead. Compare to the UserSaveSettings
- hook, which is called after the preferences have been saved.
- $user: The User for which the options are going to be saved
- &$options: The users options as an associative array, modifiable
- 'UserSaveSettings': Called directly after user preferences (user_properties in
- the database) have been saved. Compare to the UserSaveOptions hook, which is
- called before.
- $user: The User for which the options have been saved
- 'UserSetCookies': DEPRECATED since 1.27! 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
- 'UsersPagerDoBatchLookups': Called in UsersPager::doBatchLookups() to give
- extensions providing user group data from an alternate source a chance to add
- their data into the cache array so that things like global user groups are
- displayed correctly in Special:ListUsers.
- $dbr: Read-only database handle
- $userIds: Array of user IDs whose groups we should look up
- &$cache: Array of user ID -> (array of internal group name (e.g. 'sysop') ->
- UserGroupMembership object)
- &$groups: Array of group name -> bool true mappings for members of a given user
- group
- '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
- 'WatchedItemQueryServiceExtensions': Create a WatchedItemQueryServiceExtension.
- &$extensions: Add WatchedItemQueryServiceExtension objects to this array
- $watchedItemQueryService: Service object
- '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': DEPRECATED! Use PageDeletionDataUpdates or
- override ContentHandler::getDeletionDataUpdates instead.
- Manipulates the list of DeferrableUpdates to be applied when a page is deleted.
- $page: the WikiPage
- $content: the Content to generate updates for, or null in case the page revision
- could not be loaded. The delete will succeed despite this.
- &$updates: the array of objects that implement DeferrableUpdate. Hook function
- may want to add to it.
- 'WikiPageFactory': Override WikiPage class used for a title
- $title: Title of the page
- &$page: Variable to set the created WikiPage to.
- '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.
|