Revert r32409 -- smart quotes infecting our nice clean text
[lhc/web/wiklou.git] / docs / hooks.txt
index 104a665..d6379af 100644 (file)
@@ -35,20 +35,20 @@ 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
-    }
-    
+       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:
@@ -75,15 +75,15 @@ 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) {
+       function showAnArticle($article) {
 
-       if (wfRunHooks('ArticleShow', array(&$article))) {
-       
-           # code to actually show the article goes here
-           
-           wfRunHooks('ArticleShowComplete', array(&$article));
+               if (wfRunHooks('ArticleShow', array(&$article))) {
+
+                       # code to actually show the article goes here
+
+                       wfRunHooks('ArticleShowComplete', array(&$article));
+               }
        }
-    }
 
 We've cleaned up the code here by removing clumps of weird,
 infrequently used code and moving them off somewhere else. It's much
@@ -96,24 +96,24 @@ 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 reverseArticleTitle($article) {
+               # ...
+       }
 
-    function reverseForExport($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';
-    }
+       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
@@ -124,8 +124,8 @@ 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');
-    
+       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.
 
@@ -143,31 +143,31 @@ A hook is a chunk of code run at some particular event. It consists of:
 Hooks are registered by adding them to the global $wgHooks array for a
 given event. All the following are valid ways to define hooks:
 
-      $wgHooks['EventName'][] = 'someFunction'; # function, no data
-      $wgHooks['EventName'][] = array('someFunction', $someData);
-      $wgHooks['EventName'][] = array('someFunction'); # weird, but OK
-      
-      $wgHooks['EventName'][] = $object; # object only
-      $wgHooks['EventName'][] = array($object, 'someMethod');
-      $wgHooks['EventName'][] = array($object, 'someMethod', $someData);
-      $wgHooks['EventName'][] = array($object); # weird but OK
+       $wgHooks['EventName'][] = 'someFunction'; # function, no data
+       $wgHooks['EventName'][] = array('someFunction', $someData);
+       $wgHooks['EventName'][] = array('someFunction'); # weird, but OK
+
+       $wgHooks['EventName'][] = $object; # object only
+       $wgHooks['EventName'][] = array($object, 'someMethod');
+       $wgHooks['EventName'][] = array($object, 'someMethod', $someData);
+       $wgHooks['EventName'][] = array($object); # weird but OK
 
 When an event occurs, the function (or object method) will be called
 with the optional data provided as well as event-specific parameters.
 The above examples would result in the following code being executed
 when 'EventName' happened:
 
-      # function, no data
-      someFunction($param1, $param2)
-      # function with data
-      someFunction($someData, $param1, $param2)
-
-      # object only
-      $object->onEventName($param1, $param2)
-      # object with method
-      $object->someMethod($param1, $param2)
-      # object with method and data
-      $object->someMethod($someData, $param1, $param2)
+       # 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
@@ -176,8 +176,8 @@ 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['ArticleSaveComplete'][] = array('ircNotify', 'TimStarling');
-      $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'brion');
+       $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'TimStarling');
+       $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'brion');
 
 This code would result in ircNotify being run twice when an article is
 saved: once for 'TimStarling', and once for 'brion'.
@@ -195,12 +195,12 @@ the main functionality. For example, if you wanted to authenticate
 users to a custom system (LDAP, another PHP program, whatever), you
 could do:
 
-    $wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
-                               
-    function ldapLogin($username, $password) {
-        # log user into LDAP
-       return false;
-    }
+       $wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
+  
+       function ldapLogin($username, $password) {
+               # log user into LDAP
+               return false;
+       }
 
 Returning false makes less sense for events where the action is
 complete, and will normally be ignored.
@@ -210,14 +210,15 @@ complete, and will normally be ignored.
 A calling function or method uses the wfRunHooks() function to run
 the hooks related to a particular event, like so:
 
