Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
2154 / 2154
100.00% covered (success)
100.00%
527 / 527
CRAP
100.00% covered (success)
100.00%
1 / 1
HookRunner
100.00% covered (success)
100.00%
2154 / 2154
100.00% covered (success)
100.00%
527 / 527
527
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onAbortAutoblock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortDiffCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortTalkPageEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onActionBeforeFormDisplay
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onActionModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAddNewAccount
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterBuildFeedLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterFinalPageOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onAfterImportPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterParserFetchFileAndTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateEditPreview
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateUserMailer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAncientPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onApiBeforeMain
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleConfirmDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleContentOnDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDeleteAfterSuccess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDeleteComplete
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onArticleEditUpdateNewTalk
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleFromTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleMergeComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePageDataAfter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePageDataBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleParserOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePrepareTextForEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleProtect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleProtectComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePurge
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleRevisionViewCustom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleRevisionVisibilitySet
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleShowPatrolFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleUndelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleUpdateBeforeRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticle__MissingArticleConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthChangeFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthManagerLoginAuthenticateAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAutopromoteCondition
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBacklinkCacheGetConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBacklinkCacheGetPrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBadImage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeDisplayNoArticleText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeInitialize
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforePageDisplay
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onBeforePageRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeParserFetchFileAndTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeParserFetchTemplateRevisionRecord
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeRevertedTagUpdate
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeWelcomeCreation
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBitmapHandlerCheckImageArea
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBitmapHandlerTransform
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBlockIp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBlockIpComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBookInformation
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCanonicalNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryAfterPageAdded
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryAfterPageRemoved
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryPageView
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryViewer__doCategoryQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryViewer__generateLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeAuthenticationDataAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListInitRows
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListInsertArticleLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListSpecialPageQuery
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListSpecialPageStructuredFilters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagAfterDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagCanCreate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagCanDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsAfterUpdateTags
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsAllowedAdd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsListActive
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeUserGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCollation__factory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onConfirmEmailComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentAlterParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentGetParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentHandlerDefaultModelFor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentHandlerForModelID
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentModelCanBeUsedOn
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyDefaultSource
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyDirectives
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyScriptSource
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContribsPager__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContribsPager__reallyDoQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributeCards
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributionsLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributionsToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onConvertContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCustomEditor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeletedContribsPager__reallyDoQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeletedContributionsLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeleteUnknownPreferences
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineAfterLoadNewText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTextSlotDiffRendererTablePrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineLoadTextAfterNewContentIsLoaded
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineMarkPatrolledLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineMarkPatrolledRCID
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineNewHeader
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineOldHeader
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineOldHeaderNoOldRev
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineRenderRevisionAddParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineRenderRevisionShowFinalPatrolLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiffPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiffPageMaybeShowMissingRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowEmptyOldContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineViewHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDiffTools
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDisplayOldSubtitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFilter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFilterMergedContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFormInitialText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFormPreloadText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeConflictDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeEditButtons
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeEditToolbar
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageCopyrightWarning
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetCheckboxesDefinition
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetDiffContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetPreviewContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageNoSuchSection
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageTosSummary
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__attemptSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__attemptSave_after
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__importFormData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showEditForm_fields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showEditForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showReadOnlyForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showStandardInputs_options
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailConfirmed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserCC
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserPermissionsErrors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserAuthorizeSend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserSendEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesListModifyBlockLineData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesListModifyLineData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesList__getLogText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onExemptFromAccountCreationThrottle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onExtensionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFetchChangesList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileDeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileTransformed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileUndeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileUpload
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFormatAutocomments
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGalleryGetModes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetAllBlockActions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetAutoPromoteGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetActionName
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetCacheVaryCookies
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetCanonicalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetContentModels
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetDefaultSortkey
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetDifferenceEngine
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetDoubleUnderscoreIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetExtendedMetadata
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetFullURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetHumanTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetInternalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetIP
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLangPreferredVariant
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLinkColours
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL__Article
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL__Internal
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLogTypesOnUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetMagicVariableIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetMetadataVersion
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetNewMessagesAlert
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetPreferences
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetRelativeTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetSlotDiffRenderer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserBlock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPermissionErrorAudit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserPermissionsErrors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserPermissionsErrorsExpensive
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGitViewers
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHistoryPageToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHistoryTools
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlCacheUpdaterAppendUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlCacheUpdaterVaryUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHTMLFileCache__useFileCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlPageLinkRendererBegin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlPageLinkRendererEnd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImageBeforeProduceHTML
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onImageOpenShowImageInlineBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageAfterImageLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageFileHistoryLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageFindFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageShowTOC
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImgAuthBeforeStream
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImgAuthModifyHeaders
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleLogItemXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandlePageXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleRevisionXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleContentXMLTag
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleToplevelXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleUnknownUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleUploadXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportLogInterwikiLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportSources
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInfoAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInitializeArticleMaybeRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInternalParseBeforeLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInterwikiLoadPrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInvalidateEmailComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIRCLineURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsFileCacheable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsTrustedProxy
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsUploadAllowedFromUrl
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsValidEmailAddr
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsValidPassword
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onJsonValidateSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageGetNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageGetTranslatedLanguageNames
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageSelector
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguage__getMessagesFileName
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerGenerateRollbackLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeExternalImage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeExternalLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeMediaLinkFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinksUpdate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinksUpdateComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onListDefinedTags
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoadExtensionSchemaUpdates
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onLocalFilePurgeThumbnails
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalFile__getHistory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalisationCacheRecache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalisationCacheRecacheFallback
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalUserCreated
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListGetExtraInputs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListShowLogExtract
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogException
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoginFormValidErrorMessages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogLine
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onLonelyPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMagicWordwgVariableIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceRefreshLinksInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceShellStart
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceUpdateAddParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMakeGlobalVariablesScript
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onManualLogEntryBeforePublish
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMarkPatrolled
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMarkPatrolledComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMediaWikiPerformAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMediaWikiServices
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCacheFetchOverrides
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCacheReplace
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCache__get
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMessagesPreLoad
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicGuessFromContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicImproveFromExtension
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetBlockErrorMessageKey
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onModifyExportQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMovePageCheckPermissions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMovePageIsValidMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMultiContentSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNamespaceIsMovable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNewDifferenceEngine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNewPagesLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOldChangesListRecentChangesLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOpenSearchUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOpportunisticLinksUpdate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOtherAutoblockLogLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOtherBlockLogLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageAfterGetHeadLinksArray
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageBeforeHTML
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageBodyAttributes
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageCheckLastModified
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageMakeCategoryLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageParserOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onPageContentLanguage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageContentSave
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onPageDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageDeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageDeletionDataUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageUndelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageUndeleteComplete
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryBeforeList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryPager__doBatchLookups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryPager__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageMoveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageMoveCompleting
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageRenderingHash
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageSaveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageViewUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserAfterParse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserAfterTidy
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserBeforeInternalParse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserBeforePreprocess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserCacheSaveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserClearState
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserCloned
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserFetchTemplateData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserFirstCallInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserGetVariableValueSwitch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserGetVariableValueTs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLimitReportFormat
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLimitReportPrepare
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLogLinterData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserMakeImageParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserModifyImageHTML
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onParserOptionsRegister
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserOutputPostCacheTransform
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onParserOutputStashForEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserPreSaveTransformComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserTestGlobals
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPasswordPoliciesForUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPerformRetroactiveAutoblock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPingLimiter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPlaceNewSection
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPostLoginRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesFormPreSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetIcon
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetLayout
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetLegend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefixSearchBackend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefixSearchExtractNamespace
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefsEmailAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__buildForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionFormAddFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__save
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__showLogExtract
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRandomPageQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRawPageViewBeforeOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRecentChangesPurgeRows
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRecentChange_save
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRedirectSpecialArticleRedirectParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRejectParserCacheValue
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserAbort
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserComplete
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserPreRename
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserSQL
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserWarning
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRequestContextCreateSkin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onResetPasswordExpiration
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionDataUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionFromEditComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionRecordInserted
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionUndeleted
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRollbackComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchableNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchAfterNoDirectMatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchDataForIndex
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchDataForIndex2
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatchBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatchComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchIndexFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultInitFromTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultProvideDescription
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultProvideThumbnail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultsAugment
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSecuritySensitiveOperationStatus
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSelfLinkBegin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSendWatchlistEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSessionCheckInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSessionMetadata
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSetupAfterCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShortPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShowMissingArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShowSearchHit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onShowSearchHitTitle
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSidebarBeforeOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSiteNoticeAfter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSiteNoticeBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinPageReadyConfig
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAddFooterLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterBottomScripts
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterPortlet
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinBuildSidebar
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinCopyrightFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinEditSectionLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinPreloadExistence
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinSubPageSubtitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinTemplateGetLanguageLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinTemplateNavigation__Universal
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSoftwareInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialBlockModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributionsBeforeMainOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributions__formatRow__flags
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributions__getForm__filters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialCreateAccountBenefits
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialExportGetExtraPages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersDefaultQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersFormatRow
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersHeaderForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialLogAddLogSearchRelations
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialMovepageAfterMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialMuteModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialNewpagesConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialNewPagesFilters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageAfterExecute
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageBeforeExecute
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageBeforeFormDisplay
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPage_initList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPasswordResetOnSubmit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPrefixIndexGetFormFilters
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPrefixIndexQuery
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialRandomGetRandomTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialRecentChangesPanel
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialResetTokensTokens
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchCreateLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchGoResult
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchNogomatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchPowerBox
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchProfileForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchProfiles
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResults
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResultsAppend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResultsPrepend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchSetupEngine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialStatsAddExtra
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialTrackingCategories__generateCatLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialTrackingCategories__preprocess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialUploadComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialVersionVersionUrl
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialWatchlistGetNonRevisionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTempUserCreatedRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTestCanonicalRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onThumbnailBeforeProduceHTML
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleExists
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleGetEditNotices
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleGetRestrictionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleIsAlwaysKnown
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleIsMovable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleMoveStarting
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleQuickPermissions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleReadWhitelist
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleSquidURLs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnblockUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnblockUserComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeleteForm__showHistory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeleteForm__showRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeletePageToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsAfterDatabaseSetup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsBeforeDatabaseTeardown
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnwatchArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnwatchArticleComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUpdateUserMailerFormattedPageStatus
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadCreateFromRequest
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadFormInitDescriptor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadFormSourceDescriptors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_BeforeProcessing
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_getInitialPageText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadStashFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadVerifyFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadVerifyUpload
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserAddGroup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserArrayFromResult
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserCan
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserCanSendEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserClearNewTalkNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserEditCountUpdate
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserEffectiveGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetAllRights
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetDefaultOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetEmailAuthenticationTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetLanguageObject
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserPrivilegedGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetReservedNames
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetRights
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetRightsRemove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGroupsChanged
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBlockedFrom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBlockedGlobally
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBot
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsEveryoneAllowed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsLocked
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoadAfterLoadFromSession
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoadDefaults
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoadUserOptions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoggedIn
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoginComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLogout
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLogoutComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerChangeReturnPath
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerSplitTo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerTransformContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerTransformMessage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserRemoveGroup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSaveUserOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSaveSettings
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSendConfirmationMail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSetEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSetEmailAuthenticationTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUsersPagerDoBatchLookups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserToolLinksEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUser__mailPasswordInternal
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onValidateExtendedMetadataCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWantedPages__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchArticleComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchedItemQueryServiceExtensions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchlistEditorBeforeFormRender
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchlistEditorBuildRemoveLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWebRequestPathInfoRouter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWebResponseSetCookie
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWfShellWikiCmd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWgQueryPages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWhatLinksHereProps
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiExporter__dumpStableQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiPageDeletionUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiPageFactory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onXmlDumpWriterOpenPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onXmlDumpWriterWriteRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace MediaWiki\HookContainer;
4
5use Article;
6use File;
7use JsonContent;
8use MailAddress;
9use ManualLogEntry;
10use MediaWiki\Context\IContextSource;
11use MediaWiki\Linker\LinkRenderer;
12use MediaWiki\Linker\LinkTarget;
13use MediaWiki\Mail\UserEmailContact;
14use MediaWiki\Page\PageIdentity;
15use MediaWiki\Page\ProperPageIdentity;
16use MediaWiki\Parser\Parser;
17use MediaWiki\Parser\ParserOutput;
18use MediaWiki\Permissions\Authority;
19use MediaWiki\RenameUser\RenameuserSQL;
20use MediaWiki\ResourceLoader as RL;
21use MediaWiki\Revision\RevisionRecord;
22use MediaWiki\Session\Session;
23use MediaWiki\SpecialPage\SpecialPage;
24use MediaWiki\Title\Title;
25use MediaWiki\User\UserIdentity;
26use ParserOptions;
27use Skin;
28use StatusValue;
29use Wikimedia\Rdbms\SelectQueryBuilder;
30
31/**
32 * This class provides an implementation of the core hook interfaces,
33 * forwarding hook calls to HookContainer for dispatch to extensions.
34 * It is intended for use within MediaWiki core only. Extensions that
35 * need a hook runner should create one for the hooks they need to run.
36 *
37 * To use it, create a new HookRunner object from a HookContainer obtained
38 * by dependency injection, or as a last resort, from the global service
39 * container. Then call the relevant method on the object:
40 *   ( new HookRunner( $hookContainer ) )->onSomeHook( $param );
41 *
42 * @internal
43 */
44class HookRunner implements
45    \MediaWiki\Actions\Hook\GetActionNameHook,
46    \MediaWiki\Auth\Hook\AuthManagerLoginAuthenticateAuditHook,
47    \MediaWiki\Auth\Hook\ExemptFromAccountCreationThrottleHook,
48    \MediaWiki\Auth\Hook\LocalUserCreatedHook,
49    \MediaWiki\Auth\Hook\ResetPasswordExpirationHook,
50    \MediaWiki\Auth\Hook\SecuritySensitiveOperationStatusHook,
51    \MediaWiki\Auth\Hook\UserLoggedInHook,
52    \MediaWiki\Block\Hook\AbortAutoblockHook,
53    \MediaWiki\Block\Hook\GetAllBlockActionsHook,
54    \MediaWiki\Block\Hook\GetUserBlockHook,
55    \MediaWiki\Block\Hook\PerformRetroactiveAutoblockHook,
56    \MediaWiki\Cache\Hook\BacklinkCacheGetConditionsHook,
57    \MediaWiki\Cache\Hook\BacklinkCacheGetPrefixHook,
58    \MediaWiki\Cache\Hook\HtmlCacheUpdaterAppendUrlsHook,
59    \MediaWiki\Cache\Hook\HtmlCacheUpdaterVaryUrlsHook,
60    \MediaWiki\Cache\Hook\HTMLFileCache__useFileCacheHook,
61    \MediaWiki\Cache\Hook\MessageCacheFetchOverridesHook,
62    \MediaWiki\Cache\Hook\MessageCacheReplaceHook,
63    \MediaWiki\Cache\Hook\MessageCache__getHook,
64    \MediaWiki\Cache\Hook\MessagesPreLoadHook,
65    \MediaWiki\Hook\TitleSquidURLsHook,
66    \MediaWiki\ChangeTags\Hook\ChangeTagAfterDeleteHook,
67    \MediaWiki\ChangeTags\Hook\ChangeTagCanCreateHook,
68    \MediaWiki\ChangeTags\Hook\ChangeTagCanDeleteHook,
69    \MediaWiki\ChangeTags\Hook\ChangeTagsAfterUpdateTagsHook,
70    \MediaWiki\ChangeTags\Hook\ChangeTagsAllowedAddHook,
71    \MediaWiki\ChangeTags\Hook\ChangeTagsListActiveHook,
72    \MediaWiki\ChangeTags\Hook\ListDefinedTagsHook,
73    \MediaWiki\Content\Hook\ContentAlterParserOutputHook,
74    \MediaWiki\Content\Hook\ContentGetParserOutputHook,
75    \MediaWiki\Content\Hook\ContentHandlerForModelIDHook,
76    \MediaWiki\Content\Hook\ContentModelCanBeUsedOnHook,
77    \MediaWiki\Content\Hook\ConvertContentHook,
78    \MediaWiki\Content\Hook\GetContentModelsHook,
79    \MediaWiki\Content\Hook\GetDifferenceEngineHook,
80    \MediaWiki\Content\Hook\GetSlotDiffRendererHook,
81    \MediaWiki\Content\Hook\JsonValidateSaveHook,
82    \MediaWiki\Content\Hook\PageContentLanguageHook,
83    \MediaWiki\Content\Hook\PlaceNewSectionHook,
84    \MediaWiki\Content\Hook\SearchDataForIndexHook,
85    \MediaWiki\Content\Hook\SearchDataForIndex2Hook,
86    \MediaWiki\Specials\Contribute\Hook\ContributeCardsHook,
87    \MediaWiki\Diff\Hook\AbortDiffCacheHook,
88    \MediaWiki\Diff\Hook\ArticleContentOnDiffHook,
89    \MediaWiki\Diff\Hook\DifferenceEngineAfterLoadNewTextHook,
90    \MediaWiki\Diff\Hook\TextSlotDiffRendererTablePrefixHook,
91    \MediaWiki\Diff\Hook\DifferenceEngineLoadTextAfterNewContentIsLoadedHook,
92    \MediaWiki\Diff\Hook\DifferenceEngineMarkPatrolledLinkHook,
93    \MediaWiki\Diff\Hook\DifferenceEngineMarkPatrolledRCIDHook,
94    \MediaWiki\Diff\Hook\DifferenceEngineNewHeaderHook,
95    \MediaWiki\Diff\Hook\DifferenceEngineOldHeaderHook,
96    \MediaWiki\Diff\Hook\DifferenceEngineOldHeaderNoOldRevHook,
97    \MediaWiki\Diff\Hook\DifferenceEngineRenderRevisionAddParserOutputHook,
98    \MediaWiki\Diff\Hook\DifferenceEngineRenderRevisionShowFinalPatrolLinkHook,
99    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffHook,
100    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffPageHook,
101    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffPageMaybeShowMissingRevisionHook,
102    \MediaWiki\Diff\Hook\DifferenceEngineShowEmptyOldContentHook,
103    \MediaWiki\Diff\Hook\DifferenceEngineViewHeaderHook,
104    \MediaWiki\Diff\Hook\DiffToolsHook,
105    \MediaWiki\Diff\Hook\NewDifferenceEngineHook,
106    \MediaWiki\Hook\AbortEmailNotificationHook,
107    \MediaWiki\Hook\AbortTalkPageEmailNotificationHook,
108    \MediaWiki\Hook\ActionBeforeFormDisplayHook,
109    \MediaWiki\Hook\ActionModifyFormFieldsHook,
110    \MediaWiki\Hook\AddNewAccountHook,
111    \MediaWiki\Output\Hook\AfterBuildFeedLinksHook,
112    \MediaWiki\Output\Hook\AfterFinalPageOutputHook,
113    \MediaWiki\Hook\AfterImportPageHook,
114    \MediaWiki\Hook\AfterParserFetchFileAndTitleHook,
115    \MediaWiki\Hook\AlternateEditHook,
116    \MediaWiki\Hook\AlternateEditPreviewHook,
117    \MediaWiki\Hook\AlternateUserMailerHook,
118    \MediaWiki\Hook\AncientPagesQueryHook,
119    \MediaWiki\Hook\ApiBeforeMainHook,
120    \MediaWiki\Hook\ArticleMergeCompleteHook,
121    \MediaWiki\Hook\ArticleRevisionVisibilitySetHook,
122    \MediaWiki\Hook\ArticleUpdateBeforeRedirectHook,
123    \MediaWiki\Hook\BadImageHook,
124    \MediaWiki\Hook\BeforeInitializeHook,
125    \MediaWiki\Output\Hook\BeforePageDisplayHook,
126    \MediaWiki\Output\Hook\BeforePageRedirectHook,
127    \MediaWiki\Hook\BeforeParserFetchFileAndTitleHook,
128    \MediaWiki\Hook\BeforeParserFetchTemplateRevisionRecordHook,
129    \MediaWiki\Hook\BeforeWelcomeCreationHook,
130    \MediaWiki\Hook\BitmapHandlerCheckImageAreaHook,
131    \MediaWiki\Hook\BitmapHandlerTransformHook,
132    \MediaWiki\Hook\BlockIpCompleteHook,
133    \MediaWiki\Hook\BlockIpHook,
134    \MediaWiki\Hook\BookInformationHook,
135    \MediaWiki\Hook\CanonicalNamespacesHook,
136    \MediaWiki\Hook\CategoryViewer__doCategoryQueryHook,
137    \MediaWiki\Hook\CategoryViewer__generateLinkHook,
138    \MediaWiki\Hook\ChangesListInitRowsHook,
139    \MediaWiki\Hook\ChangesListInsertArticleLinkHook,
140    \MediaWiki\Hook\ChangeUserGroupsHook,
141    \MediaWiki\Hook\Collation__factoryHook,
142    \MediaWiki\Hook\ContentSecurityPolicyDefaultSourceHook,
143    \MediaWiki\Hook\ContentSecurityPolicyDirectivesHook,
144    \MediaWiki\Hook\ContentSecurityPolicyScriptSourceHook,
145    \MediaWiki\Hook\ContribsPager__getQueryInfoHook,
146    \MediaWiki\Hook\ContribsPager__reallyDoQueryHook,
147    \MediaWiki\Hook\ContributionsLineEndingHook,
148    \MediaWiki\Hook\ContributionsToolLinksHook,
149    \MediaWiki\Hook\CustomEditorHook,
150    \MediaWiki\Hook\DeletedContribsPager__reallyDoQueryHook,
151    \MediaWiki\Hook\DeletedContributionsLineEndingHook,
152    \MediaWiki\Hook\DeleteUnknownPreferencesHook,
153    \MediaWiki\Hook\EditFilterHook,
154    \MediaWiki\Hook\EditFilterMergedContentHook,
155    \MediaWiki\Hook\EditFormInitialTextHook,
156    \MediaWiki\Hook\EditFormPreloadTextHook,
157    \MediaWiki\Hook\EditPageBeforeConflictDiffHook,
158    \MediaWiki\Hook\EditPageBeforeEditButtonsHook,
159    \MediaWiki\Hook\EditPageBeforeEditToolbarHook,
160    \MediaWiki\Hook\EditPageCopyrightWarningHook,
161    \MediaWiki\Hook\EditPageGetCheckboxesDefinitionHook,
162    \MediaWiki\Hook\EditPageGetDiffContentHook,
163    \MediaWiki\Hook\EditPageGetPreviewContentHook,
164    \MediaWiki\Hook\EditPageNoSuchSectionHook,
165    \MediaWiki\Hook\EditPageTosSummaryHook,
166    \MediaWiki\Hook\EditPage__attemptSaveHook,
167    \MediaWiki\Hook\EditPage__attemptSave_afterHook,
168    \MediaWiki\Hook\EditPage__importFormDataHook,
169    \MediaWiki\Hook\EditPage__showEditForm_fieldsHook,
170    \MediaWiki\Hook\EditPage__showEditForm_initialHook,
171    \MediaWiki\Hook\EditPage__showReadOnlyForm_initialHook,
172    \MediaWiki\Hook\EditPage__showStandardInputs_optionsHook,
173    \MediaWiki\Hook\EmailUserCCHook,
174    \MediaWiki\Hook\EmailUserCompleteHook,
175    \MediaWiki\Hook\EmailUserFormHook,
176    \MediaWiki\Hook\EmailUserHook,
177    \MediaWiki\Hook\EmailUserPermissionsErrorsHook,
178    \MediaWiki\Mail\Hook\EmailUserAuthorizeSendHook,
179    \MediaWiki\Mail\Hook\EmailUserSendEmailHook,
180    \MediaWiki\Hook\EnhancedChangesListModifyBlockLineDataHook,
181    \MediaWiki\Hook\EnhancedChangesListModifyLineDataHook,
182    \MediaWiki\Hook\EnhancedChangesList__getLogTextHook,
183    \MediaWiki\Hook\ExtensionTypesHook,
184    \MediaWiki\Hook\FetchChangesListHook,
185    \MediaWiki\Hook\FileDeleteCompleteHook,
186    \MediaWiki\Hook\FileTransformedHook,
187    \MediaWiki\Hook\FileUndeleteCompleteHook,
188    \MediaWiki\Hook\FileUploadHook,
189    \MediaWiki\Hook\FormatAutocommentsHook,
190    \MediaWiki\Hook\GalleryGetModesHook,
191    \MediaWiki\Hook\GetBlockErrorMessageKeyHook,
192    \MediaWiki\Output\Hook\GetCacheVaryCookiesHook,
193    \MediaWiki\Hook\GetCanonicalURLHook,
194    \MediaWiki\Hook\GetDefaultSortkeyHook,
195    \MediaWiki\Hook\GetDoubleUnderscoreIDsHook,
196    \MediaWiki\Hook\GetExtendedMetadataHook,
197    \MediaWiki\Hook\GetFullURLHook,
198    \MediaWiki\Hook\GetHumanTimestampHook,
199    \MediaWiki\Hook\GetInternalURLHook,
200    \MediaWiki\Hook\GetIPHook,
201    \MediaWiki\Hook\GetLangPreferredVariantHook,
202    \MediaWiki\Hook\GetLinkColoursHook,
203    \MediaWiki\Hook\GetLocalURLHook,
204    \MediaWiki\Hook\GetLocalURL__ArticleHook,
205    \MediaWiki\Hook\GetLocalURL__InternalHook,
206    \MediaWiki\Hook\GetLogTypesOnUserHook,
207    \MediaWiki\Hook\GetMagicVariableIDsHook,
208    \MediaWiki\Hook\GetMetadataVersionHook,
209    \MediaWiki\Hook\GetNewMessagesAlertHook,
210    \MediaWiki\Hook\GetRelativeTimestampHook,
211    \MediaWiki\Hook\GitViewersHook,
212    \MediaWiki\Hook\HistoryPageToolLinksHook,
213    \MediaWiki\Hook\HistoryToolsHook,
214    \MediaWiki\Hook\ImageBeforeProduceHTMLHook,
215    \MediaWiki\Hook\ImgAuthBeforeStreamHook,
216    \MediaWiki\Hook\ImgAuthModifyHeadersHook,
217    \MediaWiki\Hook\ImportHandleContentXMLTagHook,
218    \MediaWiki\Hook\ImportHandleLogItemXMLTagHook,
219    \MediaWiki\Hook\ImportHandlePageXMLTagHook,
220    \MediaWiki\Hook\ImportHandleRevisionXMLTagHook,
221    \MediaWiki\Hook\ImportHandleToplevelXMLTagHook,
222    \MediaWiki\Hook\ImportHandleUnknownUserHook,
223    \MediaWiki\Hook\ImportHandleUploadXMLTagHook,
224    \MediaWiki\Hook\ImportLogInterwikiLinkHook,
225    \MediaWiki\Hook\ImportSourcesHook,
226    \MediaWiki\Hook\InfoActionHook,
227    \MediaWiki\Hook\InitializeArticleMaybeRedirectHook,
228    \MediaWiki\Hook\InternalParseBeforeLinksHook,
229    \MediaWiki\Hook\IRCLineURLHook,
230    \MediaWiki\Hook\IsTrustedProxyHook,
231    \MediaWiki\Hook\IsUploadAllowedFromUrlHook,
232    \MediaWiki\Hook\IsValidEmailAddrHook,
233    \MediaWiki\Hook\LanguageGetNamespacesHook,
234    \MediaWiki\Output\Hook\LanguageLinksHook,
235    \MediaWiki\Hook\LanguageSelectorHook,
236    \MediaWiki\Hook\LinkerMakeExternalImageHook,
237    \MediaWiki\Hook\LinkerMakeExternalLinkHook,
238    \MediaWiki\Hook\LinkerMakeMediaLinkFileHook,
239    \MediaWiki\Hook\LinksUpdateCompleteHook,
240    \MediaWiki\Hook\LinksUpdateHook,
241    \MediaWiki\Hook\LocalFilePurgeThumbnailsHook,
242    \MediaWiki\Hook\LocalFile__getHistoryHook,
243    \MediaWiki\Hook\LocalisationCacheRecacheFallbackHook,
244    \MediaWiki\Hook\LocalisationCacheRecacheHook,
245    \MediaWiki\Hook\LogEventsListGetExtraInputsHook,
246    \MediaWiki\Hook\LogEventsListLineEndingHook,
247    \MediaWiki\Hook\LogEventsListShowLogExtractHook,
248    \MediaWiki\Hook\LogExceptionHook,
249    \MediaWiki\Hook\LoginFormValidErrorMessagesHook,
250    \MediaWiki\Hook\LogLineHook,
251    \MediaWiki\Hook\LonelyPagesQueryHook,
252    \MediaWiki\Hook\MagicWordwgVariableIDsHook,
253    \MediaWiki\Hook\MaintenanceRefreshLinksInitHook,
254    \MediaWiki\Hook\MaintenanceShellStartHook,
255    \MediaWiki\Hook\MaintenanceUpdateAddParamsHook,
256    \MediaWiki\Output\Hook\MakeGlobalVariablesScriptHook,
257    \MediaWiki\Hook\ManualLogEntryBeforePublishHook,
258    \MediaWiki\Hook\MarkPatrolledCompleteHook,
259    \MediaWiki\Hook\MarkPatrolledHook,
260    \MediaWiki\Hook\MediaWikiPerformActionHook,
261    \MediaWiki\Hook\MediaWikiServicesHook,
262    \MediaWiki\Hook\MimeMagicGuessFromContentHook,
263    \MediaWiki\Hook\MimeMagicImproveFromExtensionHook,
264    \MediaWiki\Hook\MimeMagicInitHook,
265    \MediaWiki\Hook\ModifyExportQueryHook,
266    \MediaWiki\Hook\MovePageCheckPermissionsHook,
267    \MediaWiki\Hook\MovePageIsValidMoveHook,
268    \MediaWiki\Hook\NamespaceIsMovableHook,
269    \MediaWiki\Hook\NewPagesLineEndingHook,
270    \MediaWiki\Hook\OldChangesListRecentChangesLineHook,
271    \MediaWiki\Hook\OpenSearchUrlsHook,
272    \MediaWiki\Hook\OtherAutoblockLogLinkHook,
273    \MediaWiki\Hook\OtherBlockLogLinkHook,
274    \MediaWiki\Output\Hook\OutputPageAfterGetHeadLinksArrayHook,
275    \MediaWiki\Output\Hook\OutputPageBeforeHTMLHook,
276    \MediaWiki\Output\Hook\OutputPageBodyAttributesHook,
277    \MediaWiki\Output\Hook\OutputPageCheckLastModifiedHook,
278    \MediaWiki\Output\Hook\OutputPageMakeCategoryLinksHook,
279    \MediaWiki\Output\Hook\OutputPageParserOutputHook,
280    \MediaWiki\Hook\PageHistoryBeforeListHook,
281    \MediaWiki\Hook\PageHistoryLineEndingHook,
282    \MediaWiki\Hook\PageHistoryPager__doBatchLookupsHook,
283    \MediaWiki\Hook\PageHistoryPager__getQueryInfoHook,
284    \MediaWiki\Hook\PageMoveCompleteHook,
285    \MediaWiki\Hook\PageMoveCompletingHook,
286    \MediaWiki\Hook\PageRenderingHashHook,
287    \MediaWiki\Hook\ParserAfterParseHook,
288    \MediaWiki\Hook\ParserAfterTidyHook,
289    \MediaWiki\Hook\ParserBeforeInternalParseHook,
290    \MediaWiki\Hook\ParserBeforePreprocessHook,
291    \MediaWiki\Hook\ParserCacheSaveCompleteHook,
292    \MediaWiki\Hook\ParserClearStateHook,
293    \MediaWiki\Hook\ParserClonedHook,
294    \MediaWiki\Hook\ParserFetchTemplateDataHook,
295    \MediaWiki\Hook\ParserFirstCallInitHook,
296    \MediaWiki\Hook\ParserGetVariableValueSwitchHook,
297    \MediaWiki\Hook\ParserGetVariableValueTsHook,
298    \MediaWiki\Hook\ParserLimitReportFormatHook,
299    \MediaWiki\Hook\ParserLimitReportPrepareHook,
300    \MediaWiki\Hook\ParserLogLinterDataHook,
301    \MediaWiki\Hook\ParserMakeImageParamsHook,
302    \MediaWiki\Hook\ParserModifyImageHTMLHook,
303    \MediaWiki\Hook\ParserOptionsRegisterHook,
304    \MediaWiki\Hook\ParserOutputPostCacheTransformHook,
305    \MediaWiki\Hook\ParserPreSaveTransformCompleteHook,
306    \MediaWiki\Hook\ParserTestGlobalsHook,
307    \MediaWiki\Hook\PasswordPoliciesForUserHook,
308    \MediaWiki\Hook\PostLoginRedirectHook,
309    \MediaWiki\Hook\PreferencesGetIconHook,
310    \MediaWiki\Hook\PreferencesGetLayoutHook,
311    \MediaWiki\Hook\PreferencesGetLegendHook,
312    \MediaWiki\Hook\PrefsEmailAuditHook,
313    \MediaWiki\Hook\ProtectionForm__buildFormHook,
314    \MediaWiki\Hook\ProtectionForm__saveHook,
315    \MediaWiki\Hook\ProtectionForm__showLogExtractHook,
316    \MediaWiki\Hook\ProtectionFormAddFormFieldsHook,
317    \MediaWiki\Hook\RandomPageQueryHook,
318    \MediaWiki\Hook\RawPageViewBeforeOutputHook,
319    \MediaWiki\Hook\RecentChangesPurgeRowsHook,
320    \MediaWiki\Hook\RecentChange_saveHook,
321    \MediaWiki\Hook\RejectParserCacheValueHook,
322    \MediaWiki\Hook\RequestContextCreateSkinHook,
323    \MediaWiki\Hook\SelfLinkBeginHook,
324    \MediaWiki\Hook\SendWatchlistEmailNotificationHook,
325    \MediaWiki\Hook\SetupAfterCacheHook,
326    \MediaWiki\Hook\ShortPagesQueryHook,
327    \MediaWiki\Hook\SidebarBeforeOutputHook,
328    \MediaWiki\Hook\SiteNoticeAfterHook,
329    \MediaWiki\Hook\SiteNoticeBeforeHook,
330    \MediaWiki\Hook\SkinAddFooterLinksHook,
331    \MediaWiki\Hook\SkinAfterBottomScriptsHook,
332    \MediaWiki\Hook\SkinAfterContentHook,
333    \MediaWiki\Hook\SkinBuildSidebarHook,
334    \MediaWiki\Hook\SkinCopyrightFooterHook,
335    \MediaWiki\Hook\SkinEditSectionLinksHook,
336    \MediaWiki\Hook\SkinPreloadExistenceHook,
337    \MediaWiki\Hook\SkinSubPageSubtitleHook,
338    \MediaWiki\Hook\SkinTemplateGetLanguageLinkHook,
339    \MediaWiki\Hook\SkinTemplateNavigation__UniversalHook,
340    \MediaWiki\Hook\SoftwareInfoHook,
341    \MediaWiki\Hook\SpecialBlockModifyFormFieldsHook,
342    \MediaWiki\Hook\SpecialContributionsBeforeMainOutputHook,
343    \MediaWiki\Hook\SpecialContributions__formatRow__flagsHook,
344    \MediaWiki\Hook\SpecialCreateAccountBenefitsHook,
345    \MediaWiki\Hook\SpecialExportGetExtraPagesHook,
346    \MediaWiki\Hook\SpecialContributions__getForm__filtersHook,
347    \MediaWiki\Hook\SpecialListusersDefaultQueryHook,
348    \MediaWiki\Hook\SpecialListusersFormatRowHook,
349    \MediaWiki\Hook\SpecialListusersHeaderFormHook,
350    \MediaWiki\Hook\SpecialListusersHeaderHook,
351    \MediaWiki\Hook\SpecialListusersQueryInfoHook,
352    \MediaWiki\Hook\SpecialLogAddLogSearchRelationsHook,
353    \MediaWiki\Hook\SpecialMovepageAfterMoveHook,
354    \MediaWiki\Hook\SpecialMuteModifyFormFieldsHook,
355    \MediaWiki\Hook\SpecialNewpagesConditionsHook,
356    \MediaWiki\Hook\SpecialNewPagesFiltersHook,
357    \MediaWiki\Hook\SpecialPrefixIndexGetFormFiltersHook,
358    \MediaWiki\Hook\SpecialPrefixIndexQueryHook,
359    \MediaWiki\Hook\SpecialRandomGetRandomTitleHook,
360    \MediaWiki\Hook\SpecialRecentChangesPanelHook,
361    \MediaWiki\Hook\SpecialResetTokensTokensHook,
362    \MediaWiki\Hook\SpecialSearchCreateLinkHook,
363    \MediaWiki\Hook\SpecialSearchGoResultHook,
364    \MediaWiki\Hook\SpecialSearchNogomatchHook,
365    \MediaWiki\Hook\SpecialSearchProfilesHook,
366    \MediaWiki\Hook\SpecialSearchResultsAppendHook,
367    \MediaWiki\Hook\SpecialSearchResultsHook,
368    \MediaWiki\Hook\SpecialSearchResultsPrependHook,
369    \MediaWiki\Hook\SpecialSearchSetupEngineHook,
370    \MediaWiki\Hook\SpecialStatsAddExtraHook,
371    \MediaWiki\Hook\SpecialTrackingCategories__generateCatLinkHook,
372    \MediaWiki\Hook\SpecialTrackingCategories__preprocessHook,
373    \MediaWiki\Hook\SpecialUploadCompleteHook,
374    \MediaWiki\Hook\SpecialVersionVersionUrlHook,
375    \MediaWiki\Hook\SpecialWatchlistGetNonRevisionTypesHook,
376    \MediaWiki\Hook\TestCanonicalRedirectHook,
377    \MediaWiki\Hook\ThumbnailBeforeProduceHTMLHook,
378    \MediaWiki\Hook\TempUserCreatedRedirectHook,
379    \MediaWiki\Hook\TitleExistsHook,
380    \MediaWiki\Hook\TitleGetEditNoticesHook,
381    \MediaWiki\Hook\TitleGetRestrictionTypesHook,
382    \MediaWiki\Hook\TitleIsAlwaysKnownHook,
383    \MediaWiki\Hook\TitleIsMovableHook,
384    \MediaWiki\Hook\TitleMoveHook,
385    \MediaWiki\Hook\TitleMoveStartingHook,
386    \MediaWiki\Hook\UnblockUserCompleteHook,
387    \MediaWiki\Hook\UnblockUserHook,
388    \MediaWiki\Hook\UndeleteForm__showHistoryHook,
389    \MediaWiki\Hook\UndeleteForm__showRevisionHook,
390    \MediaWiki\Hook\UndeletePageToolLinksHook,
391    \MediaWiki\Hook\UnitTestsAfterDatabaseSetupHook,
392    \MediaWiki\Hook\UnitTestsBeforeDatabaseTeardownHook,
393    \MediaWiki\Hook\UnitTestsListHook,
394    \MediaWiki\Hook\UnwatchArticleCompleteHook,
395    \MediaWiki\Hook\UnwatchArticleHook,
396    \MediaWiki\Hook\UpdateUserMailerFormattedPageStatusHook,
397    \MediaWiki\Hook\UploadCompleteHook,
398    \MediaWiki\Hook\UploadCreateFromRequestHook,
399    \MediaWiki\Hook\UploadFormInitDescriptorHook,
400    \MediaWiki\Hook\UploadFormSourceDescriptorsHook,
401    \MediaWiki\Hook\UploadForm_BeforeProcessingHook,
402    \MediaWiki\Hook\UploadForm_getInitialPageTextHook,
403    \MediaWiki\Hook\UploadForm_initialHook,
404    \MediaWiki\Hook\UploadStashFileHook,
405    \MediaWiki\Hook\UploadVerifyFileHook,
406    \MediaWiki\Hook\UploadVerifyUploadHook,
407    \MediaWiki\Hook\UserEditCountUpdateHook,
408    \MediaWiki\Hook\UserGetLanguageObjectHook,
409    \MediaWiki\Hook\UserLoginCompleteHook,
410    \MediaWiki\Hook\UserLogoutCompleteHook,
411    \MediaWiki\Hook\UserMailerChangeReturnPathHook,
412    \MediaWiki\Hook\UserMailerSplitToHook,
413    \MediaWiki\Hook\UserMailerTransformContentHook,
414    \MediaWiki\Hook\UserMailerTransformMessageHook,
415    \MediaWiki\Hook\UsersPagerDoBatchLookupsHook,
416    \MediaWiki\Hook\UserToolLinksEditHook,
417    \MediaWiki\Hook\ValidateExtendedMetadataCacheHook,
418    \MediaWiki\Hook\WantedPages__getQueryInfoHook,
419    \MediaWiki\Hook\WatchArticleCompleteHook,
420    \MediaWiki\Hook\WatchArticleHook,
421    \MediaWiki\Hook\WatchedItemQueryServiceExtensionsHook,
422    \MediaWiki\Hook\WatchlistEditorBeforeFormRenderHook,
423    \MediaWiki\Hook\WatchlistEditorBuildRemoveLineHook,
424    \MediaWiki\Hook\WebRequestPathInfoRouterHook,
425    \MediaWiki\Hook\WebResponseSetCookieHook,
426    \MediaWiki\Hook\WhatLinksHerePropsHook,
427    \MediaWiki\Hook\WikiExporter__dumpStableQueryHook,
428    \MediaWiki\Hook\XmlDumpWriterOpenPageHook,
429    \MediaWiki\Hook\XmlDumpWriterWriteRevisionHook,
430    \MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook,
431    \MediaWiki\Interwiki\Hook\InterwikiLoadPrefixHook,
432    \MediaWiki\Languages\Hook\LanguageGetTranslatedLanguageNamesHook,
433    \MediaWiki\Languages\Hook\Language__getMessagesFileNameHook,
434    \MediaWiki\Linker\Hook\LinkerGenerateRollbackLinkHook,
435    \MediaWiki\Linker\Hook\HtmlPageLinkRendererBeginHook,
436    \MediaWiki\Linker\Hook\HtmlPageLinkRendererEndHook,
437    \MediaWiki\Page\Hook\ArticleConfirmDeleteHook,
438    \MediaWiki\Page\Hook\ArticleDeleteAfterSuccessHook,
439    \MediaWiki\Page\Hook\ArticleDeleteCompleteHook,
440    \MediaWiki\Page\Hook\ArticleDeleteHook,
441    \MediaWiki\Page\Hook\ArticleFromTitleHook,
442    \MediaWiki\Page\Hook\ArticlePageDataAfterHook,
443    \MediaWiki\Page\Hook\ArticlePageDataBeforeHook,
444    \MediaWiki\Page\Hook\ArticleParserOptionsHook,
445    \MediaWiki\Page\Hook\ArticleProtectCompleteHook,
446    \MediaWiki\Page\Hook\ArticleProtectHook,
447    \MediaWiki\Page\Hook\ArticlePurgeHook,
448    \MediaWiki\Page\Hook\ArticleRevisionViewCustomHook,
449    \MediaWiki\Page\Hook\ArticleShowPatrolFooterHook,
450    \MediaWiki\Page\Hook\ArticleUndeleteHook,
451    \MediaWiki\Page\Hook\ArticleViewFooterHook,
452    \MediaWiki\Page\Hook\ArticleViewHeaderHook,
453    \MediaWiki\Page\Hook\ArticleViewRedirectHook,
454    \MediaWiki\Page\Hook\Article__MissingArticleConditionsHook,
455    \MediaWiki\Page\Hook\BeforeDisplayNoArticleTextHook,
456    \MediaWiki\Page\Hook\CategoryAfterPageAddedHook,
457    \MediaWiki\Page\Hook\CategoryAfterPageRemovedHook,
458    \MediaWiki\Page\Hook\CategoryPageViewHook,
459    \MediaWiki\Page\Hook\DisplayOldSubtitleHook,
460    \MediaWiki\Page\Hook\ImageOpenShowImageInlineBeforeHook,
461    \MediaWiki\Page\Hook\ImagePageAfterImageLinksHook,
462    \MediaWiki\Page\Hook\ImagePageFileHistoryLineHook,
463    \MediaWiki\Page\Hook\ImagePageFindFileHook,
464    \MediaWiki\Page\Hook\ImagePageShowTOCHook,
465    \MediaWiki\Page\Hook\IsFileCacheableHook,
466    \MediaWiki\Page\Hook\OpportunisticLinksUpdateHook,
467    \MediaWiki\Page\Hook\PageDeleteCompleteHook,
468    \MediaWiki\Page\Hook\PageDeleteHook,
469    \MediaWiki\Page\Hook\PageDeletionDataUpdatesHook,
470    \MediaWiki\Page\Hook\PageUndeleteCompleteHook,
471    \MediaWiki\Page\Hook\PageUndeleteHook,
472    \MediaWiki\Page\Hook\PageViewUpdatesHook,
473    \MediaWiki\Page\Hook\RevisionFromEditCompleteHook,
474    \MediaWiki\Page\Hook\RevisionUndeletedHook,
475    \MediaWiki\Page\Hook\RollbackCompleteHook,
476    \MediaWiki\Page\Hook\ShowMissingArticleHook,
477    \MediaWiki\Page\Hook\WikiPageDeletionUpdatesHook,
478    \MediaWiki\Page\Hook\WikiPageFactoryHook,
479    \MediaWiki\Permissions\Hook\PermissionErrorAuditHook,
480    \MediaWiki\Permissions\Hook\GetUserPermissionsErrorsExpensiveHook,
481    \MediaWiki\Permissions\Hook\GetUserPermissionsErrorsHook,
482    \MediaWiki\Permissions\Hook\TitleQuickPermissionsHook,
483    \MediaWiki\Permissions\Hook\TitleReadWhitelistHook,
484    \MediaWiki\Permissions\Hook\UserCanHook,
485    \MediaWiki\Permissions\Hook\UserGetAllRightsHook,
486    \MediaWiki\Permissions\Hook\UserGetRightsHook,
487    \MediaWiki\Permissions\Hook\UserGetRightsRemoveHook,
488    \MediaWiki\Permissions\Hook\UserIsBlockedFromHook,
489    \MediaWiki\Permissions\Hook\UserIsEveryoneAllowedHook,
490    \MediaWiki\Preferences\Hook\GetPreferencesHook,
491    \MediaWiki\Preferences\Hook\PreferencesFormPreSaveHook,
492    \MediaWiki\RenameUser\Hook\RenameUserAbortHook,
493    \MediaWiki\RenameUser\Hook\RenameUserCompleteHook,
494    \MediaWiki\RenameUser\Hook\RenameUserPreRenameHook,
495    \MediaWiki\RenameUser\Hook\RenameUserSQLHook,
496    \MediaWiki\RenameUser\Hook\RenameUserWarningHook,
497    \MediaWiki\Rest\Hook\SearchResultProvideDescriptionHook,
498    \MediaWiki\Revision\Hook\ContentHandlerDefaultModelForHook,
499    \MediaWiki\Revision\Hook\RevisionRecordInsertedHook,
500    \MediaWiki\Search\Hook\PrefixSearchBackendHook,
501    \MediaWiki\Search\Hook\PrefixSearchExtractNamespaceHook,
502    \MediaWiki\Search\Hook\SearchableNamespacesHook,
503    \MediaWiki\Search\Hook\SearchAfterNoDirectMatchHook,
504    \MediaWiki\Search\Hook\SearchGetNearMatchBeforeHook,
505    \MediaWiki\Search\Hook\SearchGetNearMatchCompleteHook,
506    \MediaWiki\Search\Hook\SearchGetNearMatchHook,
507    \MediaWiki\Search\Hook\SearchIndexFieldsHook,
508    \MediaWiki\Search\Hook\SearchResultInitFromTitleHook,
509    \MediaWiki\Search\Hook\SearchResultProvideThumbnailHook,
510    \MediaWiki\Search\Hook\SearchResultsAugmentHook,
511    \MediaWiki\Search\Hook\ShowSearchHitHook,
512    \MediaWiki\Search\Hook\ShowSearchHitTitleHook,
513    \MediaWiki\Search\Hook\SpecialSearchPowerBoxHook,
514    \MediaWiki\Search\Hook\SpecialSearchProfileFormHook,
515    \MediaWiki\Session\Hook\SessionCheckInfoHook,
516    \MediaWiki\Session\Hook\SessionMetadataHook,
517    \MediaWiki\Shell\Hook\WfShellWikiCmdHook,
518    \MediaWiki\Skins\Hook\SkinAfterPortletHook,
519    \MediaWiki\Skins\Hook\SkinPageReadyConfigHook,
520    \MediaWiki\SpecialPage\Hook\AuthChangeFormFieldsHook,
521    \MediaWiki\SpecialPage\Hook\ChangeAuthenticationDataAuditHook,
522    \MediaWiki\SpecialPage\Hook\ChangesListSpecialPageQueryHook,
523    \MediaWiki\SpecialPage\Hook\ChangesListSpecialPageStructuredFiltersHook,
524    \MediaWiki\SpecialPage\Hook\RedirectSpecialArticleRedirectParamsHook,
525    \MediaWiki\SpecialPage\Hook\SpecialPageAfterExecuteHook,
526    \MediaWiki\SpecialPage\Hook\SpecialPageBeforeExecuteHook,
527    \MediaWiki\SpecialPage\Hook\SpecialPageBeforeFormDisplayHook,
528    \MediaWiki\SpecialPage\Hook\SpecialPage_initListHook,
529    \MediaWiki\SpecialPage\Hook\WgQueryPagesHook,
530    \MediaWiki\Storage\Hook\ArticleEditUpdateNewTalkHook,
531    \MediaWiki\Storage\Hook\ArticlePrepareTextForEditHook,
532    \MediaWiki\Storage\Hook\BeforeRevertedTagUpdateHook,
533    \MediaWiki\Storage\Hook\MultiContentSaveHook,
534    \MediaWiki\Storage\Hook\PageContentSaveHook,
535    \MediaWiki\Storage\Hook\PageSaveCompleteHook,
536    \MediaWiki\Storage\Hook\ParserOutputStashForEditHook,
537    \MediaWiki\Storage\Hook\RevisionDataUpdatesHook,
538    \MediaWiki\User\Hook\AutopromoteConditionHook,
539    \MediaWiki\User\Hook\ConfirmEmailCompleteHook,
540    \MediaWiki\User\Hook\EmailConfirmedHook,
541    \MediaWiki\User\Hook\GetAutoPromoteGroupsHook,
542    \MediaWiki\User\Hook\InvalidateEmailCompleteHook,
543    \MediaWiki\User\Hook\IsValidPasswordHook,
544    \MediaWiki\User\Hook\PingLimiterHook,
545    \MediaWiki\User\Hook\SpecialPasswordResetOnSubmitHook,
546    \MediaWiki\User\Hook\UserAddGroupHook,
547    \MediaWiki\User\Hook\UserArrayFromResultHook,
548    \MediaWiki\User\Hook\UserCanSendEmailHook,
549    \MediaWiki\User\Hook\UserClearNewTalkNotificationHook,
550    \MediaWiki\User\Hook\UserEffectiveGroupsHook,
551    \MediaWiki\User\Hook\UserGetDefaultOptionsHook,
552    \MediaWiki\User\Hook\UserGetEmailAuthenticationTimestampHook,
553    \MediaWiki\User\Hook\UserGetEmailHook,
554    \MediaWiki\User\Hook\UserGetReservedNamesHook,
555    \MediaWiki\User\Hook\UserGroupsChangedHook,
556    \MediaWiki\User\Hook\UserIsBlockedGloballyHook,
557    \MediaWiki\User\Hook\UserIsBotHook,
558    \MediaWiki\User\Hook\UserIsLockedHook,
559    \MediaWiki\User\Hook\UserLoadAfterLoadFromSessionHook,
560    \MediaWiki\User\Hook\UserLoadDefaultsHook,
561    \MediaWiki\User\Hook\UserLogoutHook,
562    \MediaWiki\User\Hook\UserPrivilegedGroupsHook,
563    \MediaWiki\User\Hook\UserRemoveGroupHook,
564    \MediaWiki\User\Hook\UserSaveSettingsHook,
565    \MediaWiki\User\Hook\UserSendConfirmationMailHook,
566    \MediaWiki\User\Hook\UserSetEmailAuthenticationTimestampHook,
567    \MediaWiki\User\Hook\UserSetEmailHook,
568    \MediaWiki\User\Hook\User__mailPasswordInternalHook,
569    \MediaWiki\User\Options\Hook\LoadUserOptionsHook,
570    \MediaWiki\User\Options\Hook\SaveUserOptionsHook
571{
572    /** @var HookContainer */
573    private $container;
574
575    public function __construct( HookContainer $container ) {
576        $this->container = $container;
577    }
578
579    public function onAbortAutoblock( $autoblockip, $block ) {
580        return $this->container->run(
581            'AbortAutoblock',
582            [ $autoblockip, $block ]
583        );
584    }
585
586    public function onAbortDiffCache( $diffEngine ) {
587        return $this->container->run(
588            'AbortDiffCache',
589            [ $diffEngine ]
590        );
591    }
592
593    public function onAbortEmailNotification( $editor, $title, $rc ) {
594        return $this->container->run(
595            'AbortEmailNotification',
596            [ $editor, $title, $rc ]
597        );
598    }
599
600    public function onAbortTalkPageEmailNotification( $targetUser, $title ) {
601        return $this->container->run(
602            'AbortTalkPageEmailNotification',
603            [ $targetUser, $title ]
604        );
605    }
606
607    public function onActionBeforeFormDisplay( $name, $form, $article ) {
608        return $this->container->run(
609            'ActionBeforeFormDisplay',
610            [ $name, $form, $article ]
611        );
612    }
613
614    public function onActionModifyFormFields( $name, &$fields, $article ) {
615        return $this->container->run(
616            'ActionModifyFormFields',
617            [ $name, &$fields, $article ]
618        );
619    }
620
621    public function onAddNewAccount( $user, $byEmail ) {
622        return $this->container->run(
623            'AddNewAccount',
624            [ $user, $byEmail ]
625        );
626    }
627
628    public function onAfterBuildFeedLinks( &$feedLinks ) {
629        return $this->container->run(
630            'AfterBuildFeedLinks',
631            [ &$feedLinks ]
632        );
633    }
634
635    public function onAfterFinalPageOutput( $output ): void {
636        $this->container->run(
637            'AfterFinalPageOutput',
638            [ $output ],
639            [ 'abortable' => false ]
640        );
641    }
642
643    public function onAfterImportPage( $title, $foreignTitle, $revCount,
644        $sRevCount, $pageInfo
645    ) {
646        return $this->container->run(
647            'AfterImportPage',
648            [ $title, $foreignTitle, $revCount, $sRevCount, $pageInfo ]
649        );
650    }
651
652    public function onAfterParserFetchFileAndTitle( $parser, $ig, &$html ) {
653        return $this->container->run(
654            'AfterParserFetchFileAndTitle',
655            [ $parser, $ig, &$html ]
656        );
657    }
658
659    public function onAlternateEdit( $editPage ) {
660        return $this->container->run(
661            'AlternateEdit',
662            [ $editPage ]
663        );
664    }
665
666    public function onAlternateEditPreview( $editPage, &$content, &$previewHTML,
667        &$parserOutput
668    ) {
669        return $this->container->run(
670            'AlternateEditPreview',
671            [ $editPage, &$content, &$previewHTML, &$parserOutput ]
672        );
673    }
674
675    public function onAlternateUserMailer( $headers, $to, $from, $subject, $body ) {
676        return $this->container->run(
677            'AlternateUserMailer',
678            [ $headers, $to, $from, $subject, $body ]
679        );
680    }
681
682    public function onAncientPagesQuery( &$tables, &$conds, &$joinConds ) {
683        return $this->container->run(
684            'AncientPagesQuery',
685            [ &$tables, &$conds, &$joinConds ]
686        );
687    }
688
689    public function onApiBeforeMain( &$main ) {
690        return $this->container->run(
691            'ApiBeforeMain',
692            [ &$main ]
693        );
694    }
695
696    public function onArticleConfirmDelete( $article, $output, &$reason ) {
697        return $this->container->run(
698            'ArticleConfirmDelete',
699            [ $article, $output, &$reason ]
700        );
701    }
702
703    public function onArticleContentOnDiff( $diffEngine, $output ) {
704        return $this->container->run(
705            'ArticleContentOnDiff',
706            [ $diffEngine, $output ]
707        );
708    }
709
710    public function onArticleDelete( $wikiPage, $user, &$reason, &$error, &$status,
711        $suppress
712    ) {
713        return $this->container->run(
714            'ArticleDelete',
715            [ $wikiPage, $user, &$reason, &$error, &$status, $suppress ]
716        );
717    }
718
719    public function onArticleDeleteAfterSuccess( $title, $outputPage ) {
720        return $this->container->run(
721            'ArticleDeleteAfterSuccess',
722            [ $title, $outputPage ]
723        );
724    }
725
726    public function onArticleDeleteComplete( $wikiPage, $user, $reason, $id,
727        $content, $logEntry, $archivedRevisionCount
728    ) {
729        return $this->container->run(
730            'ArticleDeleteComplete',
731            [ $wikiPage, $user, $reason, $id, $content, $logEntry,
732                $archivedRevisionCount ]
733        );
734    }
735
736    public function onArticleEditUpdateNewTalk( $wikiPage, $recipient ) {
737        return $this->container->run(
738            'ArticleEditUpdateNewTalk',
739            [ $wikiPage, $recipient ]
740        );
741    }
742
743    public function onArticleFromTitle( $title, &$article, $context ) {
744        return $this->container->run(
745            'ArticleFromTitle',
746            [ $title, &$article, $context ]
747        );
748    }
749
750    public function onArticleMergeComplete( $targetTitle, $destTitle ) {
751        return $this->container->run(
752            'ArticleMergeComplete',
753            [ $targetTitle, $destTitle ]
754        );
755    }
756
757    public function onArticlePageDataAfter( $wikiPage, &$row ) {
758        return $this->container->run(
759            'ArticlePageDataAfter',
760            [ $wikiPage, &$row ]
761        );
762    }
763
764    public function onArticlePageDataBefore( $wikiPage, &$fields, &$tables,
765        &$joinConds
766    ) {
767        return $this->container->run(
768            'ArticlePageDataBefore',
769            [ $wikiPage, &$fields, &$tables, &$joinConds ]
770        );
771    }
772
773    public function onArticleParserOptions( Article $article, ParserOptions $popts ) {
774        return $this->container->run(
775            'ArticleParserOptions',
776            [ $article, $popts ]
777        );
778    }
779
780    public function onArticlePrepareTextForEdit( $wikiPage, $popts ) {
781        return $this->container->run(
782            'ArticlePrepareTextForEdit',
783            [ $wikiPage, $popts ]
784        );
785    }
786
787    public function onArticleProtect( $wikiPage, $user, $protect, $reason ) {
788        return $this->container->run(
789            'ArticleProtect',
790            [ $wikiPage, $user, $protect, $reason ]
791        );
792    }
793
794    public function onArticleProtectComplete( $wikiPage, $user, $protect, $reason ) {
795        return $this->container->run(
796            'ArticleProtectComplete',
797            [ $wikiPage, $user, $protect, $reason ]
798        );
799    }
800
801    public function onArticlePurge( $wikiPage ) {
802        return $this->container->run(
803            'ArticlePurge',
804            [ $wikiPage ]
805        );
806    }
807
808    public function onArticleRevisionViewCustom( $revision, $title, $oldid,
809        $output
810    ) {
811        return $this->container->run(
812            'ArticleRevisionViewCustom',
813            [ $revision, $title, $oldid, $output ]
814        );
815    }
816
817    public function onArticleRevisionVisibilitySet( $title, $ids,
818        $visibilityChangeMap
819    ) {
820        return $this->container->run(
821            'ArticleRevisionVisibilitySet',
822            [ $title, $ids, $visibilityChangeMap ]
823        );
824    }
825
826    public function onArticleShowPatrolFooter( $article ) {
827        return $this->container->run(
828            'ArticleShowPatrolFooter',
829            [ $article ]
830        );
831    }
832
833    public function onArticleUndelete( $title, $create, $comment, $oldPageId,
834        $restoredPages
835    ) {
836        return $this->container->run(
837            'ArticleUndelete',
838            [ $title, $create, $comment, $oldPageId, $restoredPages ]
839        );
840    }
841
842    public function onArticleUpdateBeforeRedirect( $article, &$sectionanchor,
843        &$extraq
844    ) {
845        return $this->container->run(
846            'ArticleUpdateBeforeRedirect',
847            [ $article, &$sectionanchor, &$extraq ]
848        );
849    }
850
851    public function onArticleViewFooter( $article, $patrolFooterShown ) {
852        return $this->container->run(
853            'ArticleViewFooter',
854            [ $article, $patrolFooterShown ]
855        );
856    }
857
858    public function onArticleViewHeader( $article, &$outputDone, &$pcache ) {
859        return $this->container->run(
860            'ArticleViewHeader',
861            [ $article, &$outputDone, &$pcache ]
862        );
863    }
864
865    public function onArticleViewRedirect( $article ) {
866        return $this->container->run(
867            'ArticleViewRedirect',
868            [ $article ]
869        );
870    }
871
872    public function onArticle__MissingArticleConditions( &$conds, $logTypes ) {
873        return $this->container->run(
874            'Article::MissingArticleConditions',
875            [ &$conds, $logTypes ]
876        );
877    }
878
879    public function onAuthChangeFormFields( $requests, $fieldInfo,
880        &$formDescriptor, $action
881    ) {
882        return $this->container->run(
883            'AuthChangeFormFields',
884            [ $requests, $fieldInfo, &$formDescriptor, $action ]
885        );
886    }
887
888    public function onAuthManagerLoginAuthenticateAudit( $response, $user,
889        $username, $extraData
890    ) {
891        return $this->container->run(
892            'AuthManagerLoginAuthenticateAudit',
893            [ $response, $user, $username, $extraData ]
894        );
895    }
896
897    public function onAutopromoteCondition( $type, $args, $user, &$result ) {
898        return $this->container->run(
899            'AutopromoteCondition',
900            [ $type, $args, $user, &$result ]
901        );
902    }
903
904    public function onBacklinkCacheGetConditions( $table, $title, &$conds ) {
905        return $this->container->run(
906            'BacklinkCacheGetConditions',
907            [ $table, $title, &$conds ]
908        );
909    }
910
911    public function onBacklinkCacheGetPrefix( $table, &$prefix ) {
912        return $this->container->run(
913            'BacklinkCacheGetPrefix',
914            [ $table, &$prefix ]
915        );
916    }
917
918    public function onBadImage( $name, &$bad ) {
919        return $this->container->run(
920            'BadImage',
921            [ $name, &$bad ]
922        );
923    }
924
925    public function onBeforeDisplayNoArticleText( $article ) {
926        return $this->container->run(
927            'BeforeDisplayNoArticleText',
928            [ $article ]
929        );
930    }
931
932    public function onBeforeInitialize( $title, $unused, $output, $user, $request,
933        $mediaWiki
934    ) {
935        return $this->container->run(
936            'BeforeInitialize',
937            [ $title, $unused, $output, $user, $request, $mediaWiki ]
938        );
939    }
940
941    public function onBeforePageDisplay( $out, $skin ): void {
942        $this->container->run(
943            'BeforePageDisplay',
944            [ $out, $skin ],
945            [ 'abortable' => false ]
946        );
947    }
948
949    public function onBeforePageRedirect( $out, &$redirect, &$code ) {
950        return $this->container->run(
951            'BeforePageRedirect',
952            [ $out, &$redirect, &$code ]
953        );
954    }
955
956    public function onBeforeParserFetchFileAndTitle( $parser, $nt, &$options,
957        &$descQuery
958    ) {
959        return $this->container->run(
960            'BeforeParserFetchFileAndTitle',
961            [ $parser, $nt, &$options, &$descQuery ]
962        );
963    }
964
965    public function onBeforeParserFetchTemplateRevisionRecord(
966        ?LinkTarget $contextTitle, LinkTarget $title,
967        bool &$skip, ?RevisionRecord &$revRecord
968    ) {
969        return $this->container->run(
970            'BeforeParserFetchTemplateRevisionRecord',
971            [ $contextTitle, $title, &$skip, &$revRecord ]
972        );
973    }
974
975    public function onBeforeRevertedTagUpdate( $wikiPage, $user,
976        $summary, $flags, $revisionRecord, $editResult, &$approved
977    ): void {
978        $this->container->run(
979            'BeforeRevertedTagUpdate',
980            [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult,
981                &$approved ],
982            [ 'abortable' => false ]
983        );
984    }
985
986    public function onBeforeWelcomeCreation( &$welcome_creation_msg,
987        &$injected_html
988    ) {
989        return $this->container->run(
990            'BeforeWelcomeCreation',
991            [ &$welcome_creation_msg, &$injected_html ]
992        );
993    }
994
995    public function onBitmapHandlerCheckImageArea( $image, &$params,
996        &$checkImageAreaHookResult
997    ) {
998        return $this->container->run(
999            'BitmapHandlerCheckImageArea',
1000            [ $image, &$params, &$checkImageAreaHookResult ]
1001        );
1002    }
1003
1004    public function onBitmapHandlerTransform( $handler, $image, &$scalerParams,
1005        &$mto
1006    ) {
1007        return $this->container->run(
1008            'BitmapHandlerTransform',
1009            [ $handler, $image, &$scalerParams, &$mto ]
1010        );
1011    }
1012
1013    public function onBlockIp( $block, $user, &$reason ) {
1014        return $this->container->run(
1015            'BlockIp',
1016            [ $block, $user, &$reason ]
1017        );
1018    }
1019
1020    public function onBlockIpComplete( $block, $user, $priorBlock ) {
1021        return $this->container->run(
1022            'BlockIpComplete',
1023            [ $block, $user, $priorBlock ]
1024        );
1025    }
1026
1027    public function onBookInformation( $isbn, $output ) {
1028        return $this->container->run(
1029            'BookInformation',
1030            [ $isbn, $output ]
1031        );
1032    }
1033
1034    public function onCanonicalNamespaces( &$namespaces ) {
1035        return $this->container->run(
1036            'CanonicalNamespaces',
1037            [ &$namespaces ]
1038        );
1039    }
1040
1041    public function onCategoryAfterPageAdded( $category, $wikiPage ) {
1042        return $this->container->run(
1043            'CategoryAfterPageAdded',
1044            [ $category, $wikiPage ]
1045        );
1046    }
1047
1048    public function onCategoryAfterPageRemoved( $category, $wikiPage, $id ) {
1049        return $this->container->run(
1050            'CategoryAfterPageRemoved',
1051            [ $category, $wikiPage, $id ]
1052        );
1053    }
1054
1055    public function onCategoryPageView( $catpage ) {
1056        return $this->container->run(
1057            'CategoryPageView',
1058            [ $catpage ]
1059        );
1060    }
1061
1062    public function onCategoryViewer__doCategoryQuery( $type, $res ) {
1063        return $this->container->run(
1064            'CategoryViewer::doCategoryQuery',
1065            [ $type, $res ]
1066        );
1067    }
1068
1069    public function onCategoryViewer__generateLink( $type, $title, $html, &$link ) {
1070        return $this->container->run(
1071            'CategoryViewer::generateLink',
1072            [ $type, $title, $html, &$link ]
1073        );
1074    }
1075
1076    public function onChangeAuthenticationDataAudit( $req, $status ) {
1077        return $this->container->run(
1078            'ChangeAuthenticationDataAudit',
1079            [ $req, $status ]
1080        );
1081    }
1082
1083    public function onChangesListInitRows( $changesList, $rows ) {
1084        return $this->container->run(
1085            'ChangesListInitRows',
1086            [ $changesList, $rows ]
1087        );
1088    }
1089
1090    public function onChangesListInsertArticleLink( $changesList, &$articlelink,
1091        &$s, $rc, $unpatrolled, $watched
1092    ) {
1093        return $this->container->run(
1094            'ChangesListInsertArticleLink',
1095            [ $changesList, &$articlelink, &$s, $rc, $unpatrolled, $watched ]
1096        );
1097    }
1098
1099    public function onChangesListSpecialPageQuery( $name, &$tables, &$fields,
1100        &$conds, &$query_options, &$join_conds, $opts
1101    ) {
1102        return $this->container->run(
1103            'ChangesListSpecialPageQuery',
1104            [ $name, &$tables, &$fields, &$conds, &$query_options,
1105                &$join_conds, $opts ]
1106        );
1107    }
1108
1109    public function onChangesListSpecialPageStructuredFilters( $special ) {
1110        return $this->container->run(
1111            'ChangesListSpecialPageStructuredFilters',
1112            [ $special ]
1113        );
1114    }
1115
1116    public function onChangeTagAfterDelete( $tag, &$status ) {
1117        return $this->container->run(
1118            'ChangeTagAfterDelete',
1119            [ $tag, &$status ]
1120        );
1121    }
1122
1123    public function onChangeTagCanCreate( $tag, $user, &$status ) {
1124        return $this->container->run(
1125            'ChangeTagCanCreate',
1126            [ $tag, $user, &$status ]
1127        );
1128    }
1129
1130    public function onChangeTagCanDelete( $tag, $user, &$status ) {
1131        return $this->container->run(
1132            'ChangeTagCanDelete',
1133            [ $tag, $user, &$status ]
1134        );
1135    }
1136
1137    public function onChangeTagsAfterUpdateTags( $addedTags, $removedTags,
1138        $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $user
1139    ) {
1140        return $this->container->run(
1141            'ChangeTagsAfterUpdateTags',
1142            [ $addedTags, $removedTags, $prevTags, $rc_id, $rev_id, $log_id,
1143                $params, $rc, $user ]
1144        );
1145    }
1146
1147    public function onChangeTagsAllowedAdd( &$allowedTags, $addTags, $user ) {
1148        return $this->container->run(
1149            'ChangeTagsAllowedAdd',
1150            [ &$allowedTags, $addTags, $user ]
1151        );
1152    }
1153
1154    public function onChangeTagsListActive( &$tags ) {
1155        return $this->container->run(
1156            'ChangeTagsListActive',
1157            [ &$tags ]
1158        );
1159    }
1160
1161    public function onChangeUserGroups( $performer, $user, &$add, &$remove ) {
1162        return $this->container->run(
1163            'ChangeUserGroups',
1164            [ $performer, $user, &$add, &$remove ]
1165        );
1166    }
1167
1168    public function onCollation__factory( $collationName, &$collationObject ) {
1169        return $this->container->run(
1170            'Collation::factory',
1171            [ $collationName, &$collationObject ]
1172        );
1173    }
1174
1175    public function onConfirmEmailComplete( $user ) {
1176        return $this->container->run(
1177            'ConfirmEmailComplete',
1178            [ $user ]
1179        );
1180    }
1181
1182    public function onContentAlterParserOutput( $content, $title, $parserOutput ) {
1183        return $this->container->run(
1184            'ContentAlterParserOutput',
1185            [ $content, $title, $parserOutput ]
1186        );
1187    }
1188
1189    public function onContentGetParserOutput( $content, $title, $revId, $options,
1190        $generateHtml, &$parserOutput
1191    ) {
1192        return $this->container->run(
1193            'ContentGetParserOutput',
1194            [ $content, $title, $revId, $options, $generateHtml, &$parserOutput ]
1195        );
1196    }
1197
1198    public function onContentHandlerDefaultModelFor( $title, &$model ) {
1199        return $this->container->run(
1200            'ContentHandlerDefaultModelFor',
1201            [ $title, &$model ]
1202        );
1203    }
1204
1205    public function onContentHandlerForModelID( $modelName, &$handler ) {
1206        return $this->container->run(
1207            'ContentHandlerForModelID',
1208            [ $modelName, &$handler ]
1209        );
1210    }
1211
1212    public function onContentModelCanBeUsedOn( $contentModel, $title, &$ok ) {
1213        return $this->container->run(
1214            'ContentModelCanBeUsedOn',
1215            [ $contentModel, $title, &$ok ]
1216        );
1217    }
1218
1219    public function onContentSecurityPolicyDefaultSource( &$defaultSrc,
1220        $policyConfig, $mode
1221    ) {
1222        return $this->container->run(
1223            'ContentSecurityPolicyDefaultSource',
1224            [ &$defaultSrc, $policyConfig, $mode ]
1225        );
1226    }
1227
1228    public function onContentSecurityPolicyDirectives( &$directives, $policyConfig,
1229        $mode
1230    ) {
1231        return $this->container->run(
1232            'ContentSecurityPolicyDirectives',
1233            [ &$directives, $policyConfig, $mode ]
1234        );
1235    }
1236
1237    public function onContentSecurityPolicyScriptSource( &$scriptSrc,
1238        $policyConfig, $mode
1239    ) {
1240        return $this->container->run(
1241            'ContentSecurityPolicyScriptSource',
1242            [ &$scriptSrc, $policyConfig, $mode ]
1243        );
1244    }
1245
1246    public function onContribsPager__getQueryInfo( $pager, &$queryInfo ) {
1247        return $this->container->run(
1248            'ContribsPager::getQueryInfo',
1249            [ $pager, &$queryInfo ]
1250        );
1251    }
1252
1253    public function onContribsPager__reallyDoQuery( &$data, $pager, $offset,
1254        $limit, $descending
1255    ) {
1256        return $this->container->run(
1257            'ContribsPager::reallyDoQuery',
1258            [ &$data, $pager, $offset, $limit, $descending ]
1259        );
1260    }
1261
1262    public function onContributeCards( &$cards ): void {
1263        $this->container->run(
1264            'ContributeCards',
1265            [ &$cards ]
1266        );
1267    }
1268
1269    public function onContributionsLineEnding( $page, &$ret, $row, &$classes,
1270        &$attribs
1271    ) {
1272        return $this->container->run(
1273            'ContributionsLineEnding',
1274            [ $page, &$ret, $row, &$classes, &$attribs ]
1275        );
1276    }
1277
1278    public function onContributionsToolLinks( $id, Title $title, array &$tools, SpecialPage $specialPage ) {
1279        return $this->container->run(
1280            'ContributionsToolLinks',
1281            [ $id, $title, &$tools, $specialPage ]
1282        );
1283    }
1284
1285    public function onConvertContent( $content, $toModel, $lossy, &$result ) {
1286        return $this->container->run(
1287            'ConvertContent',
1288            [ $content, $toModel, $lossy, &$result ]
1289        );
1290    }
1291
1292    public function onCustomEditor( $article, $user ) {
1293        return $this->container->run(
1294            'CustomEditor',
1295            [ $article, $user ]
1296        );
1297    }
1298
1299    public function onDeletedContribsPager__reallyDoQuery( &$data, $pager, $offset,
1300        $limit, $descending
1301    ) {
1302        return $this->container->run(
1303            'DeletedContribsPager::reallyDoQuery',
1304            [ &$data, $pager, $offset, $limit, $descending ]
1305        );
1306    }
1307
1308    public function onDeletedContributionsLineEnding( $page, &$ret, $row,
1309        &$classes, &$attribs
1310    ) {
1311        return $this->container->run(
1312            'DeletedContributionsLineEnding',
1313            [ $page, &$ret, $row, &$classes, &$attribs ]
1314        );
1315    }
1316
1317    public function onDeleteUnknownPreferences( &$where, $db ) {
1318        return $this->container->run(
1319            'DeleteUnknownPreferences',
1320            [ &$where, $db ]
1321        );
1322    }
1323
1324    public function onDifferenceEngineAfterLoadNewText( $differenceEngine ) {
1325        return $this->container->run(
1326            'DifferenceEngineAfterLoadNewText',
1327            [ $differenceEngine ]
1328        );
1329    }
1330
1331    public function onTextSlotDiffRendererTablePrefix(
1332        \TextSlotDiffRenderer $textSlotDiffRenderer,
1333        IContextSource $context,
1334        array &$parts
1335    ) {
1336        return $this->container->run(
1337            'TextSlotDiffRendererTablePrefix',
1338            [ $textSlotDiffRenderer, $context, &$parts ]
1339        );
1340    }
1341
1342    public function onDifferenceEngineLoadTextAfterNewContentIsLoaded(
1343        $differenceEngine
1344    ) {
1345        return $this->container->run(
1346            'DifferenceEngineLoadTextAfterNewContentIsLoaded',
1347            [ $differenceEngine ]
1348        );
1349    }
1350
1351    public function onDifferenceEngineMarkPatrolledLink( $differenceEngine,
1352        &$markAsPatrolledLink, $rcid
1353    ) {
1354        return $this->container->run(
1355            'DifferenceEngineMarkPatrolledLink',
1356            [ $differenceEngine, &$markAsPatrolledLink, $rcid ]
1357        );
1358    }
1359
1360    public function onDifferenceEngineMarkPatrolledRCID( &$rcid, $differenceEngine,
1361        $change, $user
1362    ) {
1363        return $this->container->run(
1364            'DifferenceEngineMarkPatrolledRCID',
1365            [ &$rcid, $differenceEngine, $change, $user ]
1366        );
1367    }
1368
1369    public function onDifferenceEngineNewHeader( $differenceEngine, &$newHeader,
1370        $formattedRevisionTools, $nextlink, $rollback, $newminor, $diffOnly, $rdel,
1371        $unhide
1372    ) {
1373        return $this->container->run(
1374            'DifferenceEngineNewHeader',
1375            [ $differenceEngine, &$newHeader, $formattedRevisionTools,
1376                $nextlink, $rollback, $newminor, $diffOnly, $rdel, $unhide ]
1377        );
1378    }
1379
1380    public function onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader,
1381        $prevlink, $oldminor, $diffOnly, $ldel, $unhide
1382    ) {
1383        return $this->container->run(
1384            'DifferenceEngineOldHeader',
1385            [ $differenceEngine, &$oldHeader, $prevlink, $oldminor, $diffOnly,
1386                $ldel, $unhide ]
1387        );
1388    }
1389
1390    public function onDifferenceEngineOldHeaderNoOldRev( &$oldHeader ) {
1391        return $this->container->run(
1392            'DifferenceEngineOldHeaderNoOldRev',
1393            [ &$oldHeader ]
1394        );
1395    }
1396
1397    public function onDifferenceEngineRenderRevisionAddParserOutput(
1398        $differenceEngine, $out, $parserOutput, $wikiPage
1399    ) {
1400        return $this->container->run(
1401            'DifferenceEngineRenderRevisionAddParserOutput',
1402            [ $differenceEngine, $out, $parserOutput, $wikiPage ]
1403        );
1404    }
1405
1406    public function onDifferenceEngineRenderRevisionShowFinalPatrolLink() {
1407        return $this->container->run(
1408            'DifferenceEngineRenderRevisionShowFinalPatrolLink',
1409            []
1410        );
1411    }
1412
1413    public function onDifferenceEngineShowDiff( $differenceEngine ) {
1414        return $this->container->run(
1415            'DifferenceEngineShowDiff',
1416            [ $differenceEngine ]
1417        );
1418    }
1419
1420    public function onDifferenceEngineShowDiffPage( $out ) {
1421        return $this->container->run(
1422            'DifferenceEngineShowDiffPage',
1423            [ $out ]
1424        );
1425    }
1426
1427    public function onDifferenceEngineShowDiffPageMaybeShowMissingRevision(
1428        $differenceEngine
1429    ) {
1430        return $this->container->run(
1431            'DifferenceEngineShowDiffPageMaybeShowMissingRevision',
1432            [ $differenceEngine ]
1433        );
1434    }
1435
1436    public function onDifferenceEngineShowEmptyOldContent( $differenceEngine ) {
1437        return $this->container->run(
1438            'DifferenceEngineShowEmptyOldContent',
1439            [ $differenceEngine ]
1440        );
1441    }
1442
1443    public function onDifferenceEngineViewHeader( $differenceEngine ) {
1444        return $this->container->run(
1445            'DifferenceEngineViewHeader',
1446            [ $differenceEngine ]
1447        );
1448    }
1449
1450    public function onDiffTools( $newRevRecord, &$links, $oldRevRecord, $userIdentity ) {
1451        return $this->container->run(
1452            'DiffTools',
1453            [ $newRevRecord, &$links, $oldRevRecord, $userIdentity ]
1454        );
1455    }
1456
1457    public function onDisplayOldSubtitle( $article, &$oldid ) {
1458        return $this->container->run(
1459            'DisplayOldSubtitle',
1460            [ $article, &$oldid ]
1461        );
1462    }
1463
1464    public function onEditFilter( $editor, $text, $section, &$error, $summary ) {
1465        return $this->container->run(
1466            'EditFilter',
1467            [ $editor, $text, $section, &$error, $summary ]
1468        );
1469    }
1470
1471    public function onEditFilterMergedContent( $context, $content, $status,
1472        $summary, $user, $minoredit
1473    ) {
1474        return $this->container->run(
1475            'EditFilterMergedContent',
1476            [ $context, $content, $status, $summary, $user, $minoredit ]
1477        );
1478    }
1479
1480    public function onEditFormInitialText( $editPage ) {
1481        return $this->container->run(
1482            'EditFormInitialText',
1483            [ $editPage ]
1484        );
1485    }
1486
1487    public function onEditFormPreloadText( &$text, $title ) {
1488        return $this->container->run(
1489            'EditFormPreloadText',
1490            [ &$text, $title ]
1491        );
1492    }
1493
1494    public function onEditPageBeforeConflictDiff( $editor, $out ) {
1495        return $this->container->run(
1496            'EditPageBeforeConflictDiff',
1497            [ $editor, $out ]
1498        );
1499    }
1500
1501    public function onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex ) {
1502        return $this->container->run(
1503            'EditPageBeforeEditButtons',
1504            [ $editpage, &$buttons, &$tabindex ]
1505        );
1506    }
1507
1508    public function onEditPageBeforeEditToolbar( &$toolbar ) {
1509        return $this->container->run(
1510            'EditPageBeforeEditToolbar',
1511            [ &$toolbar ]
1512        );
1513    }
1514
1515    public function onEditPageCopyrightWarning( $title, &$msg ) {
1516        return $this->container->run(
1517            'EditPageCopyrightWarning',
1518            [ $title, &$msg ]
1519        );
1520    }
1521
1522    public function onEditPageGetCheckboxesDefinition( $editpage, &$checkboxes ) {
1523        return $this->container->run(
1524            'EditPageGetCheckboxesDefinition',
1525            [ $editpage, &$checkboxes ]
1526        );
1527    }
1528
1529    public function onEditPageGetDiffContent( $editPage, &$newtext ) {
1530        return $this->container->run(
1531            'EditPageGetDiffContent',
1532            [ $editPage, &$newtext ]
1533        );
1534    }
1535
1536    public function onEditPageGetPreviewContent( $editPage, &$content ) {
1537        return $this->container->run(
1538            'EditPageGetPreviewContent',
1539            [ $editPage, &$content ]
1540        );
1541    }
1542
1543    public function onEditPageNoSuchSection( $editpage, &$res ) {
1544        return $this->container->run(
1545            'EditPageNoSuchSection',
1546            [ $editpage, &$res ]
1547        );
1548    }
1549
1550    public function onEditPageTosSummary( $title, &$msg ) {
1551        return $this->container->run(
1552            'EditPageTosSummary',
1553            [ $title, &$msg ]
1554        );
1555    }
1556
1557    public function onEditPage__attemptSave( $editpage_Obj ) {
1558        return $this->container->run(
1559            'EditPage::attemptSave',
1560            [ $editpage_Obj ]
1561        );
1562    }
1563
1564    public function onEditPage__attemptSave_after( $editpage_Obj, $status,
1565        $resultDetails
1566    ) {
1567        return $this->container->run(
1568            'EditPage::attemptSave:after',
1569            [ $editpage_Obj, $status, $resultDetails ]
1570        );
1571    }
1572
1573    public function onEditPage__importFormData( $editpage, $request ) {
1574        return $this->container->run(
1575            'EditPage::importFormData',
1576            [ $editpage, $request ]
1577        );
1578    }
1579
1580    public function onEditPage__showEditForm_fields( $editor, $out ) {
1581        return $this->container->run(
1582            'EditPage::showEditForm:fields',
1583            [ $editor, $out ]
1584        );
1585    }
1586
1587    public function onEditPage__showEditForm_initial( $editor, $out ) {
1588        return $this->container->run(
1589            'EditPage::showEditForm:initial',
1590            [ $editor, $out ]
1591        );
1592    }
1593
1594    public function onEditPage__showReadOnlyForm_initial( $editor, $out ) {
1595        return $this->container->run(
1596            'EditPage::showReadOnlyForm:initial',
1597            [ $editor, $out ]
1598        );
1599    }
1600
1601    public function onEditPage__showStandardInputs_options( $editor, $out,
1602        &$tabindex
1603    ) {
1604        return $this->container->run(
1605            'EditPage::showStandardInputs:options',
1606            [ $editor, $out, &$tabindex ]
1607        );
1608    }
1609
1610    public function onEmailConfirmed( $user, &$confirmed ) {
1611        return $this->container->run(
1612            'EmailConfirmed',
1613            [ $user, &$confirmed ]
1614        );
1615    }
1616
1617    public function onEmailUser( &$to, &$from, &$subject, &$text, &$error ) {
1618        return $this->container->run(
1619            'EmailUser',
1620            [ &$to, &$from, &$subject, &$text, &$error ]
1621        );
1622    }
1623
1624    public function onEmailUserCC( &$to, &$from, &$subject, &$text ) {
1625        return $this->container->run(
1626            'EmailUserCC',
1627            [ &$to, &$from, &$subject, &$text ]
1628        );
1629    }
1630
1631    public function onEmailUserComplete( $to, $from, $subject, $text ) {
1632        return $this->container->run(
1633            'EmailUserComplete',
1634            [ $to, $from, $subject, $text ]
1635        );
1636    }
1637
1638    public function onEmailUserForm( &$form ) {
1639        return $this->container->run(
1640            'EmailUserForm',
1641            [ &$form ]
1642        );
1643    }
1644
1645    public function onEmailUserPermissionsErrors( $user, $editToken, &$hookErr ) {
1646        return $this->container->run(
1647            'EmailUserPermissionsErrors',
1648            [ $user, $editToken, &$hookErr ]
1649        );
1650    }
1651
1652    public function onEmailUserAuthorizeSend( Authority $sender, StatusValue $status ) {
1653        return $this->container->run(
1654            'EmailUserAuthorizeSend',
1655            [ $sender, $status ]
1656        );
1657    }
1658
1659    public function onEmailUserSendEmail(
1660        Authority $from,
1661        MailAddress $fromAddress,
1662        UserEmailContact $to,
1663        MailAddress $toAddress,
1664        string $subject,
1665        string $text,
1666        StatusValue $status
1667    ) {
1668        return $this->container->run(
1669            'EmailUserSendEmail',
1670            [ $from, $fromAddress, $to, $toAddress, $subject, $text, $status ]
1671        );
1672    }
1673
1674    public function onEnhancedChangesListModifyBlockLineData( $changesList, &$data,
1675        $rc
1676    ) {
1677        return $this->container->run(
1678            'EnhancedChangesListModifyBlockLineData',
1679            [ $changesList, &$data, $rc ]
1680        );
1681    }
1682
1683    public function onEnhancedChangesListModifyLineData( $changesList, &$data,
1684        $block, $rc, &$classes, &$attribs
1685    ) {
1686        return $this->container->run(
1687            'EnhancedChangesListModifyLineData',
1688            [ $changesList, &$data, $block, $rc, &$classes, &$attribs ]
1689        );
1690    }
1691
1692    public function onEnhancedChangesList__getLogText( $changesList, &$links,
1693        $block
1694    ) {
1695        return $this->container->run(
1696            'EnhancedChangesList::getLogText',
1697            [ $changesList, &$links, $block ]
1698        );
1699    }
1700
1701    public function onExemptFromAccountCreationThrottle( $ip ) {
1702        return $this->container->run(
1703            'ExemptFromAccountCreationThrottle',
1704            [ $ip ]
1705        );
1706    }
1707
1708    public function onExtensionTypes( &$extTypes ) {
1709        return $this->container->run(
1710            'ExtensionTypes',
1711            [ &$extTypes ]
1712        );
1713    }
1714
1715    public function onFetchChangesList( $user, $skin, &$list, $groups ) {
1716        return $this->container->run(
1717            'FetchChangesList',
1718            [ $user, $skin, &$list, $groups ]
1719        );
1720    }
1721
1722    public function onFileDeleteComplete( $file, $oldimage, $article, $user,
1723        $reason
1724    ) {
1725        return $this->container->run(
1726            'FileDeleteComplete',
1727            [ $file, $oldimage, $article, $user, $reason ]
1728        );
1729    }
1730
1731    public function onFileTransformed( $file, $thumb, $tmpThumbPath, $thumbPath ) {
1732        return $this->container->run(
1733            'FileTransformed',
1734            [ $file, $thumb, $tmpThumbPath, $thumbPath ]
1735        );
1736    }
1737
1738    public function onFileUndeleteComplete( $title, $fileVersions, $user, $reason ) {
1739        return $this->container->run(
1740            'FileUndeleteComplete',
1741            [ $title, $fileVersions, $user, $reason ]
1742        );
1743    }
1744
1745    public function onFileUpload( $file, $reupload, $hasDescription ) {
1746        return $this->container->run(
1747            'FileUpload',
1748            [ $file, $reupload, $hasDescription ]
1749        );
1750    }
1751
1752    public function onFormatAutocomments( &$comment, $pre, $auto, $post, $title,
1753        $local, $wikiId
1754    ) {
1755        return $this->container->run(
1756            'FormatAutocomments',
1757            [ &$comment, $pre, $auto, $post, $title, $local, $wikiId ]
1758        );
1759    }
1760
1761    public function onGalleryGetModes( &$modeArray ) {
1762        return $this->container->run(
1763            'GalleryGetModes',
1764            [ &$modeArray ]
1765        );
1766    }
1767
1768    public function onGetAllBlockActions( &$actions ) {
1769        return $this->container->run(
1770            'GetAllBlockActions',
1771            [ &$actions ],
1772            [ 'abortable' => false ]
1773        );
1774    }
1775
1776    public function onGetAutoPromoteGroups( $user, &$promote ) {
1777        return $this->container->run(
1778            'GetAutoPromoteGroups',
1779            [ $user, &$promote ]
1780        );
1781    }
1782
1783    public function onGetActionName( IContextSource $context, string &$action ): void {
1784        $this->container->run(
1785            'GetActionName',
1786            [ $context, &$action ],
1787            [ 'abortable' => false ]
1788        );
1789    }
1790
1791    public function onGetCacheVaryCookies( $out, &$cookies ) {
1792        return $this->container->run(
1793            'GetCacheVaryCookies',
1794            [ $out, &$cookies ]
1795        );
1796    }
1797
1798    public function onGetCanonicalURL( $title, &$url, $query ) {
1799        return $this->container->run(
1800            'GetCanonicalURL',
1801            [ $title, &$url, $query ]
1802        );
1803    }
1804
1805    public function onGetContentModels( &$models ) {
1806        return $this->container->run(
1807            'GetContentModels',
1808            [ &$models ]
1809        );
1810    }
1811
1812    public function onGetDefaultSortkey( $title, &$sortkey ) {
1813        return $this->container->run(
1814            'GetDefaultSortkey',
1815            [ $title, &$sortkey ]
1816        );
1817    }
1818
1819    public function onGetDifferenceEngine( $context, $old, $new, $refreshCache,
1820        $unhide, &$differenceEngine
1821    ) {
1822        return $this->container->run(
1823            'GetDifferenceEngine',
1824            [ $context, $old, $new, $refreshCache, $unhide,
1825                &$differenceEngine ]
1826        );
1827    }
1828
1829    public function onGetDoubleUnderscoreIDs( &$doubleUnderscoreIDs ) {
1830        return $this->container->run(
1831            'GetDoubleUnderscoreIDs',
1832            [ &$doubleUnderscoreIDs ]
1833        );
1834    }
1835
1836    public function onGetExtendedMetadata( &$combinedMeta, $file, $context,
1837        $single, &$maxCacheTime
1838    ) {
1839        return $this->container->run(
1840            'GetExtendedMetadata',
1841            [ &$combinedMeta, $file, $context, $single, &$maxCacheTime ]
1842        );
1843    }
1844
1845    public function onGetFullURL( $title, &$url, $query ) {
1846        return $this->container->run(
1847            'GetFullURL',
1848            [ $title, &$url, $query ]
1849        );
1850    }
1851
1852    public function onGetHumanTimestamp( &$output, $timestamp, $relativeTo, $user,
1853        $lang
1854    ) {
1855        return $this->container->run(
1856            'GetHumanTimestamp',
1857            [ &$output, $timestamp, $relativeTo, $user, $lang ]
1858        );
1859    }
1860
1861    public function onGetInternalURL( $title, &$url, $query ) {
1862        return $this->container->run(
1863            'GetInternalURL',
1864            [ $title, &$url, $query ]
1865        );
1866    }
1867
1868    public function onGetIP( &$ip ) {
1869        return $this->container->run(
1870            'GetIP',
1871            [ &$ip ]
1872        );
1873    }
1874
1875    public function onGetLangPreferredVariant( &$req ) {
1876        return $this->container->run(
1877            'GetLangPreferredVariant',
1878            [ &$req ]
1879        );
1880    }
1881
1882    public function onGetLinkColours( $linkcolour_ids, &$colours, $title ) {
1883        return $this->container->run(
1884            'GetLinkColours',
1885            [ $linkcolour_ids, &$colours, $title ]
1886        );
1887    }
1888
1889    public function onGetLocalURL( $title, &$url, $query ) {
1890        return $this->container->run(
1891            'GetLocalURL',
1892            [ $title, &$url, $query ]
1893        );
1894    }
1895
1896    public function onGetLocalURL__Article( $title, &$url ) {
1897        return $this->container->run(
1898            'GetLocalURL::Article',
1899            [ $title, &$url ]
1900        );
1901    }
1902
1903    public function onGetLocalURL__Internal( $title, &$url, $query ) {
1904        return $this->container->run(
1905            'GetLocalURL::Internal',
1906            [ $title, &$url, $query ]
1907        );
1908    }
1909
1910    public function onGetLogTypesOnUser( &$types ) {
1911        return $this->container->run(
1912            'GetLogTypesOnUser',
1913            [ &$types ]
1914        );
1915    }
1916
1917    public function onGetMagicVariableIDs( &$variableIDs ) {
1918        return $this->container->run(
1919            'GetMagicVariableIDs',
1920            [ &$variableIDs ]
1921        );
1922    }
1923
1924    public function onGetMetadataVersion( &$version ) {
1925        return $this->container->run(
1926            'GetMetadataVersion',
1927            [ &$version ]
1928        );
1929    }
1930
1931    public function onGetNewMessagesAlert( &$newMessagesAlert, $newtalks, $user,
1932        $out
1933    ) {
1934        return $this->container->run(
1935            'GetNewMessagesAlert',
1936            [ &$newMessagesAlert, $newtalks, $user, $out ]
1937        );
1938    }
1939
1940    public function onGetPreferences( $user, &$preferences ) {
1941        return $this->container->run(
1942            'GetPreferences',
1943            [ $user, &$preferences ]
1944        );
1945    }
1946
1947    public function onGetRelativeTimestamp( &$output, &$diff, $timestamp,
1948        $relativeTo, $user, $lang
1949    ) {
1950        return $this->container->run(
1951            'GetRelativeTimestamp',
1952            [ &$output, &$diff, $timestamp, $relativeTo, $user, $lang ]
1953        );
1954    }
1955
1956    public function onGetSlotDiffRenderer( $contentHandler, &$slotDiffRenderer,
1957        $context
1958    ) {
1959        return $this->container->run(
1960            'GetSlotDiffRenderer',
1961            [ $contentHandler, &$slotDiffRenderer, $context ]
1962        );
1963    }
1964
1965    public function onGetUserBlock( $user, $ip, &$block ) {
1966        return $this->container->run(
1967            'GetUserBlock',
1968            [ $user, $ip, &$block ]
1969        );
1970    }
1971
1972    public function onPermissionErrorAudit(
1973        LinkTarget $title,
1974        UserIdentity $user,
1975        string $action,
1976        string $rigor,
1977        array $errors
1978    ): void {
1979        $this->container->run(
1980            'PermissionErrorAudit',
1981            [ $title, $user, $action, $rigor, $errors ],
1982            [ 'abortable' => false ]
1983        );
1984    }
1985
1986    public function onGetUserPermissionsErrors( $title, $user, $action, &$result ) {
1987        return $this->container->run(
1988            'getUserPermissionsErrors',
1989            [ $title, $user, $action, &$result ]
1990        );
1991    }
1992
1993    public function onGetUserPermissionsErrorsExpensive( $title, $user, $action,
1994        &$result
1995    ) {
1996        return $this->container->run(
1997            'getUserPermissionsErrorsExpensive',
1998            [ $title, $user, $action, &$result ]
1999        );
2000    }
2001
2002    public function onGitViewers( &$extTypes ) {
2003        return $this->container->run(
2004            'GitViewers',
2005            [ &$extTypes ]
2006        );
2007    }
2008
2009    public function onHistoryPageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
2010        return $this->container->run(
2011            'HistoryPageToolLinks',
2012            [ $context, $linkRenderer, &$links ]
2013        );
2014    }
2015
2016    public function onHistoryTools( $revRecord, &$links, $prevRevRecord, $userIdentity ) {
2017        return $this->container->run(
2018            'HistoryTools',
2019            [ $revRecord, &$links, $prevRevRecord, $userIdentity ]
2020        );
2021    }
2022
2023    public function onHtmlCacheUpdaterAppendUrls( $title, $mode, &$append ) {
2024        return $this->container->run(
2025            'HtmlCacheUpdaterAppendUrls',
2026            [ $title, $mode, &$append ]
2027        );
2028    }
2029
2030    public function onHtmlCacheUpdaterVaryUrls( $urls, &$append ) {
2031        return $this->container->run(
2032            'HtmlCacheUpdaterVaryUrls',
2033            [ $urls, &$append ]
2034        );
2035    }
2036
2037    public function onHTMLFileCache__useFileCache( $context ) {
2038        return $this->container->run(
2039            'HTMLFileCache::useFileCache',
2040            [ $context ]
2041        );
2042    }
2043
2044    public function onHtmlPageLinkRendererBegin( $linkRenderer, $target, &$text,
2045        &$customAttribs, &$query, &$ret
2046    ) {
2047        return $this->container->run(
2048            'HtmlPageLinkRendererBegin',
2049            [ $linkRenderer, $target, &$text, &$customAttribs, &$query, &$ret ]
2050        );
2051    }
2052
2053    public function onHtmlPageLinkRendererEnd( $linkRenderer, $target, $isKnown,
2054        &$text, &$attribs, &$ret
2055    ) {
2056        return $this->container->run(
2057            'HtmlPageLinkRendererEnd',
2058            [ $linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret ]
2059        );
2060    }
2061
2062    public function onImageBeforeProduceHTML( $linker, &$title, &$file,
2063        &$frameParams, &$handlerParams, &$time, &$res, $parser, &$query, &$widthOption
2064    ) {
2065        return $this->container->run(
2066            'ImageBeforeProduceHTML',
2067            [ $linker, &$title, &$file, &$frameParams, &$handlerParams, &$time,
2068                &$res, $parser, &$query, &$widthOption ]
2069        );
2070    }
2071
2072    public function onImageOpenShowImageInlineBefore( $imagePage, $output ) {
2073        return $this->container->run(
2074            'ImageOpenShowImageInlineBefore',
2075            [ $imagePage, $output ]
2076        );
2077    }
2078
2079    public function onImagePageAfterImageLinks( $imagePage, &$html ) {
2080        return $this->container->run(
2081            'ImagePageAfterImageLinks',
2082            [ $imagePage, &$html ]
2083        );
2084    }
2085
2086    public function onImagePageFileHistoryLine( $imageHistoryList, $file, &$line, &$css ) {
2087        return $this->container->run(
2088            'ImagePageFileHistoryLine',
2089            [ $imageHistoryList, $file, &$line, &$css ]
2090        );
2091    }
2092
2093    public function onImagePageFindFile( $page, &$file, &$displayFile ) {
2094        return $this->container->run(
2095            'ImagePageFindFile',
2096            [ $page, &$file, &$displayFile ]
2097        );
2098    }
2099
2100    public function onImagePageShowTOC( $page, &$toc ) {
2101        return $this->container->run(
2102            'ImagePageShowTOC',
2103            [ $page, &$toc ]
2104        );
2105    }
2106
2107    public function onImgAuthBeforeStream( &$title, &$path, &$name, &$result ) {
2108        return $this->container->run(
2109            'ImgAuthBeforeStream',
2110            [ &$title, &$path, &$name, &$result ]
2111        );
2112    }
2113
2114    public function onImgAuthModifyHeaders( $title, &$headers ) {
2115        return $this->container->run(
2116            'ImgAuthModifyHeaders',
2117            [ $title, &$headers ]
2118        );
2119    }
2120
2121    public function onImportHandleLogItemXMLTag( $reader, $logInfo ) {
2122        return $this->container->run(
2123            'ImportHandleLogItemXMLTag',
2124            [ $reader, $logInfo ]
2125        );
2126    }
2127
2128    public function onImportHandlePageXMLTag( $reader, &$pageInfo ) {
2129        return $this->container->run(
2130            'ImportHandlePageXMLTag',
2131            [ $reader, &$pageInfo ]
2132        );
2133    }
2134
2135    public function onImportHandleRevisionXMLTag( $reader, $pageInfo,
2136        $revisionInfo
2137    ) {
2138        return $this->container->run(
2139            'ImportHandleRevisionXMLTag',
2140            [ $reader, $pageInfo, $revisionInfo ]
2141        );
2142    }
2143
2144    public function onImportHandleContentXMLTag( $reader, $contentInfo ) {
2145        return $this->container->run(
2146            'ImportHandleContentXMLTag',
2147            [ $reader, $contentInfo ] );
2148    }
2149
2150    public function onImportHandleToplevelXMLTag( $reader ) {
2151        return $this->container->run(
2152            'ImportHandleToplevelXMLTag',
2153            [ $reader ]
2154        );
2155    }
2156
2157    public function onImportHandleUnknownUser( $name ) {
2158        return $this->container->run(
2159            'ImportHandleUnknownUser',
2160            [ $name ]
2161        );
2162    }
2163
2164    public function onImportHandleUploadXMLTag( $reader, $revisionInfo ) {
2165        return $this->container->run(
2166            'ImportHandleUploadXMLTag',
2167            [ $reader, $revisionInfo ]
2168        );
2169    }
2170
2171    public function onImportLogInterwikiLink( &$fullInterwikiPrefix, &$pageTitle ) {
2172        return $this->container->run(
2173            'ImportLogInterwikiLink',
2174            [ &$fullInterwikiPrefix, &$pageTitle ]
2175        );
2176    }
2177
2178    public function onImportSources( &$importSources ) {
2179        return $this->container->run(
2180            'ImportSources',
2181            [ &$importSources ]
2182        );
2183    }
2184
2185    public function onInfoAction( $context, &$pageInfo ) {
2186        return $this->container->run(
2187            'InfoAction',
2188            [ $context, &$pageInfo ]
2189        );
2190    }
2191
2192    public function onInitializeArticleMaybeRedirect( $title, $request,
2193        &$ignoreRedirect, &$target, &$article
2194    ) {
2195        return $this->container->run(
2196            'InitializeArticleMaybeRedirect',
2197            [ $title, $request, &$ignoreRedirect, &$target, &$article ]
2198        );
2199    }
2200
2201    public function onInternalParseBeforeLinks( $parser, &$text, $stripState ) {
2202        return $this->container->run(
2203            'InternalParseBeforeLinks',
2204            [ $parser, &$text, $stripState ]
2205        );
2206    }
2207
2208    public function onInterwikiLoadPrefix( $prefix, &$iwData ) {
2209        return $this->container->run(
2210            'InterwikiLoadPrefix',
2211            [ $prefix, &$iwData ]
2212        );
2213    }
2214
2215    public function onInvalidateEmailComplete( $user ) {
2216        return $this->container->run(
2217            'InvalidateEmailComplete',
2218            [ $user ]
2219        );
2220    }
2221
2222    public function onIRCLineURL( &$url, &$query, $rc ) {
2223        return $this->container->run(
2224            'IRCLineURL',
2225            [ &$url, &$query, $rc ]
2226        );
2227    }
2228
2229    public function onIsFileCacheable( $article ) {
2230        return $this->container->run(
2231            'IsFileCacheable',
2232            [ $article ]
2233        );
2234    }
2235
2236    public function onIsTrustedProxy( $ip, &$result ) {
2237        return $this->container->run(
2238            'IsTrustedProxy',
2239            [ $ip, &$result ]
2240        );
2241    }
2242
2243    public function onIsUploadAllowedFromUrl( $url, &$allowed ) {
2244        return $this->container->run(
2245            'IsUploadAllowedFromUrl',
2246            [ $url, &$allowed ]
2247        );
2248    }
2249
2250    public function onIsValidEmailAddr( $addr, &$result ) {
2251        return $this->container->run(
2252            'isValidEmailAddr',
2253            [ $addr, &$result ]
2254        );
2255    }
2256
2257    public function onIsValidPassword( $password, &$result, $user ) {
2258        return $this->container->run(
2259            'isValidPassword',
2260            [ $password, &$result, $user ]
2261        );
2262    }
2263
2264    public function onJsonValidateSave( JsonContent $content, PageIdentity $pageIdentity, StatusValue $status ) {
2265        return $this->container->run(
2266            'JsonValidateSave',
2267            [ $content, $pageIdentity, &$status ]
2268        );
2269    }
2270
2271    public function onLanguageGetNamespaces( &$namespaces ) {
2272        return $this->container->run(
2273            'LanguageGetNamespaces',
2274            [ &$namespaces ]
2275        );
2276    }
2277
2278    public function onLanguageGetTranslatedLanguageNames( &$names, $code ) {
2279        return $this->container->run(
2280            'LanguageGetTranslatedLanguageNames',
2281            [ &$names, $code ]
2282        );
2283    }
2284
2285    public function onLanguageLinks( $title, &$links, &$linkFlags ) {
2286        return $this->container->run(
2287            'LanguageLinks',
2288            [ $title, &$links, &$linkFlags ]
2289        );
2290    }
2291
2292    public function onLanguageSelector( $out, $cssClassName ) {
2293        return $this->container->run(
2294            'LanguageSelector',
2295            [ $out, $cssClassName ]
2296        );
2297    }
2298
2299    public function onLanguage__getMessagesFileName( $code, &$file ) {
2300        return $this->container->run(
2301            'Language::getMessagesFileName',
2302            [ $code, &$file ]
2303        );
2304    }
2305
2306    public function onLinkerGenerateRollbackLink( $revRecord, $context, $options, &$inner ) {
2307        return $this->container->run(
2308            'LinkerGenerateRollbackLink',
2309            [ $revRecord, $context, $options, &$inner ]
2310        );
2311    }
2312
2313    public function onLinkerMakeExternalImage( &$url, &$alt, &$img ) {
2314        return $this->container->run(
2315            'LinkerMakeExternalImage',
2316            [ &$url, &$alt, &$img ]
2317        );
2318    }
2319
2320    public function onLinkerMakeExternalLink( &$url, &$text, &$link, &$attribs,
2321        $linkType
2322    ) {
2323        return $this->container->run(
2324            'LinkerMakeExternalLink',
2325            [ &$url, &$text, &$link, &$attribs, $linkType ]
2326        );
2327    }
2328
2329    public function onLinkerMakeMediaLinkFile( $title, $file, &$html, &$attribs,
2330        &$ret
2331    ) {
2332        return $this->container->run(
2333            'LinkerMakeMediaLinkFile',
2334            [ $title, $file, &$html, &$attribs, &$ret ]
2335        );
2336    }
2337
2338    public function onLinksUpdate( $linksUpdate ) {
2339        return $this->container->run(
2340            'LinksUpdate',
2341            [ $linksUpdate ]
2342        );
2343    }
2344
2345    public function onLinksUpdateComplete( $linksUpdate, $ticket ) {
2346        return $this->container->run(
2347            'LinksUpdateComplete',
2348            [ $linksUpdate, $ticket ]
2349        );
2350    }
2351
2352    public function onListDefinedTags( &$tags ) {
2353        return $this->container->run(
2354            'ListDefinedTags',
2355            [ &$tags ]
2356        );
2357    }
2358
2359    public function onLoadExtensionSchemaUpdates( $updater ) {
2360        return $this->container->run(
2361            'LoadExtensionSchemaUpdates',
2362            [ $updater ],
2363            [ 'noServices' => true ]
2364        );
2365    }
2366
2367    public function onLocalFilePurgeThumbnails( $file, $archiveName, $urls ) {
2368        return $this->container->run(
2369            'LocalFilePurgeThumbnails',
2370            [ $file, $archiveName, $urls ]
2371        );
2372    }
2373
2374    public function onLocalFile__getHistory( $file, &$tables, &$fields, &$conds,
2375        &$opts, &$join_conds
2376    ) {
2377        return $this->container->run(
2378            'LocalFile::getHistory',
2379            [ $file, &$tables, &$fields, &$conds, &$opts, &$join_conds ]
2380        );
2381    }
2382
2383    public function onLocalisationCacheRecache( $cache, $code, &$alldata, $unused ) {
2384        return $this->container->run(
2385            'LocalisationCacheRecache',
2386            [ $cache, $code, &$alldata, $unused ]
2387        );
2388    }
2389
2390    public function onLocalisationCacheRecacheFallback( $cache, $code, &$alldata ) {
2391        return $this->container->run(
2392            'LocalisationCacheRecacheFallback',
2393            [ $cache, $code, &$alldata ]
2394        );
2395    }
2396
2397    public function onLocalUserCreated( $user, $autocreated ) {
2398        return $this->container->run(
2399            'LocalUserCreated',
2400            [ $user, $autocreated ]
2401        );
2402    }
2403
2404    public function onLogEventsListGetExtraInputs( $type, $logEventsList, &$input,
2405        &$formDescriptor
2406    ) {
2407        return $this->container->run(
2408            'LogEventsListGetExtraInputs',
2409            [ $type, $logEventsList, &$input, &$formDescriptor ]
2410        );
2411    }
2412
2413    public function onLogEventsListLineEnding( $page, &$ret, $entry, &$classes,
2414        &$attribs
2415    ) {
2416        return $this->container->run(
2417            'LogEventsListLineEnding',
2418            [ $page, &$ret, $entry, &$classes, &$attribs ]
2419        );
2420    }
2421
2422    public function onLogEventsListShowLogExtract( &$s, $types, $page, $user,
2423        $param
2424    ) {
2425        return $this->container->run(
2426            'LogEventsListShowLogExtract',
2427            [ &$s, $types, $page, $user, $param ]
2428        );
2429    }
2430
2431    public function onLogException( $e, $suppressed ) {
2432        return $this->container->run(
2433            'LogException',
2434            [ $e, $suppressed ]
2435        );
2436    }
2437
2438    public function onLoginFormValidErrorMessages( array &$messages ) {
2439        return $this->container->run(
2440            'LoginFormValidErrorMessages',
2441            [ &$messages ]
2442        );
2443    }
2444
2445    public function onLogLine( $log_type, $log_action, $title, $paramArray,
2446        &$comment, &$revert, $time
2447    ) {
2448        return $this->container->run(
2449            'LogLine',
2450            [ $log_type, $log_action, $title, $paramArray, &$comment,
2451                &$revert, $time ]
2452        );
2453    }
2454
2455    public function onLonelyPagesQuery( &$tables, &$conds, &$joinConds ) {
2456        return $this->container->run(
2457            'LonelyPagesQuery',
2458            [ &$tables, &$conds, &$joinConds ]
2459        );
2460    }
2461
2462    public function onMagicWordwgVariableIDs( &$variableIDs ) {
2463        return $this->container->run(
2464            'MagicWordwgVariableIDs',
2465            [ &$variableIDs ]
2466        );
2467    }
2468
2469    public function onMaintenanceRefreshLinksInit( $refreshLinks ) {
2470        return $this->container->run(
2471            'MaintenanceRefreshLinksInit',
2472            [ $refreshLinks ]
2473        );
2474    }
2475
2476    public function onMaintenanceShellStart(): void {
2477        $this->container->run(
2478            'MaintenanceShellStart',
2479            [],
2480            [ 'abortable' => false ]
2481        );
2482    }
2483
2484    public function onMaintenanceUpdateAddParams( &$params ) {
2485        return $this->container->run(
2486            'MaintenanceUpdateAddParams',
2487            [ &$params ]
2488        );
2489    }
2490
2491    public function onMakeGlobalVariablesScript( &$vars, $out ): void {
2492        $this->container->run(
2493            'MakeGlobalVariablesScript',
2494            [ &$vars, $out ],
2495            [ 'abortable' => false ]
2496        );
2497    }
2498
2499    public function onManualLogEntryBeforePublish( $logEntry ): void {
2500        $this->container->run(
2501            'ManualLogEntryBeforePublish',
2502            [ $logEntry ],
2503            [ 'abortable' => false ]
2504        );
2505    }
2506
2507    public function onMarkPatrolled( $rcid, $user, $wcOnlySysopsCanPatrol, $auto,
2508        &$tags
2509    ) {
2510        return $this->container->run(
2511            'MarkPatrolled',
2512            [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto, &$tags ]
2513        );
2514    }
2515
2516    public function onMarkPatrolledComplete( $rcid, $user, $wcOnlySysopsCanPatrol,
2517        $auto
2518    ) {
2519        return $this->container->run(
2520            'MarkPatrolledComplete',
2521            [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto ]
2522        );
2523    }
2524
2525    public function onMediaWikiPerformAction( $output, $article, $title, $user,
2526        $request, $mediaWiki
2527    ) {
2528        return $this->container->run(
2529            'MediaWikiPerformAction',
2530            [ $output, $article, $title, $user, $request, $mediaWiki ]
2531        );
2532    }
2533
2534    public function onMediaWikiServices( $services ) {
2535        return $this->container->run(
2536            'MediaWikiServices',
2537            [ $services ],
2538            [ 'noServices' => true ]
2539        );
2540    }
2541
2542    public function onMessageCacheFetchOverrides( array &$messages ): void {
2543        $this->container->run(
2544            'MessageCacheFetchOverrides',
2545            [ &$messages ],
2546            [ 'abortable' => false ]
2547        );
2548    }
2549
2550    public function onMessageCacheReplace( $title, $text ) {
2551        return $this->container->run(
2552            'MessageCacheReplace',
2553            [ $title, $text ]
2554        );
2555    }
2556
2557    public function onMessageCache__get( &$key ) {
2558        return $this->container->run(
2559            'MessageCache::get',
2560            [ &$key ]
2561        );
2562    }
2563
2564    public function onMessagesPreLoad( $title, &$message, $code ) {
2565        return $this->container->run(
2566            'MessagesPreLoad',
2567            [ $title, &$message, $code ]
2568        );
2569    }
2570
2571    public function onMimeMagicGuessFromContent( $mimeMagic, &$head, &$tail, $file,
2572        &$mime
2573    ) {
2574        return $this->container->run(
2575            'MimeMagicGuessFromContent',
2576            [ $mimeMagic, &$head, &$tail, $file, &$mime ]
2577        );
2578    }
2579
2580    public function onMimeMagicImproveFromExtension( $mimeMagic, $ext, &$mime ) {
2581        return $this->container->run(
2582            'MimeMagicImproveFromExtension',
2583            [ $mimeMagic, $ext, &$mime ]
2584        );
2585    }
2586
2587    public function onMimeMagicInit( $mimeMagic ) {
2588        return $this->container->run(
2589            'MimeMagicInit',
2590            [ $mimeMagic ]
2591        );
2592    }
2593
2594    public function onGetBlockErrorMessageKey( $block, &$key ) {
2595        return $this->container->run(
2596            'GetBlockErrorMessageKey',
2597            [ $block, &$key ]
2598        );
2599    }
2600
2601    public function onModifyExportQuery( $db, &$tables, $cond, &$opts,
2602        &$join_conds, &$conds
2603    ) {
2604        return $this->container->run(
2605            'ModifyExportQuery',
2606            [ $db, &$tables, $cond, &$opts, &$join_conds, &$conds ]
2607        );
2608    }
2609
2610    public function onMovePageCheckPermissions( $oldTitle, $newTitle, $user,
2611        $reason, $status
2612    ) {
2613        return $this->container->run(
2614            'MovePageCheckPermissions',
2615            [ $oldTitle, $newTitle, $user, $reason, $status ]
2616        );
2617    }
2618
2619    public function onMovePageIsValidMove( $oldTitle, $newTitle, $status ) {
2620        return $this->container->run(
2621            'MovePageIsValidMove',
2622            [ $oldTitle, $newTitle, $status ]
2623        );
2624    }
2625
2626    public function onMultiContentSave( $renderedRevision, $user, $summary, $flags,
2627        $status
2628    ) {
2629        return $this->container->run(
2630            'MultiContentSave',
2631            [ $renderedRevision, $user, $summary, $flags, $status ]
2632        );
2633    }
2634
2635    public function onNamespaceIsMovable( $index, &$result ) {
2636        return $this->container->run(
2637            'NamespaceIsMovable',
2638            [ $index, &$result ]
2639        );
2640    }
2641
2642    public function onNewDifferenceEngine( $title, &$oldId, &$newId, $old, $new ) {
2643        return $this->container->run(
2644            'NewDifferenceEngine',
2645            [ $title, &$oldId, &$newId, $old, $new ]
2646        );
2647    }
2648
2649    public function onNewPagesLineEnding( $page, &$ret, $row, &$classes, &$attribs ) {
2650        return $this->container->run(
2651            'NewPagesLineEnding',
2652            [ $page, &$ret, $row, &$classes, &$attribs ]
2653        );
2654    }
2655
2656    public function onOldChangesListRecentChangesLine( $changeslist, &$s, $rc,
2657        &$classes, &$attribs
2658    ) {
2659        return $this->container->run(
2660            'OldChangesListRecentChangesLine',
2661            [ $changeslist, &$s, $rc, &$classes, &$attribs ]
2662        );
2663    }
2664
2665    public function onOpenSearchUrls( &$urls ) {
2666        return $this->container->run(
2667            'OpenSearchUrls',
2668            [ &$urls ]
2669        );
2670    }
2671
2672    public function onOpportunisticLinksUpdate( $page, $title, $parserOutput ) {
2673        return $this->container->run(
2674            'OpportunisticLinksUpdate',
2675            [ $page, $title, $parserOutput ]
2676        );
2677    }
2678
2679    public function onOtherAutoblockLogLink( &$otherBlockLink ) {
2680        return $this->container->run(
2681            'OtherAutoblockLogLink',
2682            [ &$otherBlockLink ]
2683        );
2684    }
2685
2686    public function onOtherBlockLogLink( &$otherBlockLink, $ip ) {
2687        return $this->container->run(
2688            'OtherBlockLogLink',
2689            [ &$otherBlockLink, $ip ]
2690        );
2691    }
2692
2693    public function onOutputPageAfterGetHeadLinksArray( &$tags, $out ) {
2694        return $this->container->run(
2695            'OutputPageAfterGetHeadLinksArray',
2696            [ &$tags, $out ]
2697        );
2698    }
2699
2700    public function onOutputPageBeforeHTML( $out, &$text ) {
2701        return $this->container->run(
2702            'OutputPageBeforeHTML',
2703            [ $out, &$text ]
2704        );
2705    }
2706
2707    public function onOutputPageBodyAttributes( $out, $sk, &$bodyAttrs ): void {
2708        $this->container->run(
2709            'OutputPageBodyAttributes',
2710            [ $out, $sk, &$bodyAttrs ],
2711            [ 'abortable' => false ]
2712        );
2713    }
2714
2715    public function onOutputPageCheckLastModified( &$modifiedTimes, $out ) {
2716        return $this->container->run(
2717            'OutputPageCheckLastModified',
2718            [ &$modifiedTimes, $out ]
2719        );
2720    }
2721
2722    public function onOutputPageMakeCategoryLinks( $out, $categories, &$links ) {
2723        return $this->container->run(
2724            'OutputPageMakeCategoryLinks',
2725            [ $out, $categories, &$links ]
2726        );
2727    }
2728
2729    public function onOutputPageParserOutput( $outputPage, $parserOutput ): void {
2730        $this->container->run(
2731            'OutputPageParserOutput',
2732            [ $outputPage, $parserOutput ],
2733            [ 'abortable' => false ]
2734        );
2735    }
2736
2737    public function onPageContentLanguage( $title, &$pageLang, $userLang ) {
2738        return $this->container->run(
2739            'PageContentLanguage',
2740            [ $title, &$pageLang, $userLang ]
2741        );
2742    }
2743
2744    public function onPageContentSave( $wikiPage, $user, $content, &$summary,
2745        $isminor, $iswatch, $section, $flags, $status
2746    ) {
2747        return $this->container->run(
2748            'PageContentSave',
2749            [ $wikiPage, $user, $content, &$summary, $isminor, $iswatch,
2750                $section, $flags, $status ]
2751        );
2752    }
2753
2754    public function onPageDelete(
2755        ProperPageIdentity $page,
2756        Authority $deleter,
2757        string $reason,
2758        StatusValue $status,
2759        bool $suppress
2760    ) {
2761        return $this->container->run(
2762            'PageDelete',
2763            [ $page, $deleter, $reason, $status, $suppress ]
2764        );
2765    }
2766
2767    public function onPageDeleteComplete(
2768        ProperPageIdentity $page,
2769        Authority $deleter,
2770        string $reason,
2771        int $pageID,
2772        RevisionRecord $deletedRev,
2773        ManualLogEntry $logEntry,
2774        int $archivedRevisionCount
2775    ) {
2776        return $this->container->run(
2777            'PageDeleteComplete',
2778            [ $page, $deleter, $reason, $pageID, $deletedRev, $logEntry, $archivedRevisionCount ]
2779        );
2780    }
2781
2782    public function onPageDeletionDataUpdates( $title, $revision, &$updates ) {
2783        return $this->container->run(
2784            'PageDeletionDataUpdates',
2785            [ $title, $revision, &$updates ]
2786        );
2787    }
2788
2789    public function onPageUndelete(
2790        ProperPageIdentity $page,
2791        Authority $performer,
2792        string $reason,
2793        bool $unsuppress,
2794        array $timestamps,
2795        array $fileVersions,
2796        StatusValue $status
2797    ) {
2798        return $this->container->run(
2799            'PageUndelete',
2800            [ $page, $performer, $reason, $unsuppress, $timestamps, $fileVersions, $status ]
2801        );
2802    }
2803
2804    public function onPageUndeleteComplete(
2805        ProperPageIdentity $page,
2806        Authority $restorer,
2807        string $reason,
2808        RevisionRecord $restoredRev,
2809        ManualLogEntry $logEntry,
2810        int $restoredRevisionCount,
2811        bool $created,
2812        array $restoredPageIds
2813    ): void {
2814        $this->container->run(
2815            'PageUndeleteComplete',
2816            [
2817                $page,
2818                $restorer,
2819                $reason,
2820                $restoredRev,
2821                $logEntry,
2822                $restoredRevisionCount,
2823                $created,
2824                $restoredPageIds
2825            ],
2826            [ 'abortable' => false ]
2827        );
2828    }
2829
2830    public function onPageHistoryBeforeList( $article, $context ) {
2831        return $this->container->run(
2832            'PageHistoryBeforeList',
2833            [ $article, $context ]
2834        );
2835    }
2836
2837    public function onPageHistoryLineEnding( $historyAction, &$row, &$s, &$classes,
2838        &$attribs
2839    ) {
2840        return $this->container->run(
2841            'PageHistoryLineEnding',
2842            [ $historyAction, &$row, &$s, &$classes, &$attribs ]
2843        );
2844    }
2845
2846    public function onPageHistoryPager__doBatchLookups( $pager, $result ) {
2847        return $this->container->run(
2848            'PageHistoryPager::doBatchLookups',
2849            [ $pager, $result ]
2850        );
2851    }
2852
2853    public function onPageHistoryPager__getQueryInfo( $pager, &$queryInfo ) {
2854        return $this->container->run(
2855            'PageHistoryPager::getQueryInfo',
2856            [ $pager, &$queryInfo ]
2857        );
2858    }
2859
2860    public function onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
2861        return $this->container->run(
2862            'PageMoveComplete',
2863            [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
2864        );
2865    }
2866
2867    public function onPageMoveCompleting( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
2868        return $this->container->run(
2869            'PageMoveCompleting',
2870            [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
2871        );
2872    }
2873
2874    public function onPageRenderingHash( &$confstr, $user, &$forOptions ) {
2875        return $this->container->run(
2876            'PageRenderingHash',
2877            [ &$confstr, $user, &$forOptions ]
2878        );
2879    }
2880
2881    public function onPageSaveComplete( $wikiPage, $user, $summary, $flags,
2882        $revisionRecord, $editResult
2883    ) {
2884        return $this->container->run(
2885            'PageSaveComplete',
2886            [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult ]
2887        );
2888    }
2889
2890    public function onPageViewUpdates( $wikipage, $user ) {
2891        return $this->container->run(
2892            'PageViewUpdates',
2893            [ $wikipage, $user ]
2894        );
2895    }
2896
2897    public function onParserAfterParse( $parser, &$text, $stripState ) {
2898        return $this->container->run(
2899            'ParserAfterParse',
2900            [ $parser, &$text, $stripState ]
2901        );
2902    }
2903
2904    public function onParserAfterTidy( $parser, &$text ) {
2905        return $this->container->run(
2906            'ParserAfterTidy',
2907            [ $parser, &$text ]
2908        );
2909    }
2910
2911    public function onParserBeforeInternalParse( $parser, &$text, $stripState ) {
2912        return $this->container->run(
2913            'ParserBeforeInternalParse',
2914            [ $parser, &$text, $stripState ]
2915        );
2916    }
2917
2918    public function onParserBeforePreprocess( $parser, &$text, $stripState ) {
2919        return $this->container->run(
2920            'ParserBeforePreprocess',
2921            [ $parser, &$text, $stripState ]
2922        );
2923    }
2924
2925    public function onParserCacheSaveComplete( $parserCache, $parserOutput, $title,
2926        $popts, $revId
2927    ) {
2928        return $this->container->run(
2929            'ParserCacheSaveComplete',
2930            [ $parserCache, $parserOutput, $title, $popts, $revId ]
2931        );
2932    }
2933
2934    public function onParserClearState( $parser ) {
2935        return $this->container->run(
2936            'ParserClearState',
2937            [ $parser ]
2938        );
2939    }
2940
2941    public function onParserCloned( $parser ) {
2942        return $this->container->run(
2943            'ParserCloned',
2944            [ $parser ]
2945        );
2946    }
2947
2948    public function onParserFetchTemplateData( array $titles, array &$tplData ): bool {
2949        return $this->container->run(
2950            'ParserFetchTemplateData',
2951            [ $titles, &$tplData ]
2952        );
2953    }
2954
2955    public function onParserFirstCallInit( $parser ) {
2956        return $this->container->run(
2957            'ParserFirstCallInit',
2958            [ $parser ]
2959        );
2960    }
2961
2962    public function onParserGetVariableValueSwitch( $parser, &$variableCache,
2963        $magicWordId, &$ret, $frame
2964    ) {
2965        return $this->container->run(
2966            'ParserGetVariableValueSwitch',
2967            [ $parser, &$variableCache, $magicWordId, &$ret, $frame ]
2968        );
2969    }
2970
2971    public function onParserGetVariableValueTs( $parser, &$time ) {
2972        return $this->container->run(
2973            'ParserGetVariableValueTs',
2974            [ $parser, &$time ]
2975        );
2976    }
2977
2978    public function onParserLimitReportFormat( $key, &$value, &$report, $isHTML,
2979        $localize
2980    ) {
2981        return $this->container->run(
2982            'ParserLimitReportFormat',
2983            [ $key, &$value, &$report, $isHTML, $localize ]
2984        );
2985    }
2986
2987    public function onParserLimitReportPrepare( $parser, $output ) {
2988        return $this->container->run(
2989            'ParserLimitReportPrepare',
2990            [ $parser, $output ]
2991        );
2992    }
2993
2994    public function onParserLogLinterData( string $title, int $revId, array $lints ): bool {
2995        return $this->container->run(
2996            'ParserLogLinterData',
2997            [ $title, $revId, $lints ]
2998        );
2999    }
3000
3001    public function onParserMakeImageParams( $title, $file, &$params, $parser ) {
3002        return $this->container->run(
3003            'ParserMakeImageParams',
3004            [ $title, $file, &$params, $parser ]
3005        );
3006    }
3007
3008    public function onParserModifyImageHTML( Parser $parser, File $file,
3009        array $params, string &$html
3010    ): void {
3011        $this->container->run(
3012            'ParserModifyImageHTML',
3013            [ $parser, $file, $params, &$html ],
3014            [ 'abortable' => false ]
3015        );
3016    }
3017
3018    public function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyLoad ) {
3019        return $this->container->run(
3020            'ParserOptionsRegister',
3021            [ &$defaults, &$inCacheKey, &$lazyLoad ]
3022        );
3023    }
3024
3025    public function onParserOutputPostCacheTransform( $parserOutput, &$text,
3026        &$options
3027    ): void {
3028        $this->container->run(
3029            'ParserOutputPostCacheTransform',
3030            [ $parserOutput, &$text, &$options ],
3031            [ 'abortable' => false ]
3032        );
3033    }
3034
3035    public function onParserOutputStashForEdit( $page, $content, $output, $summary,
3036        $user
3037    ) {
3038        return $this->container->run(
3039            'ParserOutputStashForEdit',
3040            [ $page, $content, $output, $summary, $user ]
3041        );
3042    }
3043
3044    public function onParserPreSaveTransformComplete( $parser, &$text ) {
3045        return $this->container->run(
3046            'ParserPreSaveTransformComplete',
3047            [ $parser, &$text ]
3048        );
3049    }
3050
3051    public function onParserTestGlobals( &$globals ) {
3052        return $this->container->run(
3053            'ParserTestGlobals',
3054            [ &$globals ]
3055        );
3056    }
3057
3058    public function onPasswordPoliciesForUser( $user, &$effectivePolicy ) {
3059        return $this->container->run(
3060            'PasswordPoliciesForUser',
3061            [ $user, &$effectivePolicy ]
3062        );
3063    }
3064
3065    public function onPerformRetroactiveAutoblock( $block, &$blockIds ) {
3066        return $this->container->run(
3067            'PerformRetroactiveAutoblock',
3068            [ $block, &$blockIds ]
3069        );
3070    }
3071
3072    public function onPingLimiter( $user, $action, &$result, $incrBy ) {
3073        return $this->container->run(
3074            'PingLimiter',
3075            [ $user, $action, &$result, $incrBy ]
3076        );
3077    }
3078
3079    public function onPlaceNewSection( $content, $oldtext, $subject, &$text ) {
3080        return $this->container->run(
3081            'PlaceNewSection',
3082            [ $content, $oldtext, $subject, &$text ]
3083        );
3084    }
3085
3086    public function onPostLoginRedirect( &$returnTo, &$returnToQuery, &$type ) {
3087        return $this->container->run(
3088            'PostLoginRedirect',
3089            [ &$returnTo, &$returnToQuery, &$type ]
3090        );
3091    }
3092
3093    public function onPreferencesFormPreSave( $formData, $form, $user, &$result,
3094        $oldUserOptions
3095    ) {
3096        return $this->container->run(
3097            'PreferencesFormPreSave',
3098            [ $formData, $form, $user, &$result, $oldUserOptions ]
3099        );
3100    }
3101
3102    public function onPreferencesGetIcon( &$iconNames ) {
3103        return $this->container->run(
3104            'PreferencesGetIcon',
3105            [ &$iconNames ]
3106        );
3107    }
3108
3109    public function onPreferencesGetLayout( &$useMobileLayout, $skinName,
3110        $skinProperties = []
3111    ) {
3112        return $this->container->run(
3113            'PreferencesGetLayout',
3114            [ &$useMobileLayout, $skinName, $skinProperties ]
3115        );
3116    }
3117
3118    public function onPreferencesGetLegend( $form, $key, &$legend ) {
3119        return $this->container->run(
3120            'PreferencesGetLegend',
3121            [ $form, $key, &$legend ]
3122        );
3123    }
3124
3125    public function onPrefixSearchBackend( $ns, $search, $limit, &$results,
3126        $offset
3127    ) {
3128        return $this->container->run(
3129            'PrefixSearchBackend',
3130            [ $ns, $search, $limit, &$results, $offset ]
3131        );
3132    }
3133
3134    public function onPrefixSearchExtractNamespace( &$namespaces, &$search ) {
3135        return $this->container->run(
3136            'PrefixSearchExtractNamespace',
3137            [ &$namespaces, &$search ]
3138        );
3139    }
3140
3141    public function onPrefsEmailAudit( $user, $oldaddr, $newaddr ) {
3142        return $this->container->run(
3143            'PrefsEmailAudit',
3144            [ $user, $oldaddr, $newaddr ]
3145        );
3146    }
3147
3148    public function onProtectionForm__buildForm( $article, &$output ) {
3149        return $this->container->run(
3150            'ProtectionForm::buildForm',
3151            [ $article, &$output ]
3152        );
3153    }
3154
3155    public function onProtectionFormAddFormFields( $article, &$hookFormOptions ) {
3156        return $this->container->run(
3157            'ProtectionFormAddFormFields',
3158            [ $article, &$hookFormOptions ]
3159        );
3160    }
3161
3162    public function onProtectionForm__save( $article, &$errorMsg, $reasonstr ) {
3163        return $this->container->run(
3164            'ProtectionForm::save',
3165            [ $article, &$errorMsg, $reasonstr ]
3166        );
3167    }
3168
3169    public function onProtectionForm__showLogExtract( $article, $out ) {
3170        return $this->container->run(
3171            'ProtectionForm::showLogExtract',
3172            [ $article, $out ]
3173        );
3174    }
3175
3176    public function onRandomPageQuery( &$tables, &$conds, &$joinConds ) {
3177        return $this->container->run(
3178            'RandomPageQuery',
3179            [ &$tables, &$conds, &$joinConds ]
3180        );
3181    }
3182
3183    public function onRawPageViewBeforeOutput( $obj, &$text ) {
3184        return $this->container->run(
3185            'RawPageViewBeforeOutput',
3186            [ $obj, &$text ]
3187        );
3188    }
3189
3190    public function onRecentChangesPurgeRows( $rows ): void {
3191        $this->container->run(
3192            'RecentChangesPurgeRows',
3193            [ $rows ]
3194        );
3195    }
3196
3197    public function onRecentChange_save( $recentChange ) {
3198        return $this->container->run(
3199            'RecentChange_save',
3200            [ $recentChange ]
3201        );
3202    }
3203
3204    public function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
3205        return $this->container->run(
3206            'RedirectSpecialArticleRedirectParams',
3207            [ &$redirectParams ]
3208        );
3209    }
3210
3211    public function onRejectParserCacheValue( $parserOutput, $wikiPage,
3212        $parserOptions
3213    ) {
3214        return $this->container->run(
3215            'RejectParserCacheValue',
3216            [ $parserOutput, $wikiPage, $parserOptions ]
3217        );
3218    }
3219
3220    public function onRenameUserAbort( int $uid, string $old, string $new ) {
3221        return $this->container->run(
3222            'RenameUserAbort',
3223            [ $uid, $old, $new ]
3224        );
3225    }
3226
3227    public function onRenameUserComplete( int $uid, string $old, string $new ): void {
3228        $this->container->run(
3229            'RenameUserComplete',
3230            [ $uid, $old, $new ],
3231            [ 'abortable' => false ]
3232        );
3233    }
3234
3235    public function onRenameUserPreRename( int $uid, string $old, string $new ): void {
3236        $this->container->run(
3237            'RenameUserPreRename',
3238            [ $uid, $old, $new ],
3239            [ 'abortable' => false ]
3240        );
3241    }
3242
3243    public function onRenameUserSQL( RenameuserSQL $renameUserSql ): void {
3244        $this->container->run(
3245            'RenameUserSQL',
3246            [ $renameUserSql ],
3247            [ 'abortable' => false ]
3248        );
3249    }
3250
3251    public function onRenameUserWarning( string $oldUsername, string $newUsername, array &$warnings ): void {
3252        $this->container->run(
3253            'RenameUserWarning',
3254            [ $oldUsername, $newUsername, &$warnings ],
3255            [ 'abortable' => false ]
3256        );
3257    }
3258
3259    public function onRequestContextCreateSkin( $context, &$skin ) {
3260        return $this->container->run(
3261            'RequestContextCreateSkin',
3262            [ $context, &$skin ]
3263        );
3264    }
3265
3266    public function onResetPasswordExpiration( $user, &$newExpire ) {
3267        return $this->container->run(
3268            'ResetPasswordExpiration',
3269            [ $user, &$newExpire ]
3270        );
3271    }
3272
3273    public function onRevisionDataUpdates( $title, $renderedRevision, &$updates ) {
3274        return $this->container->run(
3275            'RevisionDataUpdates',
3276            [ $title, $renderedRevision, &$updates ]
3277        );
3278    }
3279
3280    public function onRevisionFromEditComplete( $wikiPage, $rev, $originalRevId, $user, &$tags ) {
3281        return $this->container->run(
3282            'RevisionFromEditComplete',
3283            [ $wikiPage, $rev, $originalRevId, $user, &$tags ]
3284        );
3285    }
3286
3287    public function onRevisionRecordInserted( $revisionRecord ) {
3288        return $this->container->run(
3289            'RevisionRecordInserted',
3290            [ $revisionRecord ]
3291        );
3292    }
3293
3294    public function onRevisionUndeleted( $revisionRecord, $oldPageID ) {
3295        return $this->container->run(
3296            'RevisionUndeleted',
3297            [ $revisionRecord, $oldPageID ]
3298        );
3299    }
3300
3301    public function onRollbackComplete( $wikiPage, $user, $revision, $current ) {
3302        return $this->container->run(
3303            'RollbackComplete',
3304            [ $wikiPage, $user, $revision, $current ]
3305        );
3306    }
3307
3308    public function onSearchableNamespaces( &$arr ) {
3309        return $this->container->run(
3310            'SearchableNamespaces',
3311            [ &$arr ]
3312        );
3313    }
3314
3315    public function onSearchAfterNoDirectMatch( $term, &$title ) {
3316        return $this->container->run(
3317            'SearchAfterNoDirectMatch',
3318            [ $term, &$title ]
3319        );
3320    }
3321
3322    public function onSearchDataForIndex( &$fields, $handler, $page, $output, $engine ) {
3323        return $this->container->run(
3324            'SearchDataForIndex',
3325            [ &$fields, $handler, $page, $output, $engine ]
3326        );
3327    }
3328
3329    public function onSearchDataForIndex2( array &$fields, \ContentHandler $handler,
3330        \WikiPage $page, ParserOutput $output, \SearchEngine $engine, RevisionRecord $revision
3331    ) {
3332        return $this->container->run(
3333            'SearchDataForIndex2',
3334            [ &$fields, $handler, $page, $output, $engine, $revision ]
3335        );
3336    }
3337
3338    public function onSearchGetNearMatch( $term, &$title ) {
3339        return $this->container->run(
3340            'SearchGetNearMatch',
3341            [ $term, &$title ]
3342        );
3343    }
3344
3345    public function onSearchGetNearMatchBefore( $allSearchTerms, &$titleResult ) {
3346        return $this->container->run(
3347            'SearchGetNearMatchBefore',
3348            [ $allSearchTerms, &$titleResult ]
3349        );
3350    }
3351
3352    public function onSearchGetNearMatchComplete( $term, &$title ) {
3353        return $this->container->run(
3354            'SearchGetNearMatchComplete',
3355            [ $term, &$title ]
3356        );
3357    }
3358
3359    public function onSearchIndexFields( &$fields, $engine ) {
3360        return $this->container->run(
3361            'SearchIndexFields',
3362            [ &$fields, $engine ]
3363        );
3364    }
3365
3366    public function onSearchResultInitFromTitle( $title, &$id ) {
3367        return $this->container->run(
3368            'SearchResultInitFromTitle',
3369            [ $title, &$id ]
3370        );
3371    }
3372
3373    public function onSearchResultProvideDescription( array $pageIdentities, &$descriptions ) {
3374        return $this->container->run(
3375            'SearchResultProvideDescription',
3376            [ $pageIdentities, &$descriptions ]
3377        );
3378    }
3379
3380    public function onSearchResultProvideThumbnail( array $pageIdentities, &$thumbnails, int $size = null ) {
3381        return $this->container->run(
3382            'SearchResultProvideThumbnail',
3383            [ $pageIdentities, &$thumbnails, $size ]
3384        );
3385    }
3386
3387    public function onSearchResultsAugment( &$setAugmentors, &$rowAugmentors ) {
3388        return $this->container->run(
3389            'SearchResultsAugment',
3390            [ &$setAugmentors, &$rowAugmentors ]
3391        );
3392    }
3393
3394    public function onSecuritySensitiveOperationStatus( &$status, $operation,
3395        $session, $timeSinceAuth
3396    ) {
3397        return $this->container->run(
3398            'SecuritySensitiveOperationStatus',
3399            [ &$status, $operation, $session, $timeSinceAuth ]
3400        );
3401    }
3402
3403    public function onSelfLinkBegin( $nt, &$html, &$trail, &$prefix, &$ret ) {
3404        return $this->container->run(
3405            'SelfLinkBegin',
3406            [ $nt, &$html, &$trail, &$prefix, &$ret ]
3407        );
3408    }
3409
3410    public function onSendWatchlistEmailNotification( $targetUser, $title, $enotif ) {
3411        return $this->container->run(
3412            'SendWatchlistEmailNotification',
3413            [ $targetUser, $title, $enotif ]
3414        );
3415    }
3416
3417    public function onSessionCheckInfo( &$reason, $info, $request, $metadata,
3418        $data
3419    ) {
3420        return $this->container->run(
3421            'SessionCheckInfo',
3422            [ &$reason, $info, $request, $metadata, $data ]
3423        );
3424    }
3425
3426    public function onSessionMetadata( $backend, &$metadata, $requests ) {
3427        return $this->container->run(
3428            'SessionMetadata',
3429            [ $backend, &$metadata, $requests ]
3430        );
3431    }
3432
3433    public function onSetupAfterCache() {
3434        return $this->container->run(
3435            'SetupAfterCache',
3436            []
3437        );
3438    }
3439
3440    public function onShortPagesQuery( &$tables, &$conds, &$joinConds, &$options ) {
3441        return $this->container->run(
3442            'ShortPagesQuery',
3443            [ &$tables, &$conds, &$joinConds, &$options ]
3444        );
3445    }
3446
3447    public function onShowMissingArticle( $article ) {
3448        return $this->container->run(
3449            'ShowMissingArticle',
3450            [ $article ]
3451        );
3452    }
3453
3454    public function onShowSearchHit( $searchPage, $result, $terms, &$link,
3455        &$redirect, &$section, &$extract, &$score, &$size, &$date, &$related, &$html
3456    ) {
3457        return $this->container->run(
3458            'ShowSearchHit',
3459            [ $searchPage, $result, $terms, &$link, &$redirect, &$section,
3460                &$extract, &$score, &$size, &$date, &$related, &$html ]
3461        );
3462    }
3463
3464    public function onShowSearchHitTitle( &$title, &$titleSnippet, $result, $terms,
3465        $specialSearch, &$query, &$attributes
3466    ) {
3467        return $this->container->run(
3468            'ShowSearchHitTitle',
3469            [ &$title, &$titleSnippet, $result, $terms, $specialSearch,
3470                &$query, &$attributes ]
3471        );
3472    }
3473
3474    public function onSidebarBeforeOutput( $skin, &$sidebar ): void {
3475        $this->container->run(
3476            'SidebarBeforeOutput',
3477            [ $skin, &$sidebar ],
3478            [ 'abortable' => false ]
3479        );
3480    }
3481
3482    public function onSiteNoticeAfter( &$siteNotice, $skin ) {
3483        return $this->container->run(
3484            'SiteNoticeAfter',
3485            [ &$siteNotice, $skin ]
3486        );
3487    }
3488
3489    public function onSiteNoticeBefore( &$siteNotice, $skin ) {
3490        return $this->container->run(
3491            'SiteNoticeBefore',
3492            [ &$siteNotice, $skin ]
3493        );
3494    }
3495
3496    public function onSkinPageReadyConfig( RL\Context $context,
3497        array &$config
3498    ): void {
3499        $this->container->run(
3500            'SkinPageReadyConfig',
3501            [ $context, &$config ],
3502            [ 'abortable' => false ]
3503        );
3504    }
3505
3506    public function onSkinAddFooterLinks( Skin $skin, string $key, array &$footerItems ) {
3507        $this->container->run(
3508            'SkinAddFooterLinks',
3509            [ $skin, $key, &$footerItems ]
3510        );
3511    }
3512
3513    public function onSkinAfterBottomScripts( $skin, &$text ) {
3514        return $this->container->run(
3515            'SkinAfterBottomScripts',
3516            [ $skin, &$text ]
3517        );
3518    }
3519
3520    public function onSkinAfterContent( &$data, $skin ) {
3521        return $this->container->run(
3522            'SkinAfterContent',
3523            [ &$data, $skin ]
3524        );
3525    }
3526
3527    public function onSkinAfterPortlet( $skin, $portlet, &$html ) {
3528        return $this->container->run(
3529            'SkinAfterPortlet',
3530            [ $skin, $portlet, &$html ]
3531        );
3532    }
3533
3534    public function onSkinBuildSidebar( $skin, &$bar ) {
3535        return $this->container->run(
3536            'SkinBuildSidebar',
3537            [ $skin, &$bar ]
3538        );
3539    }
3540
3541    public function onSkinCopyrightFooter( $title, $type, &$msg, &$link ) {
3542        return $this->container->run(
3543            'SkinCopyrightFooter',
3544            [ $title, $type, &$msg, &$link ]
3545        );
3546    }
3547
3548    public function onSkinEditSectionLinks( $skin, $title, $section, $tooltip,
3549        &$result, $lang
3550    ) {
3551        return $this->container->run(
3552            'SkinEditSectionLinks',
3553            [ $skin, $title, $section, $tooltip, &$result, $lang ]
3554        );
3555    }
3556
3557    public function onSkinPreloadExistence( &$titles, $skin ) {
3558        return $this->container->run(
3559            'SkinPreloadExistence',
3560            [ &$titles, $skin ]
3561        );
3562    }
3563
3564    public function onSkinSubPageSubtitle( &$subpages, $skin, $out ) {
3565        return $this->container->run(
3566            'SkinSubPageSubtitle',
3567            [ &$subpages, $skin, $out ]
3568        );
3569    }
3570
3571    public function onSkinTemplateGetLanguageLink( &$languageLink,
3572        $languageLinkTitle, $title, $outputPage
3573    ) {
3574        return $this->container->run(
3575            'SkinTemplateGetLanguageLink',
3576            [ &$languageLink, $languageLinkTitle, $title, $outputPage ]
3577        );
3578    }
3579
3580    public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
3581        $this->container->run(
3582            'SkinTemplateNavigation::Universal',
3583            [ $sktemplate, &$links ],
3584            [ 'abortable' => false ]
3585        );
3586    }
3587
3588    public function onSoftwareInfo( &$software ) {
3589        return $this->container->run(
3590            'SoftwareInfo',
3591            [ &$software ]
3592        );
3593    }
3594
3595    public function onSpecialBlockModifyFormFields( $sp, &$fields ) {
3596        return $this->container->run(
3597            'SpecialBlockModifyFormFields',
3598            [ $sp, &$fields ]
3599        );
3600    }
3601
3602    public function onSpecialContributionsBeforeMainOutput( $id, $user, $sp ) {
3603        return $this->container->run(
3604            'SpecialContributionsBeforeMainOutput',
3605            [ $id, $user, $sp ]
3606        );
3607    }
3608
3609    public function onSpecialContributions__formatRow__flags( $context, $row,
3610        &$flags
3611    ) {
3612        return $this->container->run(
3613            'SpecialContributions::formatRow::flags',
3614            [ $context, $row, &$flags ]
3615        );
3616    }
3617
3618    public function onSpecialContributions__getForm__filters( $sp, &$filters ) {
3619        return $this->container->run(
3620            'SpecialContributions::getForm::filters',
3621            [ $sp, &$filters ]
3622        );
3623    }
3624
3625    public function onSpecialCreateAccountBenefits( ?string &$html, array $info, array &$options ) {
3626        return $this->container->run(
3627            'SpecialCreateAccountBenefits',
3628            [ &$html, $info, &$options ]
3629        );
3630    }
3631
3632    public function onSpecialExportGetExtraPages( $inputPages, &$extraPages ) {
3633        return $this->container->run(
3634            'SpecialExportGetExtraPages',
3635            [ $inputPages, &$extraPages ]
3636        );
3637    }
3638
3639    public function onSpecialListusersDefaultQuery( $pager, &$query ) {
3640        return $this->container->run(
3641            'SpecialListusersDefaultQuery',
3642            [ $pager, &$query ]
3643        );
3644    }
3645
3646    public function onSpecialListusersFormatRow( &$item, $row ) {
3647        return $this->container->run(
3648            'SpecialListusersFormatRow',
3649            [ &$item, $row ]
3650        );
3651    }
3652
3653    public function onSpecialListusersHeader( $pager, &$out ) {
3654        return $this->container->run(
3655            'SpecialListusersHeader',
3656            [ $pager, &$out ]
3657        );
3658    }
3659
3660    public function onSpecialListusersHeaderForm( $pager, &$out ) {
3661        return $this->container->run(
3662            'SpecialListusersHeaderForm',
3663            [ $pager, &$out ]
3664        );
3665    }
3666
3667    public function onSpecialListusersQueryInfo( $pager, &$query ) {
3668        return $this->container->run(
3669            'SpecialListusersQueryInfo',
3670            [ $pager, &$query ]
3671        );
3672    }
3673
3674    public function onSpecialLogAddLogSearchRelations( $type, $request, &$qc ) {
3675        return $this->container->run(
3676            'SpecialLogAddLogSearchRelations',
3677            [ $type, $request, &$qc ]
3678        );
3679    }
3680
3681    public function onSpecialMovepageAfterMove( $movePage, $oldTitle, $newTitle ) {
3682        return $this->container->run(
3683            'SpecialMovepageAfterMove',
3684            [ $movePage, $oldTitle, $newTitle ]
3685        );
3686    }
3687
3688    public function onSpecialMuteModifyFormFields( $target, $user, &$fields ) {
3689        return $this->container->run(
3690            'SpecialMuteModifyFormFields',
3691            [ $target, $user, &$fields ]
3692        );
3693    }
3694
3695    public function onSpecialNewpagesConditions( $special, $opts, &$conds,
3696        &$tables, &$fields, &$join_conds
3697    ) {
3698        return $this->container->run(
3699            'SpecialNewpagesConditions',
3700            [ $special, $opts, &$conds, &$tables, &$fields, &$join_conds ]
3701        );
3702    }
3703
3704    public function onSpecialNewPagesFilters( $special, &$filters ) {
3705        return $this->container->run(
3706            'SpecialNewPagesFilters',
3707            [ $special, &$filters ]
3708        );
3709    }
3710
3711    public function onSpecialPageAfterExecute( $special, $subPage ) {
3712        return $this->container->run(
3713            'SpecialPageAfterExecute',
3714            [ $special, $subPage ]
3715        );
3716    }
3717
3718    public function onSpecialPageBeforeExecute( $special, $subPage ) {
3719        return $this->container->run(
3720            'SpecialPageBeforeExecute',
3721            [ $special, $subPage ]
3722        );
3723    }
3724
3725    public function onSpecialPageBeforeFormDisplay( $name, $form ) {
3726        return $this->container->run(
3727            'SpecialPageBeforeFormDisplay',
3728            [ $name, $form ]
3729        );
3730    }
3731
3732    public function onSpecialPage_initList( &$list ) {
3733        return $this->container->run(
3734            'SpecialPage_initList',
3735            [ &$list ]
3736        );
3737    }
3738
3739    public function onSpecialPasswordResetOnSubmit( &$users, $data, &$error ) {
3740        return $this->container->run(
3741            'SpecialPasswordResetOnSubmit',
3742            [ &$users, $data, &$error ]
3743        );
3744    }
3745
3746    public function onSpecialPrefixIndexGetFormFilters( IContextSource $contextSource, array &$filters ) {
3747        $this->container->run(
3748            'SpecialPrefixIndexGetFormFilters',
3749            [ $contextSource, &$filters ],
3750            [ 'abortable' => false ]
3751        );
3752    }
3753
3754    public function onSpecialPrefixIndexQuery( array $fieldData, SelectQueryBuilder $queryBuilder ) {
3755        $this->container->run(
3756            'SpecialPrefixIndexQuery',
3757            [ $fieldData, $queryBuilder ],
3758            [ 'abortable' => false ]
3759        );
3760    }
3761
3762    public function onSpecialRandomGetRandomTitle( &$randstr, &$isRedir,
3763        &$namespaces, &$extra, &$title
3764    ) {
3765        return $this->container->run(
3766            'SpecialRandomGetRandomTitle',
3767            [ &$randstr, &$isRedir, &$namespaces, &$extra, &$title ]
3768        );
3769    }
3770
3771    public function onSpecialRecentChangesPanel( &$extraOpts, $opts ) {
3772        return $this->container->run(
3773            'SpecialRecentChangesPanel',
3774            [ &$extraOpts, $opts ]
3775        );
3776    }
3777
3778    public function onSpecialResetTokensTokens( &$tokens ) {
3779        return $this->container->run(
3780            'SpecialResetTokensTokens',
3781            [ &$tokens ]
3782        );
3783    }
3784
3785    public function onSpecialSearchCreateLink( $t, &$params ) {
3786        return $this->container->run(
3787            'SpecialSearchCreateLink',
3788            [ $t, &$params ]
3789        );
3790    }
3791
3792    public function onSpecialSearchGoResult( $term, $title, &$url ) {
3793        return $this->container->run(
3794            'SpecialSearchGoResult',
3795            [ $term, $title, &$url ]
3796        );
3797    }
3798
3799    public function onSpecialSearchNogomatch( &$title ) {
3800        return $this->container->run(
3801            'SpecialSearchNogomatch',
3802            [ &$title ]
3803        );
3804    }
3805
3806    public function onSpecialSearchPowerBox( &$showSections, $term, &$opts ) {
3807        return $this->container->run(
3808            'SpecialSearchPowerBox',
3809            [ &$showSections, $term, &$opts ]
3810        );
3811    }
3812
3813    public function onSpecialSearchProfileForm( $search, &$form, $profile, $term,
3814        $opts
3815    ) {
3816        return $this->container->run(
3817            'SpecialSearchProfileForm',
3818            [ $search, &$form, $profile, $term, $opts ]
3819        );
3820    }
3821
3822    public function onSpecialSearchProfiles( &$profiles ) {
3823        return $this->container->run(
3824            'SpecialSearchProfiles',
3825            [ &$profiles ]
3826        );
3827    }
3828
3829    public function onSpecialSearchResults( $term, &$titleMatches, &$textMatches ) {
3830        return $this->container->run(
3831            'SpecialSearchResults',
3832            [ $term, &$titleMatches, &$textMatches ]
3833        );
3834    }
3835
3836    public function onSpecialSearchResultsAppend( $specialSearch, $output, $term ) {
3837        return $this->container->run(
3838            'SpecialSearchResultsAppend',
3839            [ $specialSearch, $output, $term ]
3840        );
3841    }
3842
3843    public function onSpecialSearchResultsPrepend( $specialSearch, $output, $term ) {
3844        return $this->container->run(
3845            'SpecialSearchResultsPrepend',
3846            [ $specialSearch, $output, $term ]
3847        );
3848    }
3849
3850    public function onSpecialSearchSetupEngine( $search, $profile, $engine ) {
3851        return $this->container->run(
3852            'SpecialSearchSetupEngine',
3853            [ $search, $profile, $engine ]
3854        );
3855    }
3856
3857    public function onSpecialStatsAddExtra( &$extraStats, $context ) {
3858        return $this->container->run(
3859            'SpecialStatsAddExtra',
3860            [ &$extraStats, $context ]
3861        );
3862    }
3863
3864    public function onSpecialTrackingCategories__generateCatLink( $specialPage,
3865        $catTitle, &$html
3866    ) {
3867        return $this->container->run(
3868            'SpecialTrackingCategories::generateCatLink',
3869            [ $specialPage, $catTitle, &$html ]
3870        );
3871    }
3872
3873    public function onSpecialTrackingCategories__preprocess( $specialPage,
3874        $trackingCategories
3875    ) {
3876        return $this->container->run(
3877            'SpecialTrackingCategories::preprocess',
3878            [ $specialPage, $trackingCategories ]
3879        );
3880    }
3881
3882    public function onSpecialUploadComplete( $form ) {
3883        return $this->container->run(
3884            'SpecialUploadComplete',
3885            [ $form ]
3886        );
3887    }
3888
3889    public function onSpecialVersionVersionUrl( $version, &$versionUrl ) {
3890        return $this->container->run(
3891            'SpecialVersionVersionUrl',
3892            [ $version, &$versionUrl ]
3893        );
3894    }
3895
3896    public function onSpecialWatchlistGetNonRevisionTypes( &$nonRevisionTypes ) {
3897        return $this->container->run(
3898            'SpecialWatchlistGetNonRevisionTypes',
3899            [ &$nonRevisionTypes ]
3900        );
3901    }
3902
3903    public function onTempUserCreatedRedirect(
3904        Session $session,
3905        UserIdentity $user,
3906        string $returnTo,
3907        string $returnToQuery,
3908        string $returnToAnchor,
3909        &$redirectUrl
3910    ) {
3911        return $this->container->run(
3912            'TempUserCreatedRedirect',
3913            [ $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ]
3914        );
3915    }
3916
3917    public function onTestCanonicalRedirect( $request, $title, $output ) {
3918        return $this->container->run(
3919            'TestCanonicalRedirect',
3920            [ $request, $title, $output ]
3921        );
3922    }
3923
3924    public function onThumbnailBeforeProduceHTML( $thumbnail, &$attribs,
3925        &$linkAttribs
3926    ) {
3927        return $this->container->run(
3928            'ThumbnailBeforeProduceHTML',
3929            [ $thumbnail, &$attribs, &$linkAttribs ]
3930        );
3931    }
3932
3933    public function onTitleExists( $title, &$exists ) {
3934        return $this->container->run(
3935            'TitleExists',
3936            [ $title, &$exists ]
3937        );
3938    }
3939
3940    public function onTitleGetEditNotices( $title, $oldid, &$notices ) {
3941        return $this->container->run(
3942            'TitleGetEditNotices',
3943            [ $title, $oldid, &$notices ]
3944        );
3945    }
3946
3947    public function onTitleGetRestrictionTypes( $title, &$types ) {
3948        return $this->container->run(
3949            'TitleGetRestrictionTypes',
3950            [ $title, &$types ]
3951        );
3952    }
3953
3954    public function onTitleIsAlwaysKnown( $title, &$isKnown ) {
3955        return $this->container->run(
3956            'TitleIsAlwaysKnown',
3957            [ $title, &$isKnown ]
3958        );
3959    }
3960
3961    public function onTitleIsMovable( $title, &$result ) {
3962        return $this->container->run(
3963            'TitleIsMovable',
3964            [ $title, &$result ]
3965        );
3966    }
3967
3968    public function onTitleMove( $old, $nt, $user, $reason, &$status ) {
3969        return $this->container->run(
3970            'TitleMove',
3971            [ $old, $nt, $user, $reason, &$status ]
3972        );
3973    }
3974
3975    public function onTitleMoveStarting( $old, $nt, $user ) {
3976        return $this->container->run(
3977            'TitleMoveStarting',
3978            [ $old, $nt, $user ]
3979        );
3980    }
3981
3982    public function onTitleQuickPermissions( $title, $user, $action, &$errors,
3983        $doExpensiveQueries, $short
3984    ) {
3985        return $this->container->run(
3986            'TitleQuickPermissions',
3987            [ $title, $user, $action, &$errors, $doExpensiveQueries, $short ]
3988        );
3989    }
3990
3991    public function onTitleReadWhitelist( $title, $user, &$whitelisted ) {
3992        return $this->container->run(
3993            'TitleReadWhitelist',
3994            [ $title, $user, &$whitelisted ]
3995        );
3996    }
3997
3998    public function onTitleSquidURLs( $title, &$urls ) {
3999        return $this->container->run(
4000            'TitleSquidURLs',
4001            [ $title, &$urls ]
4002        );
4003    }
4004
4005    public function onUnblockUser( $block, $user, &$reason ) {
4006        return $this->container->run(
4007            'UnblockUser',
4008            [ $block, $user, &$reason ]
4009        );
4010    }
4011
4012    public function onUnblockUserComplete( $block, $user ) {
4013        return $this->container->run(
4014            'UnblockUserComplete',
4015            [ $block, $user ]
4016        );
4017    }
4018
4019    public function onUndeleteForm__showHistory( &$archive, $title ) {
4020        return $this->container->run(
4021            'UndeleteForm::showHistory',
4022            [ &$archive, $title ]
4023        );
4024    }
4025
4026    public function onUndeleteForm__showRevision( &$archive, $title ) {
4027        return $this->container->run(
4028            'UndeleteForm::showRevision',
4029            [ &$archive, $title ]
4030        );
4031    }
4032
4033    public function onUndeletePageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
4034        return $this->container->run(
4035            'UndeletePageToolLinks',
4036            [ $context, $linkRenderer, &$links ]
4037        );
4038    }
4039
4040    public function onUnitTestsAfterDatabaseSetup( $database, $prefix ) {
4041        return $this->container->run(
4042            'UnitTestsAfterDatabaseSetup',
4043            [ $database, $prefix ]
4044        );
4045    }
4046
4047    public function onUnitTestsBeforeDatabaseTeardown() {
4048        return $this->container->run(
4049            'UnitTestsBeforeDatabaseTeardown',
4050            []
4051        );
4052    }
4053
4054    public function onUnitTestsList( &$paths ) {
4055        return $this->container->run(
4056            'UnitTestsList',
4057            [ &$paths ]
4058        );
4059    }
4060
4061    public function onUnwatchArticle( $user, $page, &$status ) {
4062        return $this->container->run(
4063            'UnwatchArticle',
4064            [ $user, $page, &$status ]
4065        );
4066    }
4067
4068    public function onUnwatchArticleComplete( $user, $page ) {
4069        return $this->container->run(
4070            'UnwatchArticleComplete',
4071            [ $user, $page ]
4072        );
4073    }
4074
4075    public function onUpdateUserMailerFormattedPageStatus( &$formattedPageStatus ) {
4076        return $this->container->run(
4077            'UpdateUserMailerFormattedPageStatus',
4078            [ &$formattedPageStatus ]
4079        );
4080    }
4081
4082    public function onUploadComplete( $uploadBase ) {
4083        return $this->container->run(
4084            'UploadComplete',
4085            [ $uploadBase ]
4086        );
4087    }
4088
4089    public function onUploadCreateFromRequest( $type, &$className ) {
4090        return $this->container->run(
4091            'UploadCreateFromRequest',
4092            [ $type, &$className ]
4093        );
4094    }
4095
4096    public function onUploadFormInitDescriptor( &$descriptor ) {
4097        return $this->container->run(
4098            'UploadFormInitDescriptor',
4099            [ &$descriptor ]
4100        );
4101    }
4102
4103    public function onUploadFormSourceDescriptors( &$descriptor, &$radio,
4104        $selectedSourceType
4105    ) {
4106        return $this->container->run(
4107            'UploadFormSourceDescriptors',
4108            [ &$descriptor, &$radio, $selectedSourceType ]
4109        );
4110    }
4111
4112    public function onUploadForm_BeforeProcessing( $upload ) {
4113        return $this->container->run(
4114            'UploadForm:BeforeProcessing',
4115            [ $upload ]
4116        );
4117    }
4118
4119    public function onUploadForm_getInitialPageText( &$pageText, $msg, $config ) {
4120        return $this->container->run(
4121            'UploadForm:getInitialPageText',
4122            [ &$pageText, $msg, $config ]
4123        );
4124    }
4125
4126    public function onUploadForm_initial( $upload ) {
4127        return $this->container->run(
4128            'UploadForm:initial',
4129            [ $upload ]
4130        );
4131    }
4132
4133    public function onUploadStashFile( $upload, $user, $props, &$error ) {
4134        return $this->container->run(
4135            'UploadStashFile',
4136            [ $upload, $user, $props, &$error ]
4137        );
4138    }
4139
4140    public function onUploadVerifyFile( $upload, $mime, &$error ) {
4141        return $this->container->run(
4142            'UploadVerifyFile',
4143            [ $upload, $mime, &$error ]
4144        );
4145    }
4146
4147    public function onUploadVerifyUpload( $upload, $user, $props, $comment,
4148        $pageText, &$error
4149    ) {
4150        return $this->container->run(
4151            'UploadVerifyUpload',
4152            [ $upload, $user, $props, $comment, $pageText, &$error ]
4153        );
4154    }
4155
4156    public function onUserAddGroup( $user, &$group, &$expiry ) {
4157        return $this->container->run(
4158            'UserAddGroup',
4159            [ $user, &$group, &$expiry ]
4160        );
4161    }
4162
4163    public function onUserArrayFromResult( &$userArray, $res ) {
4164        return $this->container->run(
4165            'UserArrayFromResult',
4166            [ &$userArray, $res ]
4167        );
4168    }
4169
4170    public function onUserCan( $title, $user, $action, &$result ) {
4171        return $this->container->run(
4172            'userCan',
4173            [ $title, $user, $action, &$result ]
4174        );
4175    }
4176
4177    public function onUserCanSendEmail( $user, &$hookErr ) {
4178        return $this->container->run(
4179            'UserCanSendEmail',
4180            [ $user, &$hookErr ]
4181        );
4182    }
4183
4184    public function onUserClearNewTalkNotification( $userIdentity, $oldid ) {
4185        return $this->container->run(
4186            'UserClearNewTalkNotification',
4187            [ $userIdentity, $oldid ]
4188        );
4189    }
4190
4191    public function onUserEditCountUpdate( $infos ): void {
4192        $this->container->run(
4193            'UserEditCountUpdate',
4194            [ $infos ],
4195            [ 'abortable' => false ]
4196        );
4197    }
4198
4199    public function onUserEffectiveGroups( $user, &$groups ) {
4200        return $this->container->run(
4201            'UserEffectiveGroups',
4202            [ $user, &$groups ]
4203        );
4204    }
4205
4206    public function onUserGetAllRights( &$rights ) {
4207        return $this->container->run(
4208            'UserGetAllRights',
4209            [ &$rights ]
4210        );
4211    }
4212
4213    public function onUserGetDefaultOptions( &$defaultOptions ) {
4214        return $this->container->run(
4215            'UserGetDefaultOptions',
4216            [ &$defaultOptions ]
4217        );
4218    }
4219
4220    public function onUserGetEmail( $user, &$email ) {
4221        return $this->container->run(
4222            'UserGetEmail',
4223            [ $user, &$email ]
4224        );
4225    }
4226
4227    public function onUserGetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4228        return $this->container->run(
4229            'UserGetEmailAuthenticationTimestamp',
4230            [ $user, &$timestamp ]
4231        );
4232    }
4233
4234    public function onUserGetLanguageObject( $user, &$code, $context ) {
4235        return $this->container->run(
4236            'UserGetLanguageObject',
4237            [ $user, &$code, $context ]
4238        );
4239    }
4240
4241    public function onUserPrivilegedGroups( $userIdentity, &$groups ) {
4242        return $this->container->run(
4243            'UserPrivilegedGroups',
4244            [ $userIdentity, &$groups ]
4245        );
4246    }
4247
4248    public function onUserGetReservedNames( &$reservedUsernames ) {
4249        return $this->container->run(
4250            'UserGetReservedNames',
4251            [ &$reservedUsernames ]
4252        );
4253    }
4254
4255    public function onUserGetRights( $user, &$rights ) {
4256        return $this->container->run(
4257            'UserGetRights',
4258            [ $user, &$rights ]
4259        );
4260    }
4261
4262    public function onUserGetRightsRemove( $user, &$rights ) {
4263        return $this->container->run(
4264            'UserGetRightsRemove',
4265            [ $user, &$rights ]
4266        );
4267    }
4268
4269    public function onUserGroupsChanged( $user, $added, $removed, $performer,
4270        $reason, $oldUGMs, $newUGMs
4271    ) {
4272        return $this->container->run(
4273            'UserGroupsChanged',
4274            [ $user, $added, $removed, $performer, $reason, $oldUGMs,
4275                $newUGMs ]
4276        );
4277    }
4278
4279    public function onUserIsBlockedFrom( $user, $title, &$blocked, &$allowUsertalk ) {
4280        return $this->container->run(
4281            'UserIsBlockedFrom',
4282            [ $user, $title, &$blocked, &$allowUsertalk ]
4283        );
4284    }
4285
4286    public function onUserIsBlockedGlobally( $user, $ip, &$blocked, &$block ) {
4287        return $this->container->run(
4288            'UserIsBlockedGlobally',
4289            [ $user, $ip, &$blocked, &$block ]
4290        );
4291    }
4292
4293    public function onUserIsBot( $user, &$isBot ) {
4294        return $this->container->run(
4295            'UserIsBot',
4296            [ $user, &$isBot ]
4297        );
4298    }
4299
4300    public function onUserIsEveryoneAllowed( $right ) {
4301        return $this->container->run(
4302            'UserIsEveryoneAllowed',
4303            [ $right ]
4304        );
4305    }
4306
4307    public function onUserIsLocked( $user, &$locked ) {
4308        return $this->container->run(
4309            'UserIsLocked',
4310            [ $user, &$locked ]
4311        );
4312    }
4313
4314    public function onUserLoadAfterLoadFromSession( $user ) {
4315        return $this->container->run(
4316            'UserLoadAfterLoadFromSession',
4317            [ $user ]
4318        );
4319    }
4320
4321    public function onUserLoadDefaults( $user, $name ) {
4322        return $this->container->run(
4323            'UserLoadDefaults',
4324            [ $user, $name ]
4325        );
4326    }
4327
4328    public function onLoadUserOptions( UserIdentity $user, array &$options ): void {
4329        $this->container->run(
4330            'LoadUserOptions',
4331            [ $user, &$options ],
4332            [ 'abortable' => false ]
4333        );
4334    }
4335
4336    public function onUserLoggedIn( $user ) {
4337        return $this->container->run(
4338            'UserLoggedIn',
4339            [ $user ]
4340        );
4341    }
4342
4343    public function onUserLoginComplete( $user, &$inject_html, $direct ) {
4344        return $this->container->run(
4345            'UserLoginComplete',
4346            [ $user, &$inject_html, $direct ]
4347        );
4348    }
4349
4350    public function onUserLogout( $user ) {
4351        return $this->container->run(
4352            'UserLogout',
4353            [ $user ]
4354        );
4355    }
4356
4357    public function onUserLogoutComplete( $user, &$inject_html, $oldName ) {
4358        return $this->container->run(
4359            'UserLogoutComplete',
4360            [ $user, &$inject_html, $oldName ]
4361        );
4362    }
4363
4364    public function onUserMailerChangeReturnPath( $to, &$returnPath ) {
4365        return $this->container->run(
4366            'UserMailerChangeReturnPath',
4367            [ $to, &$returnPath ]
4368        );
4369    }
4370
4371    public function onUserMailerSplitTo( &$to ) {
4372        return $this->container->run(
4373            'UserMailerSplitTo',
4374            [ &$to ]
4375        );
4376    }
4377
4378    public function onUserMailerTransformContent( $to, $from, &$body, &$error ) {
4379        return $this->container->run(
4380            'UserMailerTransformContent',
4381            [ $to, $from, &$body, &$error ]
4382        );
4383    }
4384
4385    public function onUserMailerTransformMessage( $to, $from, &$subject, &$headers,
4386        &$body, &$error
4387    ) {
4388        return $this->container->run(
4389            'UserMailerTransformMessage',
4390            [ $to, $from, &$subject, &$headers, &$body, &$error ]
4391        );
4392    }
4393
4394    public function onUserRemoveGroup( $user, &$group ) {
4395        return $this->container->run(
4396            'UserRemoveGroup',
4397            [ $user, &$group ]
4398        );
4399    }
4400
4401    public function onSaveUserOptions( UserIdentity $user, array &$modifiedOptions, array $originalOptions ) {
4402        return $this->container->run(
4403            'SaveUserOptions',
4404            [ $user, &$modifiedOptions, $originalOptions ]
4405        );
4406    }
4407
4408    public function onUserSaveSettings( $user ) {
4409        return $this->container->run(
4410            'UserSaveSettings',
4411            [ $user ]
4412        );
4413    }
4414
4415    public function onUserSendConfirmationMail( $user, &$mail, $info ) {
4416        return $this->container->run(
4417            'UserSendConfirmationMail',
4418            [ $user, &$mail, $info ]
4419        );
4420    }
4421
4422    public function onUserSetEmail( $user, &$email ) {
4423        return $this->container->run(
4424            'UserSetEmail',
4425            [ $user, &$email ]
4426        );
4427    }
4428
4429    public function onUserSetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4430        return $this->container->run(
4431            'UserSetEmailAuthenticationTimestamp',
4432            [ $user, &$timestamp ]
4433        );
4434    }
4435
4436    public function onUsersPagerDoBatchLookups( $dbr, $userIds, &$cache, &$groups ) {
4437        return $this->container->run(
4438            'UsersPagerDoBatchLookups',
4439            [ $dbr, $userIds, &$cache, &$groups ]
4440        );
4441    }
4442
4443    public function onUserToolLinksEdit( $userId, $userText, &$items ) {
4444        return $this->container->run(
4445            'UserToolLinksEdit',
4446            [ $userId, $userText, &$items ]
4447        );
4448    }
4449
4450    public function onUser__mailPasswordInternal( $user, $ip, $u ) {
4451        return $this->container->run(
4452            'User::mailPasswordInternal',
4453            [ $user, $ip, $u ]
4454        );
4455    }
4456
4457    public function onValidateExtendedMetadataCache( $timestamp, $file ) {
4458        return $this->container->run(
4459            'ValidateExtendedMetadataCache',
4460            [ $timestamp, $file ]
4461        );
4462    }
4463
4464    public function onWantedPages__getQueryInfo( $wantedPages, &$query ) {
4465        return $this->container->run(
4466            'WantedPages::getQueryInfo',
4467            [ $wantedPages, &$query ]
4468        );
4469    }
4470
4471    public function onWatchArticle( $user, $page, &$status, $expiry ) {
4472        return $this->container->run(
4473            'WatchArticle',
4474            [ $user, $page, &$status, $expiry ]
4475        );
4476    }
4477
4478    public function onWatchArticleComplete( $user, $page ) {
4479        return $this->container->run(
4480            'WatchArticleComplete',
4481            [ $user, $page ]
4482        );
4483    }
4484
4485    public function onWatchedItemQueryServiceExtensions( &$extensions,
4486        $watchedItemQueryService
4487    ) {
4488        return $this->container->run(
4489            'WatchedItemQueryServiceExtensions',
4490            [ &$extensions, $watchedItemQueryService ]
4491        );
4492    }
4493
4494    public function onWatchlistEditorBeforeFormRender( &$watchlistInfo ) {
4495        return $this->container->run(
4496            'WatchlistEditorBeforeFormRender',
4497            [ &$watchlistInfo ]
4498        );
4499    }
4500
4501    public function onWatchlistEditorBuildRemoveLine( &$tools, $title, $redirect,
4502        $skin, &$link
4503    ) {
4504        return $this->container->run(
4505            'WatchlistEditorBuildRemoveLine',
4506            [ &$tools, $title, $redirect, $skin, &$link ]
4507        );
4508    }
4509
4510    public function onWebRequestPathInfoRouter( $router ) {
4511        return $this->container->run(
4512            'WebRequestPathInfoRouter',
4513            [ $router ]
4514        );
4515    }
4516
4517    public function onWebResponseSetCookie( &$name, &$value, &$expire, &$options ) {
4518        return $this->container->run(
4519            'WebResponseSetCookie',
4520            [ &$name, &$value, &$expire, &$options ]
4521        );
4522    }
4523
4524    public function onWfShellWikiCmd( &$script, &$parameters, &$options ) {
4525        return $this->container->run(
4526            'wfShellWikiCmd',
4527            [ &$script, &$parameters, &$options ]
4528        );
4529    }
4530
4531    public function onWgQueryPages( &$qp ) {
4532        return $this->container->run(
4533            'wgQueryPages',
4534            [ &$qp ]
4535        );
4536    }
4537
4538    public function onWhatLinksHereProps( $row, $title, $target, &$props ) {
4539        return $this->container->run(
4540            'WhatLinksHereProps',
4541            [ $row, $title, $target, &$props ]
4542        );
4543    }
4544
4545    public function onWikiExporter__dumpStableQuery( &$tables, &$opts, &$join ) {
4546        return $this->container->run(
4547            'WikiExporter::dumpStableQuery',
4548            [ &$tables, &$opts, &$join ]
4549        );
4550    }
4551
4552    public function onWikiPageDeletionUpdates( $page, $content, &$updates ) {
4553        return $this->container->run(
4554            'WikiPageDeletionUpdates',
4555            [ $page, $content, &$updates ]
4556        );
4557    }
4558
4559    public function onWikiPageFactory( $title, &$page ) {
4560        return $this->container->run(
4561            'WikiPageFactory',
4562            [ $title, &$page ]
4563        );
4564    }
4565
4566    public function onXmlDumpWriterOpenPage( $obj, &$out, $row, $title ) {
4567        return $this->container->run(
4568            'XmlDumpWriterOpenPage',
4569            [ $obj, &$out, $row, $title ]
4570        );
4571    }
4572
4573    public function onXmlDumpWriterWriteRevision( $obj, &$out, $row, $text, $rev ) {
4574        return $this->container->run(
4575            'XmlDumpWriterWriteRevision',
4576            [ $obj, &$out, $row, $text, $rev ]
4577        );
4578    }
4579}