-    class Article { 
-        # ...
-       function protect() {
-           global $wgUser;
-           if (wfRunHooks('ArticleProtect', array(&$this, &$wgUser))) {
-               # protect the article
-               wfRunHooks('ArticleProtectComplete', array(&$this, &$wgUser));
-           }
+       class Article { 
+               # ...
+               function protect() {
+                       global $wgUser;
+                       if (wfRunHooks('ArticleProtect', array(&$this, &$wgUser))) {
+                               # protect the article
+                               wfRunHooks('ArticleProtectComplete', array(&$this, &$wgUser));
+                       }
+               }
        }
                                                    
 wfRunHooks() returns true if the calling function should continue
@@ -237,12 +238,47 @@ protocol came about after MediaWiki 1.4rc1.
 This is a list of known events and parameters; please add to it if
 you're going to add events to the MediaWiki code.
 
+'AbortLogin': 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.
+
+'AbortMove': allows to abort moving an article (title)
+$old: old title
+$nt: new title
+$user: user who is doing the move
+$err: error message
+
 'AbortNewAccount': Return false to cancel account creation.
 $user: the User object about to be created (read-only, incomplete)
 $message: out parameter: error message to display on abort
 
 'AddNewAccount': 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)
+
+'AjaxAddScript': Called in output page just before the initialisation
+of the javascript ajax engine. The hook is only called when ajax
+is enabled ( $wgUseAjax = true; ).
+
+'AlternateEdit': before checking if an user can edit a page and
+before showing the edit form ( EditPage::edit() ). This is triggered
+on &action=edit.
+$EditPage : the EditPage object
+
+'APIEditBeforeSave': before saving a page with api.php?action=edit,
+after processing request parameters. Return false to let the request
+fail, returning an error message or an <edit result="Failure"> tag
+if $resultArr was filled.
+$EditPage : the EditPage object
+$text : the new text of the article (has yet to be saved)
+$resultArr : data in this array will be added to the API result
+
+'ArticleAfterFetchContent': after fetching content of an article from the database
+$article: the article (object) being loaded from the database
+$content: the content (string) of the article
 
 'ArticleDelete': before an article is deleted
 $article: the article (object) being deleted
@@ -254,6 +290,39 @@ $article: the article that was deleted
 $user: the user that deleted the article
 $reason: the reason the article was deleted
 
+'ArticleEditUpdateNewTalk': before updating user_newtalk when a user talk page was changed
+$article: article (object) of the user talk page
+
+'ArticleEditUpdatesDeleteFromRecentchanges': before deleting old entries from recentchanges table, return false to not delete old entries
+$article: article (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
+
+'ArticleInsertComplete': After an article is created
+$article: Article created
+$user: User creating the article
+$text: New content
+$summary: Edit summary/comment
+$isMinor: Whether or not the edit was marked as minor
+$isWatch: (No longer used)
+$section: (No longer used)
+$flags: Flags passed to Article::doEdit()
+$revision: New Revision of the article
+
+'ArticleMergeComplete': after merging to article using Special:Mergehistory
+$targetTitle: target title (object)
+$destTitle: destination title (object) 
+
+'ArticlePageDataAfter': after loading data of an article from the database
+$article: article (object) whose data were loaded
+$row: row (object) returned from the database server
+
+'ArticlePageDataBefore': before loading data of an article from the database
+$article: article (object) that data will be loaded
+$fields: fileds (array) to load from the database
+
 'ArticleProtect': before an article is protected
 $article: the article being protected
 $user: the user doing the protection
@@ -268,6 +337,23 @@ $protect: boolean whether it was a protect or an unprotect
 $reason: Reason for protect
 $moveonly: boolean whether it was for move only or not
 
+'ArticlePurge': before executing "&action=purge" 
+$article: article (object) to purge
+
+'ArticleRevisionVisiblitySet': called when changing visibility of one or more
+revision of an article
+&$title: title object of the article
+
+'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)
+
+'ArticleRollbackComplete': after an article rollback is completed
+$article: the article that was edited
+$user: the user who did the rollback
+$revision: the revision the page was reverted back to
+
 'ArticleSave': before an article is saved
 $article: the article (object) being saved
 $user: the user (object) saving the article
@@ -277,6 +363,17 @@ $isminor: minor flag
 $iswatch: watch flag
 $section: section #
 
+'ArticleSaveComplete': After an article has been updated
+$article: Article modified
+$user: User performing the modification
+$text: New content
+$summary: Edit summary/comment
+$isMinor: Whether or not the edit was marked as minor
+$isWatch: (No longer used)
+$section: (No longer used)
+$flags: Flags passed to Article::doEdit()
+$revision: New Revision of the article
+
 'ArticleSaveComplete': after an article is saved
 $article: the article (object) saved
 $user: the user (object) who saved the article
@@ -286,6 +383,26 @@ $isminor: minor flag
 $iswatch: watch flag
 $section: section #
 
+wfRunHooks( 'ArticleSaveComplete', array( &$this, &$wgUser, $text, $summary, $flags & EDIT_MINOR, null, null, &$flags, $revision ) );
+
+'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)
+
+'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
+
+'ArticleViewHeader': Before the parser cache is about to be tried for article viewing.
+&$article: the article
+&$pcache: whether to try the parser cache or not
+&$outputDone: whether the output for this page finished or not
+
+'ArticleViewRedirect': before setting "Redirected from ..." subtitle when follwed an redirect
+$article: target article (object)
+
 'AuthPluginSetup': update or replace authentication plugin object ($wgAuth)
 Gives a chance for an extension to set it programattically to a variable class.
 &$auth: the $wgAuth object, probably a stub
@@ -293,6 +410,12 @@ Gives a chance for an extension to set it programattically to a variable class.
 'AutoAuthenticate': called to authenticate users on external/environmental means
 $user: writes user object to this parameter
 
+'AutopromoteCondition': check autopromote condition for user.
+$type: condition type
+$args: arguments
+$user: user
+$result: result of checking autopromote condition
+
 'BadImage': When checking against the bad image list
 $name: Image name being checked
 &$bad: Whether or not the image is "bad"
@@ -300,6 +423,37 @@ $name: Image name being checked
 Change $bad and return false to override. If an image is "bad", it is not
 rendered inline in wiki pages or galleries in category pages.
 
+'BeforeGalleryFindFile': before an image is fetched for a gallery
+&$gallery,: the gallery object
+&$nt: the image title 
+&$time: image timestamp
+
+'BeforePageDisplay': Prior to outputting a page
+$out: OutputPage object
+
+'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
+
+'BeforeParserMakeImageLinkObj': before an image is rendered by Parser
+&$parser: Parser object
+&$nt: the image title
+&$skip: skip this image and link it?
+&$time: the image timestamp
+
+'BeforeParserrenderImageGallery': before an image gallery is rendered by Parser
+&$parser: Parser object
+&$ig: ImageGallery object
+
+'BeforeWatchlist': Override watchlist display or add extra SQL clauses.
+$nondefaults: Assoc array with the following keys:
+              days, hideOwn, hideBots, hideMinor, namespace
+$wgUser: wgUser.
+&$hookSql: a string which will be inserted without sanitation into the SQL query
+           used to get the watchlist, at the end of the WHERE part.
+
 '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)
@@ -308,18 +462,54 @@ $user: the user _doing_ the block (not the one being blocked)
 $block: the Block object that was saved
 $user: the user who did the block (not the one being blocked)
 
+'BookInformation': Before information output on Special:Booksources
+$isbn: ISBN to show information for
+$output: OutputPage object in use
+
+'BrokenLink': Before the HTML is created for a broken (i.e. red) link
+&$this: Linker instance
+$nt: the page title
+$query: the URL query string passed in
+&$u: the URL of this link
+&$style: the inline CSS style
+&$prefix: a prefix prepended to the linked text
+&$text: the text placed by the user in the wiki-link
+&$inside: any additional alphanumeric characters placed after the wiki-link,
+that are made part of the link text
+&$trail: text placed immediately after the HTML link
+
+'CategoryPageView': before viewing a categorypage in CategoryPage::view
+$catpage: CategoryPage instance
+
+'ChangesListInsertArticleLink': Override or augment link to article in RC list.
+&$this:        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.
+
+'ContributionsToolLinks': Change tool links above Special:Contributions
+$id: User identifier
+$title: User page title
+&$tools: Array of tool links
+
+'CustomEditor': When invoking the page editor
+$article: Article being edited
+$user: User performing the edit
+
+Return true to allow the normal editor to be used, or false
+if implementing a custom editor, e.g. for a special namespace,
+etc.
+
 '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
 
-'EditPage::attemptSave': called before an article is
-saved, that is before insertNewArticle() is called
-&$editpage_Obj: the current 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
+'DisplayOldSubtitle': before creating subtitle when browsing old versions of an article
+$article: article (object) being viewed
+$oldid: oldid (int) being viewed
 
 'EditFilter': Perform checks on an edit
 $editor: Edit form (see includes/EditPage.php)
@@ -327,11 +517,51 @@ $text: Contents of the edit box
 $section: Section being edited
 &$error: Error message to return
 
+'EditFilterMerged': Post-section-merge edit filter
+$editor: EditPage instance (object)
+$text: content of the edit box
+$error: error message to return
+
+'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 insertNewArticle() is called
+&$editpage_Obj: the current EditPage object
+
+'EditPage::showEditForm:fields': allows injection of form field into edit form
+&$editor: the EditPage instance for reference
+&$out: an OutputPage instance to write to
+return value is ignored (should always return true)
+
+'EditPage::showEditForm:initial': before showing the edit form
+$editor: EditPage instance (object)
+
 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.
 
+'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"
+
+'EditSectionLink': Override the return value of Linker::editSectionLink()
+$skin: Skin rendering the UI
+$title: Title being linked to
+$section: Section to link to
+$link: Default link
+$result: Result (alter this to override the generated links)
+
+'EditSectionLinkForOther': Override the return value of Linker::editSectionLinkForOther()
+$skin: Skin rendering the UI
+$title: Title being linked to
+$section: Section to link to
+$hint: Anchor title/tooltip attributes
+$link: Default link
+$result: Result (alter this to override the generated links)
+
 'EmailConfirmed': When checking that the user's email address is "confirmed"
 $user: User being checked
 $confirmed: Whether or not the email address is confirmed
@@ -356,20 +586,143 @@ $text: text of the mail
 &$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 article 
+         associated with the file.
+$user: user who performed the deletion
+$reason: reason
+
+'FileUpload': When a file upload occurs
+$file : Image object representing the file that was uploaded
+
+'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
+
+'GetBlockedStatus': after loading blocking status of an user from the database
+$user: user (object) being checked
+
+'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()
+
 '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()
 
+'GetLinkColours': modify the CSS class of an array of page links
+$linkcolour_ids: array of prefixed DB keys of the pages linked to, indexed by page_id.
+&$colours: (output) array of CSS classes, indexed by prefixed DB keys
+
 'GetLocalURL': modify local URLs as output into page links
 $title: Title object of page
 $url: string value as output (out parameter, can modify)
 $query: query options passed to Title::getLocalURL()
 
-'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()
+'getUserPermissionsErrors': Add a permissions error when permissions errors are
+       checked for.  Use instead of userCan for most cases. Return false if the
+       user can't do it, and populate $result with the reason in the form of
+       array( messagename, param1, param2, ... ).  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': Absolutely the same, but is called only
+       if expensive checks are enabled.
+
+'ImageOpenShowImageInlineBefore': Call potential extension just before showing
+       the image on an image page
+$imagePage: ImagePage object ($this)
+$output: $wgOut
+
+'ImageBeforeProduceHTML': Called before producing the HTML created by a wiki
+       image insertion.  You can skip the default logic entirely by returning
+       false, or just modify a few things using call-by-reference.
+&$this: Skin object
+&$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::makeImageLink2
+&$handlerParams: Various parameters with special meanings; see documentation in
+       includes/Linker.php for Linker::makeImageLink2
+&$time: Timestamp of file in 'YYYYMMDDHHIISS' string form, or false for current
+&$res: Final HTML output, used if you return false
+
+'InitPreferencesForm': called at the end of PreferencesForm's constructor
+$form: the PreferencesForm
+$request: the web request to initialized from
+
+'InternalParseBeforeLinks': during Parser's internalParse method before links but
+after noinclude/includeonly/onlyinclude and other processing.
+&$this: Parser object
+&$text: string containing partially parsed text
+&$this->mStripState: Parser's internal StripState object
+
+'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
+$article: article (object) being checked
+
+'IsTrustedProxy': Override the result of wfIsTrustedProxy()
+$ip: IP being check
+$result: Change this value to override the result of wfIsTrustedProxy()
+
+'isValidEmailAddr': Override the result of User::isValidEmailAddr(), for ins-
+tance 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
+
+'LanguageGetMagic': Use this to define synonyms of magic words depending of the language
+$magicExtensions: associative array of magic words synonyms
+$lang: laguage code (string)
+
+'LanguageGetSpecialPageAliases': Use to define aliases of special pages names depending of the language
+$specialPageAliases: associative array of magic words synonyms
+$lang: laguage code (string)
+
+'LinksUpdate': At the beginning of LinksUpdate::doUpdate() just before the actual update
+&$linksUpdate: the LinkUpdate object
+
+'LinksUpdateComplete': At the end of LinksUpdate::doUpdate() when updating has completed
+&$linksUpdate: the LinkUpdate object
+
+'LinksUpdateConstructed': At the end of LinksUpdate() is contruction.
+&$linksUpdate: the LinkUpdate object
+
+'LoadAllMessages': called by MessageCache::loadAllMessages() to load extensions messages
+
+'LoadExtensionSchemaUpdates': called by maintenance/updaters.inc when upgrading database schema
+
+'LoginAuthenticateAudit': a login attempt for a valid user account either succeeded or failed.
+                          No return data is accepted; this hook is for auditing only.
+$user: the User object being authenticated against
+$password: the password being submitted and found wanting
+$retval: a LoginForm class constant with authenticateUserData() return value (SUCCESS, WRONG_PASS, etc)
+
+'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) 
 
 'LogPageValidTypes': action being logged. DEPRECATED: Use $wgLogTypes
 &$type: array of strings
@@ -383,6 +736,12 @@ $query: query options passed to Title::getFullURL()
 'LogPageActionText': strings used by wfMsg as a header. DEPRECATED: Use $wgLogActions
 &$actionText: array of strings
 
+'MagicWordMagicWords': When defining new magic word. DEPRECATED: Use LanguageGetMagic hook instead
+$magicWords: array of strings
+
+'MagicWordwgVariableIDs': When definig new magic words IDs. DEPRECATED: Use LanguageGetMagic hook instead
+$variableIDs: array of strings
+
 '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
@@ -400,22 +759,170 @@ $mathRenderer: instance of MathRenderer
 $errmsg: error message, in HTML (string). Nonempty indicates failure
  of rendering the formula
 
+'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: $wgArticle
+$title:   $wgTitle
+$user:    $wgUser
+$request: $wgRequest
+
+'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
+
+'MonoBookTemplateToolboxEnd': Called by Monobook skin after toolbox links have been rendered (useful for adding more)
+$tools: array of tools
+
 '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)
 
+'OutputPageParserOutput': after adding a parserOutput to $wgOut
+$out: OutputPage instance (object)
+$parserOutput: parserOutput instance being added in $out
+
+'PageHistoryBeforeList': When a history page list is about to be constructed.
+$article: the article that the history is loading for
+
+'PageHistoryLineEnding' : right before the end <li> is added to a history line
+$row: the revision row for this line
+$s: the string representing this parsed line
+
 'PageRenderingHash': alter the parser cache option hash key
   A parser extension which depends on user options should install
   this hook and append its values to the key.
 $hash: reference to a hash key string which can be modified
 
+'ParserAfterStrip': Same as ParserBeforeStrip
+
+'ParserAfterTidy': Called after Parser::tidy() in Parser::parse()
+$parser: Parser object being used 
+$text: text that'll 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 (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
+
+'ParserClearState': called at the end of Parser::clearState()
+$parser: Parser object being cleared
+
+'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)
+
+'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: varaiable cache (array)
+
+'ParserLimitReport': 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)
+
+'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
+
+'ParserTestParser': called when creating a new instance of Parser in maintenance/parserTests.inc
+$parser: Parser object created
+
+'ParserTestTables': alter the list of tables to duplicate when parser tests
+are run. Use when page save hooks require the presence of custom tables
+to ensure that tests continue to run properly.
+&$tables: array of table names
+
 '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
 
+'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.
+
+'PreferencesUserInformationPanel': Add HTML bits to user information list in preferences form
+$form : PreferencesForm object
+&$html : HTML to append to
+
+'PrefixSearchBackend': Override the title prefix search used for OpenSearch and
+AJAX search suggestions. Put results into &$results outparam and return false.
+$ns : int namespace key 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)
+
+'PrefsEmailAudit': called when user changes his email address
+$user: User (object) changing his email address
+$oldaddr: old email address (string)
+$newaddr: new email address (string)
+
+'PrefsPasswordAudit': called when user changes his password
+$user: User (object) changing his passoword
+$newPass: new password
+$error: error (string) 'badretype', 'wrongpassword', 'error' or 'success'
+
+'RawPageViewBeforeOutput': Right before the text is blown out in action=raw
+&$obj: RawPage object
+&$text: The text that's going to be the output
+
+'RecentChange_save': called at the end of RecenChange::save()
+$recentChange: RecentChange object
+
+'RenderPreferencesForm': called at the end of PreferencesForm::mainPrefsForm
+$form: the PreferencesForm
+$out: output page to render to, probably $wgOut
+
+'ResetPreferences': called at the end of PreferencesForm::resetPrefs
+$form: the PreferencesForm
+$user: the User object to load preferences from
+
+'SavePreferences': called at the end of PreferencesForm::savePreferences; 
+                   returning false prevents the preferences from being saved.
+$form: the PreferencesForm
+$user: the User object to save preferences to
+$message: change this to set an error message (ignored if the hook does notreturn fals)
+
+'SearchUpdate': Prior to search update completion
+$id : Page id
+$namespace : Page namespace
+$title : Page title
+$text : Current text being indexed
+
+'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches
+$term : Search term string
+&$title : Outparam; set to $title object and return false for a match
+
+'ShowRawCssJs': Customise the output of raw CSS and JavaScript in page views
+$text: Text being shown
+$title: Title of the custom script/stylesheet page
+$output: Current OutputPage object
+
 'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
 &$siteNotice: HTML returned as the sitenotice
 Return true to allow the normal method of notice selection/rendering to work,
@@ -425,6 +932,120 @@ or change the value of $siteNotice and return false to alter it.
 &$siteNotice: HTML sitenotice
 Alter the contents of $siteNotice to add to/alter the sitenotice/anonnotice.
 
+'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.
+
+'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
+$skin: Skin object
+&$subpages: Subpage links HTML
+If false is returned $subpages will be used instead of the HTML subPageSubtitle() generates.
+If true is returned, $subpages will be ignored and the rest of subPageSubtitle() will run.
+
+'SkinTemplateBuildContentActionUrlsAfterSpecialPage': after the single tab  when showing a special page
+$sktemplate: SkinTemplate object
+$content_actions: array of tabs
+
+'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the "permanent link" tab
+$sktemplate: SkinTemplate object
+$nav_urls: array of tabs
+
+'SkinTemplateContentActions': Alter the "content action" links in SkinTemplates
+&$content_actions: Content actions
+[See http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/examples/Content_action.php
+for an example]
+
+'SkinTemplateOutputPageBeforeExec': Before SkinTemplate::outputPage() starts page output
+&$sktemplate: SkinTemplate object
+&$tpl: Template engine object
+
+'SkinTemplatePreventOtherActiveTabs': use this to prevent showing active tabs
+$sktemplate: SkinTemplate object
+$res: set to true to prevent active tabs
+
+'SkinTemplateSetupPageCss': use this to provide per-page CSS
+$out: Css to return
+
+'SkinTemplateTabAction': Override SkinTemplate::tabAction().
+       You can either create your own array, or alter the parameters for the normal one.
+&$this:     The SkinTemplate instance.
+$title:     Title instance for the page.
+$message:   Visible label of tab.
+$selected:  Whether this is a selected tab.
+$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.
+
+'SkinTemplateTabs': called when finished to build the actions tabs
+$sktemplate: SkinTemplate object
+$content_actions: array of tabs
+
+'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
+$id: User identifier
+
+'SpecialListusersDefaultQuery': called right before the end of UsersPager::getDefaultQuery()
+$pager: The UsersPager instance
+$query: The query array to be returned
+
+'SpecialListusersFormatRow': called right before the end of UsersPager::formatRow()
+$item: HTML to be returned. Will be wrapped in <li></li> after the hook finishes
+$row: Database row object
+
+'SpecialListusersHeader': called before closing the <fieldset> in UsersPager::getPageHeader()
+$pager: The UsersPager instance
+$out: The header HTML
+
+'SpecialListusersHeaderForm': called before adding the submit button in UsersPager::getPageHeader()
+$pager: The UsersPager instance
+$out: The header HTML
+
+'SpecialListusersQueryInfo': called right before the end of UsersPager::getQueryInfo()
+$pager: The UsersPager instance
+$query: The query array to be returned
+
+'SpecialMovepageAfterMove': called after moving a page
+$movePage: MovePageForm object
+$oldTitle: old title (object)
+$newTitle: new title (object)
+
+'SpecialPageExecuteAfterPage': called after executing a special page
+Warning: Not all the special pages call this hook
+$specialPage: SpecialPage object
+$par: paramter passed to the special page (string)
+$funct: function called to execute the special page
+
+'SpecialPageExecuteBeforeHeader': called before setting the header text of the special page
+Warning: Not all the special pages call this hook
+$specialPage: SpecialPage object
+$par: paramter passed to the special page (string)
+$funct: function called to execute the special page
+
+'SpecialPageExecuteBeforePage': called after setting the special page header text but before the main execution
+Warning: Not all the special pages call this hook
+$specialPage: SpecialPage object
+$par: paramter passed to the special page (string)
+$funct: function called to execute the special page
+
+'SpecialPage_initList': called when setting up SpecialPage::$mList, use this hook to remove a core special page
+$list: list (array) of core special pages
+
+'SpecialSearchNogomatch': called when user clicked the "Go" button but the target doesn't exist
+$title: title object generated from the text entred by the user
+
+'SpecialSearchResults': called before search result display when there are matches
+$term: string of search term
+$titleMatches: empty or SearchResultSet object
+$textMatches: empty or SearchResultSet object
+
+'SpecialSearchNoResults': called before search result display when there are no matches
+$term: string of search term
+
+'SpecialVersionExtensionTypes': called when generating the extensions credits, use this to change the tables headers
+$extTypes: associative array of extensions types
+
 'TitleMoveComplete': after moving an article (title)
 $old: old title
 $nt: new title
@@ -432,6 +1053,10 @@ $user: user who did the move
 $pageid: database ID of the page that's been moved
 $redirid: database ID of the created redirect
 
+'UndeleteShowRevision': called when showing a revision in Special:Undelete
+$title: title object related to the revision
+$rev: revision (object) that will be viewed
+
 'UnknownAction': An unknown "action" has occured (useful for defining
                 your own actions)
 $action: action name
@@ -445,6 +1070,10 @@ $article: article object to be removed
 $user: user that was watching
 $article: article object removed
 
+'UnwatchArticleComplete': after a watch is removed from an article
+$user: user that watched
+$article: article object that was watched
+
 'UploadForm:initial': before the upload form is generated
 $form: UploadForm object
 You might set the member-variables $uploadFormTextTop and 
@@ -462,18 +1091,31 @@ string $tempName: filesystem path to the temporary file for checks
 string &$error: output: HTML error to show if upload canceled by returning false
 
 'UploadComplete': Upon completion of a file upload
-$image: Image object representing the file that was uploaded
+$uploadForm: Upload form object. File can be accessed by $uploadForm->mLocalFile.
 
-'UserCan': To interrupt/advise the "user can do X to Y article" check
+'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
+ 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'll clear the message
 
 'UserCreateForm': change to 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
+
 'UserLoginComplete': after a user has logged in
 $user: the user object that was created on login
                    
@@ -491,6 +1133,20 @@ $user  : User object that was changed
 $add   : Array of strings corresponding to groups added
 $remove: Array of strings corresponding to groups removed
                      
+'UserGetImplicitGroups': Called in User::getImplicitGroups()
+&$groups: List of implicit (automatically-assigned) groups
+
+'UserGetRights': Called in User::getRights()
+$user: User to get rights for
+&$rights: Current rights
+
+'UserRetrieveNewTalks': called when retrieving "You have new messages!" message(s)
+$user: user retrieving new talks messages
+$talks: array of new talks page(s)
+
+'UserToggles': called when initialising User::$mToggles, use this to add new toggles
+$toggles: array of toggles to add
+
 'WatchArticle': before a watch is added to an article
 $user: user that will watch
 $article: article object to be watched
@@ -499,24 +1155,8 @@ $article: article object to be watched
 $user: user that watched
 $article: article object watched
 
-'UnwatchArticleComplete': after a watch is removed from an article
-$user: user that watched
-$article: article object that was watched
-
-'CategoryPageView': before viewing a categorypage in CategoryPage::view
-$catpage: CategoryPage instance
-
-'SkinTemplateContentActions': after building the $content_action array right
-                              before returning it, see Content_action.php in
-                              the extensions/examples/ directory
-                              ( http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/examples/ )
-                              for a demonstration of how to use this hook.
-$content_actions: The array of content actions
-
-'BeforePageDisplay': Called just before outputting a page (all kinds of,
-                    articles, special, history, preview, diff, edit, ...)
-                    Can be used to set custom CSS/JS
-$out: OutputPage object
+'wgQueryPages': called when initialising $wgQueryPages, use this to add new query pages to be updated with maintenance/updateSpecialPages.php
+$query: $wgQueryPages itself
 
 More hooks might be available but undocumented, you can execute
 ./maintenance/findhooks.php to find hidden one.