MediaWiki master
HookRunner.php
Go to the documentation of this file.
1<?php
2
4
35use StatusValue;
38
52class HookRunner implements
199 \MediaWiki\Hook\LinkerMakeExternalImageHook,
200 \MediaWiki\Hook\LinkerMakeExternalLinkHook,
201 \MediaWiki\Hook\LinkerMakeMediaLinkFileHook,
591{
592
593 public function __construct(
594 private readonly HookContainer $container,
595 ) {
596 }
597
599 public function onAbortAutoblock( $autoblockip, $block ) {
600 return $this->container->run(
601 'AbortAutoblock',
602 [ $autoblockip, $block ]
603 );
604 }
605
607 public function onAbortDiffCache( $diffEngine ) {
608 return $this->container->run(
609 'AbortDiffCache',
610 [ $diffEngine ]
611 );
612 }
613
615 public function onActionBeforeFormDisplay( $name, $form, $article ) {
616 return $this->container->run(
617 'ActionBeforeFormDisplay',
618 [ $name, $form, $article ]
619 );
620 }
621
623 public function onActionModifyFormFields( $name, &$fields, $article ) {
624 return $this->container->run(
625 'ActionModifyFormFields',
626 [ $name, &$fields, $article ]
627 );
628 }
629
631 public function onAfterBuildFeedLinks( &$feedLinks ) {
632 return $this->container->run(
633 'AfterBuildFeedLinks',
634 [ &$feedLinks ]
635 );
636 }
637
639 public function onAfterFinalPageOutput( $output ): void {
640 $this->container->run(
641 'AfterFinalPageOutput',
642 [ $output ],
643 [ 'abortable' => false ]
644 );
645 }
646
648 public function onAfterImportPage( $title, $foreignTitle, $revCount,
649 $sRevCount, $pageInfo
650 ) {
651 return $this->container->run(
652 'AfterImportPage',
653 [ $title, $foreignTitle, $revCount, $sRevCount, $pageInfo ]
654 );
655 }
656
658 public function onAfterParserFetchFileAndTitle( $parser, $ig, &$html ) {
659 return $this->container->run(
660 'AfterParserFetchFileAndTitle',
661 [ $parser, $ig, &$html ]
662 );
663 }
664
666 public function onAlternateEdit( $editPage ) {
667 return $this->container->run(
668 'AlternateEdit',
669 [ $editPage ]
670 );
671 }
672
674 public function onAlternateEditPreview( $editPage, &$content, &$previewHTML,
675 &$parserOutput
676 ) {
677 return $this->container->run(
678 'AlternateEditPreview',
679 [ $editPage, &$content, &$previewHTML, &$parserOutput ]
680 );
681 }
682
684 public function onAlternateUserMailer( $headers, $to, $from, $subject, $body ) {
685 return $this->container->run(
686 'AlternateUserMailer',
687 [ $headers, $to, $from, $subject, $body ]
688 );
689 }
690
692 public function onAncientPagesQuery( &$tables, &$conds, &$joinConds ) {
693 return $this->container->run(
694 'AncientPagesQuery',
695 [ &$tables, &$conds, &$joinConds ]
696 );
697 }
698
700 public function onApiBeforeMain( &$main ) {
701 return $this->container->run(
702 'ApiBeforeMain',
703 [ &$main ]
704 );
705 }
706
708 public function onArticleConfirmDelete( $article, $output, &$reason ) {
709 return $this->container->run(
710 'ArticleConfirmDelete',
711 [ $article, $output, &$reason ]
712 );
713 }
714
716 public function onArticleContentOnDiff( $diffEngine, $output ) {
717 return $this->container->run(
718 'ArticleContentOnDiff',
719 [ $diffEngine, $output ]
720 );
721 }
722
724 public function onArticleDelete( $wikiPage, $user, &$reason, &$error, &$status,
725 $suppress
726 ) {
727 return $this->container->run(
728 'ArticleDelete',
729 [ $wikiPage, $user, &$reason, &$error, &$status, $suppress ]
730 );
731 }
732
734 public function onArticleDeleteAfterSuccess( $title, $outputPage ) {
735 return $this->container->run(
736 'ArticleDeleteAfterSuccess',
737 [ $title, $outputPage ]
738 );
739 }
740
742 public function onArticleDeleteComplete( $wikiPage, $user, $reason, $id,
743 $content, $logEntry, $archivedRevisionCount
744 ) {
745 return $this->container->run(
746 'ArticleDeleteComplete',
747 [ $wikiPage, $user, $reason, $id, $content, $logEntry,
748 $archivedRevisionCount ]
749 );
750 }
751
753 public function onArticleEditUpdateNewTalk( $wikiPage, $recipient ) {
754 return $this->container->run(
755 'ArticleEditUpdateNewTalk',
756 [ $wikiPage, $recipient ]
757 );
758 }
759
761 public function onArticleFromTitle( $title, &$article, $context ) {
762 return $this->container->run(
763 'ArticleFromTitle',
764 [ $title, &$article, $context ]
765 );
766 }
767
769 public function onArticleMergeComplete( $targetTitle, $destTitle ) {
770 return $this->container->run(
771 'ArticleMergeComplete',
772 [ $targetTitle, $destTitle ]
773 );
774 }
775
777 public function onArticlePageDataAfter( $wikiPage, &$row ) {
778 return $this->container->run(
779 'ArticlePageDataAfter',
780 [ $wikiPage, &$row ]
781 );
782 }
783
785 public function onArticlePageDataBefore( $wikiPage, &$fields, &$tables,
786 &$joinConds
787 ) {
788 return $this->container->run(
789 'ArticlePageDataBefore',
790 [ $wikiPage, &$fields, &$tables, &$joinConds ]
791 );
792 }
793
795 public function onArticleParserOptions( Article $article, ParserOptions $popts ) {
796 return $this->container->run(
797 'ArticleParserOptions',
798 [ $article, $popts ]
799 );
800 }
801
803 public function onArticlePrepareTextForEdit( $wikiPage, $popts ) {
804 return $this->container->run(
805 'ArticlePrepareTextForEdit',
806 [ $wikiPage, $popts ]
807 );
808 }
809
811 public function onArticleProtect( $wikiPage, $user, $protect, $reason ) {
812 return $this->container->run(
813 'ArticleProtect',
814 [ $wikiPage, $user, $protect, $reason ]
815 );
816 }
817
819 public function onArticleProtectComplete( $wikiPage, $user, $protect, $reason ) {
820 return $this->container->run(
821 'ArticleProtectComplete',
822 [ $wikiPage, $user, $protect, $reason ]
823 );
824 }
825
827 public function onArticlePurge( $wikiPage ) {
828 return $this->container->run(
829 'ArticlePurge',
830 [ $wikiPage ]
831 );
832 }
833
835 public function onArticleRevisionViewCustom( $revision, $title, $oldid,
836 $output
837 ) {
838 return $this->container->run(
839 'ArticleRevisionViewCustom',
840 [ $revision, $title, $oldid, $output ]
841 );
842 }
843
845 public function onArticleRevisionVisibilitySet( $title, $ids,
846 $visibilityChangeMap
847 ) {
848 return $this->container->run(
849 'ArticleRevisionVisibilitySet',
850 [ $title, $ids, $visibilityChangeMap ]
851 );
852 }
853
855 public function onArticleShowPatrolFooter( $article ) {
856 return $this->container->run(
857 'ArticleShowPatrolFooter',
858 [ $article ]
859 );
860 }
861
863 public function onArticleUndelete( $title, $create, $comment, $oldPageId,
864 $restoredPages
865 ) {
866 return $this->container->run(
867 'ArticleUndelete',
868 [ $title, $create, $comment, $oldPageId, $restoredPages ]
869 );
870 }
871
873 public function onArticleUpdateBeforeRedirect( $article, &$sectionanchor,
874 &$extraq
875 ) {
876 return $this->container->run(
877 'ArticleUpdateBeforeRedirect',
878 [ $article, &$sectionanchor, &$extraq ]
879 );
880 }
881
883 public function onArticleViewFooter( $article, $patrolFooterShown ) {
884 return $this->container->run(
885 'ArticleViewFooter',
886 [ $article, $patrolFooterShown ]
887 );
888 }
889
891 public function onArticleViewHeader( $article, &$outputDone, &$pcache ) {
892 return $this->container->run(
893 'ArticleViewHeader',
894 [ $article, &$outputDone, &$pcache ]
895 );
896 }
897
899 public function onArticleViewRedirect( $article ) {
900 return $this->container->run(
901 'ArticleViewRedirect',
902 [ $article ]
903 );
904 }
905
907 public function onArticle__MissingArticleConditions( &$conds, $logTypes ) {
908 return $this->container->run(
909 'Article::MissingArticleConditions',
910 [ &$conds, $logTypes ]
911 );
912 }
913
915 public function onAuthChangeFormFields( $requests, $fieldInfo,
916 &$formDescriptor, $action
917 ) {
918 return $this->container->run(
919 'AuthChangeFormFields',
920 [ $requests, $fieldInfo, &$formDescriptor, $action ]
921 );
922 }
923
925 public function onAuthManagerFilterProviders( array &$providers ): void {
926 $this->container->run(
927 'AuthManagerFilterProviders',
928 [ &$providers ],
929 [ 'abortable' => false ]
930 );
931 }
932
934 public function onAuthManagerLoginAuthenticateAudit( $response, $user,
935 $username, $extraData
936 ) {
937 return $this->container->run(
938 'AuthManagerLoginAuthenticateAudit',
939 [ $response, $user, $username, $extraData ]
940 );
941 }
942
945 ?UserIdentity $user,
946 AuthenticationResponse &$response,
947 AuthManager $authManager,
948 array $info
949 ): bool {
950 return $this->container->run(
951 'AuthManagerVerifyAuthentication',
952 [ $user, &$response, $authManager, $info ],
953 );
954 }
955
957 public function onAuthPreserveQueryParams( &$params, $options ) {
958 return $this->container->run(
959 'AuthPreserveQueryParams', [ &$params, $options ]
960 );
961 }
962
964 public function onAuthenticationAttemptThrottled( string $type, ?string $username, ?string $ip ) {
965 return $this->container->run(
966 'AuthenticationAttemptThrottled', [ $type, $username, $ip ]
967 );
968 }
969
971 public function onAutopromoteCondition( $type, $args, $user, &$result ) {
972 return $this->container->run(
973 'AutopromoteCondition',
974 [ $type, $args, $user, &$result ]
975 );
976 }
977
979 public function onBacklinkCacheGetConditions( $table, $title, &$conds ) {
980 return $this->container->run(
981 'BacklinkCacheGetConditions',
982 [ $table, $title, &$conds ]
983 );
984 }
985
987 public function onBacklinkCacheGetPrefix( $table, &$prefix ) {
988 return $this->container->run(
989 'BacklinkCacheGetPrefix',
990 [ $table, &$prefix ]
991 );
992 }
993
995 public function onBadImage( $name, &$bad ) {
996 return $this->container->run(
997 'BadImage',
998 [ $name, &$bad ]
999 );
1000 }
1001
1003 public function onBeforeDisplayNoArticleText( $article ) {
1004 return $this->container->run(
1005 'BeforeDisplayNoArticleText',
1006 [ $article ]
1007 );
1008 }
1009
1011 public function onBeforeInitialize( $title, $unused, $output, $user, $request,
1012 $mediaWiki
1013 ) {
1014 return $this->container->run(
1015 'BeforeInitialize',
1016 [ $title, $unused, $output, $user, $request, $mediaWiki ]
1017 );
1018 }
1019
1021 public function onBeforePageDisplay( $out, $skin ): void {
1022 $this->container->run(
1023 'BeforePageDisplay',
1024 [ $out, $skin ],
1025 [ 'abortable' => false ]
1026 );
1027 }
1028
1030 public function onBeforePageRedirect( $out, &$redirect, &$code ) {
1031 return $this->container->run(
1032 'BeforePageRedirect',
1033 [ $out, &$redirect, &$code ]
1034 );
1035 }
1036
1038 public function onBeforeParserFetchFileAndTitle( $parser, $nt, &$options,
1039 &$descQuery
1040 ) {
1041 return $this->container->run(
1042 'BeforeParserFetchFileAndTitle',
1043 [ $parser, $nt, &$options, &$descQuery ]
1044 );
1045 }
1046
1049 ?LinkTarget $contextTitle, LinkTarget $title,
1050 bool &$skip, ?RevisionRecord &$revRecord
1051 ) {
1052 return $this->container->run(
1053 'BeforeParserFetchTemplateRevisionRecord',
1054 [ $contextTitle, $title, &$skip, &$revRecord ]
1055 );
1056 }
1057
1059 public function onBeforeRevertedTagUpdate( $wikiPage, $user,
1060 $summary, $flags, $revisionRecord, $editResult, &$approved
1061 ): void {
1062 $this->container->run(
1063 'BeforeRevertedTagUpdate',
1064 [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult,
1065 &$approved ],
1066 [ 'abortable' => false ]
1067 );
1068 }
1069
1071 public function onBeforeWelcomeCreation( &$welcome_creation_msg,
1072 &$injected_html
1073 ) {
1074 return $this->container->run(
1075 'BeforeWelcomeCreation',
1076 [ &$welcome_creation_msg, &$injected_html ]
1077 );
1078 }
1079
1081 public function onBitmapHandlerCheckImageArea( $image, &$params,
1082 &$checkImageAreaHookResult
1083 ) {
1084 return $this->container->run(
1085 'BitmapHandlerCheckImageArea',
1086 [ $image, &$params, &$checkImageAreaHookResult ]
1087 );
1088 }
1089
1091 public function onBitmapHandlerTransform( $handler, $image, &$scalerParams,
1092 &$mto
1093 ) {
1094 return $this->container->run(
1095 'BitmapHandlerTransform',
1096 [ $handler, $image, &$scalerParams, &$mto ]
1097 );
1098 }
1099
1101 public function onBlockIp( $block, $user, &$reason ) {
1102 return $this->container->run(
1103 'BlockIp',
1104 [ $block, $user, &$reason ]
1105 );
1106 }
1107
1109 public function onBlockIpComplete( $block, $user, $priorBlock ) {
1110 return $this->container->run(
1111 'BlockIpComplete',
1112 [ $block, $user, $priorBlock ]
1113 );
1114 }
1115
1117 public function onBookInformation( $isbn, $output ) {
1118 return $this->container->run(
1119 'BookInformation',
1120 [ $isbn, $output ]
1121 );
1122 }
1123
1125 public function onCanonicalNamespaces( &$namespaces ) {
1126 return $this->container->run(
1127 'CanonicalNamespaces',
1128 [ &$namespaces ]
1129 );
1130 }
1131
1133 public function onCategoryAfterPageAdded( $category, $wikiPage ) {
1134 return $this->container->run(
1135 'CategoryAfterPageAdded',
1136 [ $category, $wikiPage ]
1137 );
1138 }
1139
1141 public function onCategoryAfterPageRemoved( $category, $wikiPage, $id ) {
1142 return $this->container->run(
1143 'CategoryAfterPageRemoved',
1144 [ $category, $wikiPage, $id ]
1145 );
1146 }
1147
1149 public function onCategoryPageView( $catpage ) {
1150 return $this->container->run(
1151 'CategoryPageView',
1152 [ $catpage ]
1153 );
1154 }
1155
1157 public function onCategoryViewer__doCategoryQuery( $type, $res ) {
1158 return $this->container->run(
1159 'CategoryViewer::doCategoryQuery',
1160 [ $type, $res ]
1161 );
1162 }
1163
1165 public function onCategoryViewer__generateLink( $type, $title, $html, &$link ) {
1166 return $this->container->run(
1167 'CategoryViewer::generateLink',
1168 [ $type, $title, $html, &$link ]
1169 );
1170 }
1171
1173 public function onChangeAuthenticationDataAudit( $req, $status ) {
1174 return $this->container->run(
1175 'ChangeAuthenticationDataAudit',
1176 [ $req, $status ]
1177 );
1178 }
1179
1181 public function onChangesListInitRows( $changesList, $rows ) {
1182 return $this->container->run(
1183 'ChangesListInitRows',
1184 [ $changesList, $rows ]
1185 );
1186 }
1187
1189 public function onChangesListInsertArticleLink( $changesList, &$articlelink,
1190 &$s, $rc, $unpatrolled, $watched
1191 ) {
1192 return $this->container->run(
1193 'ChangesListInsertArticleLink',
1194 [ $changesList, &$articlelink, &$s, $rc, $unpatrolled, $watched ]
1195 );
1196 }
1197
1199 public function onChangesListInsertLogEntry( $entry, $context, &$html, &$classes, &$attribs ) {
1200 return $this->container->run(
1201 'ChangesListInsertLogEntry',
1202 [ $entry, $context, &$html, &$classes, &$attribs ]
1203 );
1204 }
1205
1207 public function onChangesListSpecialPageQuery( $name, &$tables, &$fields,
1208 &$conds, &$query_options, &$join_conds, $opts
1209 ) {
1210 return $this->container->run(
1211 'ChangesListSpecialPageQuery',
1212 [ $name, &$tables, &$fields, &$conds, &$query_options,
1213 &$join_conds, $opts ]
1214 );
1215 }
1216
1218 public function onChangesListSpecialPageStructuredFilters( $special ) {
1219 return $this->container->run(
1220 'ChangesListSpecialPageStructuredFilters',
1221 [ $special ]
1222 );
1223 }
1224
1226 public function onChangeTagAfterDelete( $tag, &$status ) {
1227 return $this->container->run(
1228 'ChangeTagAfterDelete',
1229 [ $tag, &$status ]
1230 );
1231 }
1232
1234 public function onChangeTagCanCreate( $tag, $user, &$status ) {
1235 return $this->container->run(
1236 'ChangeTagCanCreate',
1237 [ $tag, $user, &$status ]
1238 );
1239 }
1240
1242 public function onChangeTagCanDelete( $tag, $user, &$status ) {
1243 return $this->container->run(
1244 'ChangeTagCanDelete',
1245 [ $tag, $user, &$status ]
1246 );
1247 }
1248
1250 public function onChangeTagsAfterUpdateTags( $addedTags, $removedTags,
1251 $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $user
1252 ) {
1253 return $this->container->run(
1254 'ChangeTagsAfterUpdateTags',
1255 [ $addedTags, $removedTags, $prevTags, $rc_id, $rev_id, $log_id,
1256 $params, $rc, $user ]
1257 );
1258 }
1259
1261 public function onChangeTagsAllowedAdd( &$allowedTags, $addTags, $user ) {
1262 return $this->container->run(
1263 'ChangeTagsAllowedAdd',
1264 [ &$allowedTags, $addTags, $user ]
1265 );
1266 }
1267
1269 public function onChangeTagsListActive( &$tags ) {
1270 return $this->container->run(
1271 'ChangeTagsListActive',
1272 [ &$tags ]
1273 );
1274 }
1275
1277 public function onChangeUserGroups( $performer, $user, &$add, &$remove ) {
1278 return $this->container->run(
1279 'ChangeUserGroups',
1280 [ $performer, $user, &$add, &$remove ]
1281 );
1282 }
1283
1285 public function onCollation__factory( $collationName, &$collationObject ) {
1286 return $this->container->run(
1287 'Collation::factory',
1288 [ $collationName, &$collationObject ]
1289 );
1290 }
1291
1293 public function onConfirmEmailComplete( $user ) {
1294 return $this->container->run(
1295 'ConfirmEmailComplete',
1296 [ $user ]
1297 );
1298 }
1299
1301 public function onContentAlterParserOutput( $content, $title, $parserOutput ) {
1302 return $this->container->run(
1303 'ContentAlterParserOutput',
1304 [ $content, $title, $parserOutput ]
1305 );
1306 }
1307
1309 public function onContentGetParserOutput( $content, $title, $revId, $options,
1310 $generateHtml, &$parserOutput
1311 ) {
1312 return $this->container->run(
1313 'ContentGetParserOutput',
1314 [ $content, $title, $revId, $options, $generateHtml, &$parserOutput ]
1315 );
1316 }
1317
1319 public function onContentHandlerDefaultModelFor( $title, &$model ) {
1320 return $this->container->run(
1321 'ContentHandlerDefaultModelFor',
1322 [ $title, &$model ]
1323 );
1324 }
1325
1327 public function onContentHandlerForModelID( $modelName, &$handler ) {
1328 return $this->container->run(
1329 'ContentHandlerForModelID',
1330 [ $modelName, &$handler ]
1331 );
1332 }
1333
1335 public function onContentModelCanBeUsedOn( $contentModel, $title, &$ok ) {
1336 return $this->container->run(
1337 'ContentModelCanBeUsedOn',
1338 [ $contentModel, $title, &$ok ]
1339 );
1340 }
1341
1343 public function onContentSecurityPolicyDefaultSource( &$defaultSrc,
1344 $policyConfig, $mode
1345 ) {
1346 return $this->container->run(
1347 'ContentSecurityPolicyDefaultSource',
1348 [ &$defaultSrc, $policyConfig, $mode ]
1349 );
1350 }
1351
1353 public function onContentSecurityPolicyDirectives( &$directives, $policyConfig,
1354 $mode
1355 ) {
1356 return $this->container->run(
1357 'ContentSecurityPolicyDirectives',
1358 [ &$directives, $policyConfig, $mode ]
1359 );
1360 }
1361
1363 public function onContentSecurityPolicyScriptSource( &$scriptSrc,
1364 $policyConfig, $mode
1365 ) {
1366 return $this->container->run(
1367 'ContentSecurityPolicyScriptSource',
1368 [ &$scriptSrc, $policyConfig, $mode ]
1369 );
1370 }
1371
1373 public function onContribsPager__getQueryInfo( $pager, &$queryInfo ) {
1374 return $this->container->run(
1375 'ContribsPager::getQueryInfo',
1376 [ $pager, &$queryInfo ]
1377 );
1378 }
1379
1381 public function onContribsPager__reallyDoQuery( &$data, $pager, $offset,
1382 $limit, $descending
1383 ) {
1384 return $this->container->run(
1385 'ContribsPager::reallyDoQuery',
1386 [ &$data, $pager, $offset, $limit, $descending ]
1387 );
1388 }
1389
1391 public function onContributeCards( &$cards ): void {
1392 $this->container->run(
1393 'ContributeCards',
1394 [ &$cards ]
1395 );
1396 }
1397
1399 public function onContributionsLineEnding( $page, &$ret, $row, &$classes,
1400 &$attribs
1401 ) {
1402 return $this->container->run(
1403 'ContributionsLineEnding',
1404 [ $page, &$ret, $row, &$classes, &$attribs ]
1405 );
1406 }
1407
1409 public function onContributionsToolLinks( $id, Title $title, array &$tools, SpecialPage $specialPage ) {
1410 return $this->container->run(
1411 'ContributionsToolLinks',
1412 [ $id, $title, &$tools, $specialPage ]
1413 );
1414 }
1415
1417 public function onConvertContent( $content, $toModel, $lossy, &$result ) {
1418 return $this->container->run(
1419 'ConvertContent',
1420 [ $content, $toModel, $lossy, &$result ]
1421 );
1422 }
1423
1425 public function onCustomEditor( $article, $user ) {
1426 return $this->container->run(
1427 'CustomEditor',
1428 [ $article, $user ]
1429 );
1430 }
1431
1433 public function onDeletedContribsPager__reallyDoQuery( &$data, $pager, $offset,
1434 $limit, $descending
1435 ) {
1436 return $this->container->run(
1437 'DeletedContribsPager::reallyDoQuery',
1438 [ &$data, $pager, $offset, $limit, $descending ]
1439 );
1440 }
1441
1443 public function onDeletedContributionsLineEnding( $page, &$ret, $row,
1444 &$classes, &$attribs
1445 ) {
1446 return $this->container->run(
1447 'DeletedContributionsLineEnding',
1448 [ $page, &$ret, $row, &$classes, &$attribs ]
1449 );
1450 }
1451
1453 public function onDeleteUnknownPreferences( &$where, $db ) {
1454 return $this->container->run(
1455 'DeleteUnknownPreferences',
1456 [ &$where, $db ]
1457 );
1458 }
1459
1461 public function onDifferenceEngineAfterLoadNewText( $differenceEngine ) {
1462 return $this->container->run(
1463 'DifferenceEngineAfterLoadNewText',
1464 [ $differenceEngine ]
1465 );
1466 }
1467
1470 \TextSlotDiffRenderer $textSlotDiffRenderer,
1471 IContextSource $context,
1472 array &$parts
1473 ) {
1474 return $this->container->run(
1475 'TextSlotDiffRendererTablePrefix',
1476 [ $textSlotDiffRenderer, $context, &$parts ]
1477 );
1478 }
1479
1482 $differenceEngine
1483 ) {
1484 return $this->container->run(
1485 'DifferenceEngineLoadTextAfterNewContentIsLoaded',
1486 [ $differenceEngine ]
1487 );
1488 }
1489
1491 public function onDifferenceEngineMarkPatrolledLink( $differenceEngine,
1492 &$markAsPatrolledLink, $rcid
1493 ) {
1494 return $this->container->run(
1495 'DifferenceEngineMarkPatrolledLink',
1496 [ $differenceEngine, &$markAsPatrolledLink, $rcid ]
1497 );
1498 }
1499
1501 public function onDifferenceEngineMarkPatrolledRCID( &$rcid, $differenceEngine,
1502 $change, $user
1503 ) {
1504 return $this->container->run(
1505 'DifferenceEngineMarkPatrolledRCID',
1506 [ &$rcid, $differenceEngine, $change, $user ]
1507 );
1508 }
1509
1511 public function onDifferenceEngineNewHeader( $differenceEngine, &$newHeader,
1512 $formattedRevisionTools, $nextlink, $rollback, $newminor, $diffOnly, $rdel,
1513 $unhide
1514 ) {
1515 return $this->container->run(
1516 'DifferenceEngineNewHeader',
1517 [ $differenceEngine, &$newHeader, $formattedRevisionTools,
1518 $nextlink, $rollback, $newminor, $diffOnly, $rdel, $unhide ]
1519 );
1520 }
1521
1523 public function onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader,
1524 $prevlink, $oldminor, $diffOnly, $ldel, $unhide
1525 ) {
1526 return $this->container->run(
1527 'DifferenceEngineOldHeader',
1528 [ $differenceEngine, &$oldHeader, $prevlink, $oldminor, $diffOnly,
1529 $ldel, $unhide ]
1530 );
1531 }
1532
1534 public function onDifferenceEngineOldHeaderNoOldRev( &$oldHeader ) {
1535 return $this->container->run(
1536 'DifferenceEngineOldHeaderNoOldRev',
1537 [ &$oldHeader ]
1538 );
1539 }
1540
1543 $differenceEngine, $out, $parserOutput, $wikiPage
1544 ) {
1545 return $this->container->run(
1546 'DifferenceEngineRenderRevisionAddParserOutput',
1547 [ $differenceEngine, $out, $parserOutput, $wikiPage ]
1548 );
1549 }
1550
1553 return $this->container->run(
1554 'DifferenceEngineRenderRevisionShowFinalPatrolLink',
1555 []
1556 );
1557 }
1558
1560 public function onDifferenceEngineShowDiff( $differenceEngine ) {
1561 return $this->container->run(
1562 'DifferenceEngineShowDiff',
1563 [ $differenceEngine ]
1564 );
1565 }
1566
1568 public function onDifferenceEngineShowDiffPage( $out ) {
1569 return $this->container->run(
1570 'DifferenceEngineShowDiffPage',
1571 [ $out ]
1572 );
1573 }
1574
1577 $differenceEngine
1578 ) {
1579 return $this->container->run(
1580 'DifferenceEngineShowDiffPageMaybeShowMissingRevision',
1581 [ $differenceEngine ]
1582 );
1583 }
1584
1586 public function onDifferenceEngineShowEmptyOldContent( $differenceEngine ) {
1587 return $this->container->run(
1588 'DifferenceEngineShowEmptyOldContent',
1589 [ $differenceEngine ]
1590 );
1591 }
1592
1594 public function onDifferenceEngineViewHeader( $differenceEngine ) {
1595 return $this->container->run(
1596 'DifferenceEngineViewHeader',
1597 [ $differenceEngine ]
1598 );
1599 }
1600
1602 public function onDiffTools( $newRevRecord, &$links, $oldRevRecord, $userIdentity ) {
1603 return $this->container->run(
1604 'DiffTools',
1605 [ $newRevRecord, &$links, $oldRevRecord, $userIdentity ]
1606 );
1607 }
1608
1610 public function onDisplayOldSubtitle( $article, &$oldid ) {
1611 return $this->container->run(
1612 'DisplayOldSubtitle',
1613 [ $article, &$oldid ]
1614 );
1615 }
1616
1618 public function onEditFilter( $editor, $text, $section, &$error, $summary ) {
1619 return $this->container->run(
1620 'EditFilter',
1621 [ $editor, $text, $section, &$error, $summary ]
1622 );
1623 }
1624
1626 public function onEditFilterMergedContent( $context, $content, $status,
1627 $summary, $user, $minoredit
1628 ) {
1629 return $this->container->run(
1630 'EditFilterMergedContent',
1631 [ $context, $content, $status, $summary, $user, $minoredit ]
1632 );
1633 }
1634
1636 public function onEditFormInitialText( $editPage ) {
1637 return $this->container->run(
1638 'EditFormInitialText',
1639 [ $editPage ]
1640 );
1641 }
1642
1644 public function onEditFormPreloadText( &$text, $title ) {
1645 return $this->container->run(
1646 'EditFormPreloadText',
1647 [ &$text, $title ]
1648 );
1649 }
1650
1652 public function onEditPageBeforeConflictDiff( $editor, $out ) {
1653 return $this->container->run(
1654 'EditPageBeforeConflictDiff',
1655 [ $editor, $out ]
1656 );
1657 }
1658
1660 public function onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex ) {
1661 return $this->container->run(
1662 'EditPageBeforeEditButtons',
1663 [ $editpage, &$buttons, &$tabindex ]
1664 );
1665 }
1666
1668 public function onEditPageBeforeEditToolbar( &$toolbar ) {
1669 return $this->container->run(
1670 'EditPageBeforeEditToolbar',
1671 [ &$toolbar ]
1672 );
1673 }
1674
1676 public function onEditPageCopyrightWarning( $title, &$msg ) {
1677 return $this->container->run(
1678 'EditPageCopyrightWarning',
1679 [ $title, &$msg ]
1680 );
1681 }
1682
1684 public function onEditPageGetCheckboxesDefinition( $editpage, &$checkboxes ) {
1685 return $this->container->run(
1686 'EditPageGetCheckboxesDefinition',
1687 [ $editpage, &$checkboxes ]
1688 );
1689 }
1690
1692 public function onEditPageGetDiffContent( $editPage, &$newtext ) {
1693 return $this->container->run(
1694 'EditPageGetDiffContent',
1695 [ $editPage, &$newtext ]
1696 );
1697 }
1698
1700 public function onEditPageGetPreviewContent( $editPage, &$content ) {
1701 return $this->container->run(
1702 'EditPageGetPreviewContent',
1703 [ $editPage, &$content ]
1704 );
1705 }
1706
1708 public function onEditPageNoSuchSection( $editpage, &$res ) {
1709 return $this->container->run(
1710 'EditPageNoSuchSection',
1711 [ $editpage, &$res ]
1712 );
1713 }
1714
1716 public function onEditPageTosSummary( $title, &$msg ) {
1717 return $this->container->run(
1718 'EditPageTosSummary',
1719 [ $title, &$msg ]
1720 );
1721 }
1722
1724 public function onEditPage__attemptSave( $editpage_Obj ) {
1725 return $this->container->run(
1726 'EditPage::attemptSave',
1727 [ $editpage_Obj ]
1728 );
1729 }
1730
1732 public function onEditPage__attemptSave_after( $editpage_Obj, $status,
1733 $resultDetails
1734 ) {
1735 return $this->container->run(
1736 'EditPage::attemptSave:after',
1737 [ $editpage_Obj, $status, $resultDetails ]
1738 );
1739 }
1740
1742 public function onEditPage__importFormData( $editpage, $request ) {
1743 return $this->container->run(
1744 'EditPage::importFormData',
1745 [ $editpage, $request ]
1746 );
1747 }
1748
1750 public function onEditPage__showEditForm_fields( $editor, $out ) {
1751 return $this->container->run(
1752 'EditPage::showEditForm:fields',
1753 [ $editor, $out ]
1754 );
1755 }
1756
1758 public function onEditPage__showEditForm_initial( $editor, $out ) {
1759 return $this->container->run(
1760 'EditPage::showEditForm:initial',
1761 [ $editor, $out ]
1762 );
1763 }
1764
1766 public function onEditPage__showReadOnlyForm_initial( $editor, $out ) {
1767 return $this->container->run(
1768 'EditPage::showReadOnlyForm:initial',
1769 [ $editor, $out ]
1770 );
1771 }
1772
1774 public function onEditPage__showStandardInputs_options( $editor, $out,
1775 &$tabindex
1776 ) {
1777 return $this->container->run(
1778 'EditPage::showStandardInputs:options',
1779 [ $editor, $out, &$tabindex ]
1780 );
1781 }
1782
1784 public function onEmailConfirmed( $user, &$confirmed ) {
1785 return $this->container->run(
1786 'EmailConfirmed',
1787 [ $user, &$confirmed ]
1788 );
1789 }
1790
1792 public function onEmailUser( &$to, &$from, &$subject, &$text, &$error ) {
1793 return $this->container->run(
1794 'EmailUser',
1795 [ &$to, &$from, &$subject, &$text, &$error ]
1796 );
1797 }
1798
1800 public function onEmailUserCC( &$to, &$from, &$subject, &$text ) {
1801 return $this->container->run(
1802 'EmailUserCC',
1803 [ &$to, &$from, &$subject, &$text ]
1804 );
1805 }
1806
1808 public function onEmailUserComplete( $to, $from, $subject, $text ) {
1809 return $this->container->run(
1810 'EmailUserComplete',
1811 [ $to, $from, $subject, $text ]
1812 );
1813 }
1814
1816 public function onEmailUserForm( &$form ) {
1817 return $this->container->run(
1818 'EmailUserForm',
1819 [ &$form ]
1820 );
1821 }
1822
1824 public function onEmailUserPermissionsErrors( $user, $editToken, &$hookErr ) {
1825 return $this->container->run(
1826 'EmailUserPermissionsErrors',
1827 [ $user, $editToken, &$hookErr ]
1828 );
1829 }
1830
1832 public function onEmailUserAuthorizeSend( Authority $sender, StatusValue $status ) {
1833 return $this->container->run(
1834 'EmailUserAuthorizeSend',
1835 [ $sender, $status ]
1836 );
1837 }
1838
1840 public function onEmailUserSendEmail(
1841 Authority $from,
1842 MailAddress $fromAddress,
1843 UserEmailContact $to,
1844 MailAddress $toAddress,
1845 string $subject,
1846 string $text,
1847 StatusValue $status
1848 ) {
1849 return $this->container->run(
1850 'EmailUserSendEmail',
1851 [ $from, $fromAddress, $to, $toAddress, $subject, $text, $status ]
1852 );
1853 }
1854
1856 public function onEnhancedChangesListModifyBlockLineData( $changesList, &$data,
1857 $rc
1858 ) {
1859 return $this->container->run(
1860 'EnhancedChangesListModifyBlockLineData',
1861 [ $changesList, &$data, $rc ]
1862 );
1863 }
1864
1866 public function onEnhancedChangesListModifyLineData( $changesList, &$data,
1867 $block, $rc, &$classes, &$attribs
1868 ) {
1869 return $this->container->run(
1870 'EnhancedChangesListModifyLineData',
1871 [ $changesList, &$data, $block, $rc, &$classes, &$attribs ]
1872 );
1873 }
1874
1876 public function onEnhancedChangesList__getLogText( $changesList, &$links,
1877 $block
1878 ) {
1879 return $this->container->run(
1880 'EnhancedChangesList::getLogText',
1881 [ $changesList, &$links, $block ]
1882 );
1883 }
1884
1887 return $this->container->run(
1888 'ExemptFromAccountCreationThrottle',
1889 [ $ip ]
1890 );
1891 }
1892
1894 public function onExtensionTypes( &$extTypes ) {
1895 return $this->container->run(
1896 'ExtensionTypes',
1897 [ &$extTypes ]
1898 );
1899 }
1900
1902 public function onFetchChangesList( $user, $skin, &$list, $groups ) {
1903 return $this->container->run(
1904 'FetchChangesList',
1905 [ $user, $skin, &$list, $groups ]
1906 );
1907 }
1908
1910 public function onFileDeleteComplete( $file, $oldimage, $article, $user,
1911 $reason
1912 ) {
1913 return $this->container->run(
1914 'FileDeleteComplete',
1915 [ $file, $oldimage, $article, $user, $reason ]
1916 );
1917 }
1918
1920 public function onFileTransformed( $file, $thumb, $tmpThumbPath, $thumbPath ) {
1921 return $this->container->run(
1922 'FileTransformed',
1923 [ $file, $thumb, $tmpThumbPath, $thumbPath ]
1924 );
1925 }
1926
1928 public function onFileUndeleteComplete( $title, $fileVersions, $user, $reason ) {
1929 return $this->container->run(
1930 'FileUndeleteComplete',
1931 [ $title, $fileVersions, $user, $reason ]
1932 );
1933 }
1934
1936 public function onFileUpload( $file, $reupload, $hasDescription ) {
1937 return $this->container->run(
1938 'FileUpload',
1939 [ $file, $reupload, $hasDescription ]
1940 );
1941 }
1942
1944 public function onFormatAutocomments( &$comment, $pre, $extractedText, $post, $title,
1945 $local, $wikiId
1946 ) {
1947 return $this->container->run(
1948 'FormatAutocomments',
1949 [ &$comment, $pre, $extractedText, $post, $title, $local, $wikiId ]
1950 );
1951 }
1952
1954 public function onGalleryGetModes( &$modeArray ) {
1955 return $this->container->run(
1956 'GalleryGetModes',
1957 [ &$modeArray ]
1958 );
1959 }
1960
1962 public function onGetAllBlockActions( &$actions ) {
1963 return $this->container->run(
1964 'GetAllBlockActions',
1965 [ &$actions ],
1966 [ 'abortable' => false ]
1967 );
1968 }
1969
1971 public function onGetAutoPromoteGroups( $user, &$promote ) {
1972 return $this->container->run(
1973 'GetAutoPromoteGroups',
1974 [ $user, &$promote ]
1975 );
1976 }
1977
1979 public function onGetActionName( IContextSource $context, string &$action ): void {
1980 $this->container->run(
1981 'GetActionName',
1982 [ $context, &$action ],
1983 [ 'abortable' => false ]
1984 );
1985 }
1986
1988 public function onGetCacheVaryCookies( $out, &$cookies ) {
1989 return $this->container->run(
1990 'GetCacheVaryCookies',
1991 [ $out, &$cookies ]
1992 );
1993 }
1994
1996 public function onGetCanonicalURL( $title, &$url, $query ) {
1997 return $this->container->run(
1998 'GetCanonicalURL',
1999 [ $title, &$url, $query ]
2000 );
2001 }
2002
2004 public function onGetContentModels( &$models ) {
2005 return $this->container->run(
2006 'GetContentModels',
2007 [ &$models ]
2008 );
2009 }
2010
2012 public function onGetDefaultSortkey( $title, &$sortkey ) {
2013 return $this->container->run(
2014 'GetDefaultSortkey',
2015 [ $title, &$sortkey ]
2016 );
2017 }
2018
2020 public function onGetDifferenceEngine( $context, $old, $new, $refreshCache,
2021 $unhide, &$differenceEngine
2022 ) {
2023 return $this->container->run(
2024 'GetDifferenceEngine',
2025 [ $context, $old, $new, $refreshCache, $unhide,
2026 &$differenceEngine ]
2027 );
2028 }
2029
2031 public function onGetDoubleUnderscoreIDs( &$doubleUnderscoreIDs ) {
2032 return $this->container->run(
2033 'GetDoubleUnderscoreIDs',
2034 [ &$doubleUnderscoreIDs ]
2035 );
2036 }
2037
2039 public function onGetExtendedMetadata( &$combinedMeta, $file, $context,
2040 $single, &$maxCacheTime
2041 ) {
2042 return $this->container->run(
2043 'GetExtendedMetadata',
2044 [ &$combinedMeta, $file, $context, $single, &$maxCacheTime ]
2045 );
2046 }
2047
2049 public function onGetFullURL( $title, &$url, $query ) {
2050 return $this->container->run(
2051 'GetFullURL',
2052 [ $title, &$url, $query ]
2053 );
2054 }
2055
2057 public function onGetHumanTimestamp( &$output, $timestamp, $relativeTo, $user,
2058 $lang
2059 ) {
2060 return $this->container->run(
2061 'GetHumanTimestamp',
2062 [ &$output, $timestamp, $relativeTo, $user, $lang ]
2063 );
2064 }
2065
2067 public function onGetInternalURL( $title, &$url, $query ) {
2068 return $this->container->run(
2069 'GetInternalURL',
2070 [ $title, &$url, $query ]
2071 );
2072 }
2073
2075 public function onGetIP( &$ip ) {
2076 return $this->container->run(
2077 'GetIP',
2078 [ &$ip ]
2079 );
2080 }
2081
2083 public function onGetLangPreferredVariant( &$req ) {
2084 return $this->container->run(
2085 'GetLangPreferredVariant',
2086 [ &$req ]
2087 );
2088 }
2089
2091 public function onGetLinkColours( $linkcolour_ids, &$colours, $title ) {
2092 return $this->container->run(
2093 'GetLinkColours',
2094 [ $linkcolour_ids, &$colours, $title ]
2095 );
2096 }
2097
2099 public function onGetLocalURL( $title, &$url, $query ) {
2100 return $this->container->run(
2101 'GetLocalURL',
2102 [ $title, &$url, $query ]
2103 );
2104 }
2105
2107 public function onGetLocalURL__Article( $title, &$url ) {
2108 return $this->container->run(
2109 'GetLocalURL::Article',
2110 [ $title, &$url ]
2111 );
2112 }
2113
2115 public function onGetLocalURL__Internal( $title, &$url, $query ) {
2116 return $this->container->run(
2117 'GetLocalURL::Internal',
2118 [ $title, &$url, $query ]
2119 );
2120 }
2121
2123 public function onGetLogTypesOnUser( &$types ) {
2124 return $this->container->run(
2125 'GetLogTypesOnUser',
2126 [ &$types ]
2127 );
2128 }
2129
2131 public function onGetMagicVariableIDs( &$variableIDs ) {
2132 return $this->container->run(
2133 'GetMagicVariableIDs',
2134 [ &$variableIDs ]
2135 );
2136 }
2137
2139 public function onGetMetadataVersion( &$version ) {
2140 return $this->container->run(
2141 'GetMetadataVersion',
2142 [ &$version ]
2143 );
2144 }
2145
2147 public function onGetNewMessagesAlert( &$newMessagesAlert, $newtalks, $user,
2148 $out
2149 ) {
2150 return $this->container->run(
2151 'GetNewMessagesAlert',
2152 [ &$newMessagesAlert, $newtalks, $user, $out ]
2153 );
2154 }
2155
2157 public function onGetPreferences( $user, &$preferences ) {
2158 return $this->container->run(
2159 'GetPreferences',
2160 [ $user, &$preferences ]
2161 );
2162 }
2163
2165 public function onGetRelativeTimestamp( &$output, &$diff, $timestamp,
2166 $relativeTo, $user, $lang
2167 ) {
2168 return $this->container->run(
2169 'GetRelativeTimestamp',
2170 [ &$output, &$diff, $timestamp, $relativeTo, $user, $lang ]
2171 );
2172 }
2173
2175 public function onGetSlotDiffRenderer( $contentHandler, &$slotDiffRenderer,
2176 $context
2177 ) {
2178 return $this->container->run(
2179 'GetSlotDiffRenderer',
2180 [ $contentHandler, &$slotDiffRenderer, $context ]
2181 );
2182 }
2183
2185 public function onGetUserBlock( $user, $ip, &$block ) {
2186 return $this->container->run(
2187 'GetUserBlock',
2188 [ $user, $ip, &$block ]
2189 );
2190 }
2191
2194 LinkTarget $title,
2195 UserIdentity $user,
2196 string $action,
2197 string $rigor,
2198 PermissionStatus $status
2199 ): void {
2200 $this->container->run(
2201 'PermissionStatusAudit',
2202 [ $title, $user, $action, $rigor, $status ],
2203 [ 'abortable' => false ]
2204 );
2205 }
2206
2208 public function onGetSecurityLogContext( array $info, array &$context ): void {
2209 $this->container->run(
2210 'GetSecurityLogContext',
2211 [ $info, &$context ],
2212 [ 'abortable' => false ]
2213 );
2214 }
2215
2217 public function onGetSessionJwtData( ?UserIdentity $user, array &$jwtData ): void {
2218 $this->container->run(
2219 'GetSessionJwtData',
2220 [ $user, &$jwtData ],
2221 [ 'abortable' => false ]
2222 );
2223 }
2224
2226 public function onGetUserPermissionsErrors( $title, $user, $action, &$result ) {
2227 return $this->container->run(
2228 'getUserPermissionsErrors',
2229 [ $title, $user, $action, &$result ]
2230 );
2231 }
2232
2234 public function onGetUserPermissionsErrorsExpensive( $title, $user, $action,
2235 &$result
2236 ) {
2237 return $this->container->run(
2238 'getUserPermissionsErrorsExpensive',
2239 [ $title, $user, $action, &$result ]
2240 );
2241 }
2242
2244 public function onGitViewers( &$extTypes ) {
2245 return $this->container->run(
2246 'GitViewers',
2247 [ &$extTypes ]
2248 );
2249 }
2250
2252 public function onHistoryPageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
2253 return $this->container->run(
2254 'HistoryPageToolLinks',
2255 [ $context, $linkRenderer, &$links ]
2256 );
2257 }
2258
2260 public function onHistoryTools( $revRecord, &$links, $prevRevRecord, $userIdentity ) {
2261 return $this->container->run(
2262 'HistoryTools',
2263 [ $revRecord, &$links, $prevRevRecord, $userIdentity ]
2264 );
2265 }
2266
2268 public function onHtmlCacheUpdaterAppendUrls( $title, $mode, &$append ) {
2269 return $this->container->run(
2270 'HtmlCacheUpdaterAppendUrls',
2271 [ $title, $mode, &$append ]
2272 );
2273 }
2274
2276 public function onHtmlCacheUpdaterVaryUrls( $urls, &$append ) {
2277 return $this->container->run(
2278 'HtmlCacheUpdaterVaryUrls',
2279 [ $urls, &$append ]
2280 );
2281 }
2282
2284 public function onHTMLFileCache__useFileCache( $context ) {
2285 return $this->container->run(
2286 'HTMLFileCache::useFileCache',
2287 [ $context ]
2288 );
2289 }
2290
2292 public function onHtmlPageLinkRendererBegin( $linkRenderer, $target, &$text,
2293 &$customAttribs, &$query, &$ret
2294 ) {
2295 return $this->container->run(
2296 'HtmlPageLinkRendererBegin',
2297 [ $linkRenderer, $target, &$text, &$customAttribs, &$query, &$ret ]
2298 );
2299 }
2300
2302 public function onHtmlPageLinkRendererEnd( $linkRenderer, $target, $isKnown,
2303 &$text, &$attribs, &$ret
2304 ) {
2305 return $this->container->run(
2306 'HtmlPageLinkRendererEnd',
2307 [ $linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret ]
2308 );
2309 }
2310
2312 public function onImageBeforeProduceHTML( $linker, &$title, &$file,
2313 &$frameParams, &$handlerParams, &$time, &$res, $parser, &$query, &$widthOption
2314 ) {
2315 return $this->container->run(
2316 'ImageBeforeProduceHTML',
2317 [ $linker, &$title, &$file, &$frameParams, &$handlerParams, &$time,
2318 &$res, $parser, &$query, &$widthOption ]
2319 );
2320 }
2321
2323 public function onImageOpenShowImageInlineBefore( $imagePage, $output ) {
2324 return $this->container->run(
2325 'ImageOpenShowImageInlineBefore',
2326 [ $imagePage, $output ]
2327 );
2328 }
2329
2331 public function onImagePageAfterImageLinks( $imagePage, &$html ) {
2332 return $this->container->run(
2333 'ImagePageAfterImageLinks',
2334 [ $imagePage, &$html ]
2335 );
2336 }
2337
2339 public function onImagePageFileHistoryLine( $imageHistoryList, $file, &$line, &$css ) {
2340 return $this->container->run(
2341 'ImagePageFileHistoryLine',
2342 [ $imageHistoryList, $file, &$line, &$css ]
2343 );
2344 }
2345
2347 public function onImagePageFindFile( $page, &$file, &$displayFile ) {
2348 return $this->container->run(
2349 'ImagePageFindFile',
2350 [ $page, &$file, &$displayFile ]
2351 );
2352 }
2353
2355 public function onImagePageShowTOC( $page, &$toc ) {
2356 return $this->container->run(
2357 'ImagePageShowTOC',
2358 [ $page, &$toc ]
2359 );
2360 }
2361
2363 public function onImgAuthBeforeStream( &$title, &$path, &$name, &$result ) {
2364 return $this->container->run(
2365 'ImgAuthBeforeStream',
2366 [ &$title, &$path, &$name, &$result ]
2367 );
2368 }
2369
2371 public function onImgAuthModifyHeaders( $title, &$headers ) {
2372 return $this->container->run(
2373 'ImgAuthModifyHeaders',
2374 [ $title, &$headers ]
2375 );
2376 }
2377
2379 public function onImportHandleLogItemXMLTag( $reader, $logInfo ) {
2380 return $this->container->run(
2381 'ImportHandleLogItemXMLTag',
2382 [ $reader, $logInfo ]
2383 );
2384 }
2385
2387 public function onImportHandlePageXMLTag( $reader, &$pageInfo ) {
2388 return $this->container->run(
2389 'ImportHandlePageXMLTag',
2390 [ $reader, &$pageInfo ]
2391 );
2392 }
2393
2395 public function onImportHandleRevisionXMLTag( $reader, $pageInfo,
2396 $revisionInfo
2397 ) {
2398 return $this->container->run(
2399 'ImportHandleRevisionXMLTag',
2400 [ $reader, $pageInfo, $revisionInfo ]
2401 );
2402 }
2403
2405 public function onImportHandleContentXMLTag( $reader, $contentInfo ) {
2406 return $this->container->run(
2407 'ImportHandleContentXMLTag',
2408 [ $reader, $contentInfo ] );
2409 }
2410
2412 public function onImportHandleToplevelXMLTag( $reader ) {
2413 return $this->container->run(
2414 'ImportHandleToplevelXMLTag',
2415 [ $reader ]
2416 );
2417 }
2418
2420 public function onImportHandleUnknownUser( $name ) {
2421 return $this->container->run(
2422 'ImportHandleUnknownUser',
2423 [ $name ]
2424 );
2425 }
2426
2428 public function onImportHandleUploadXMLTag( $reader, $revisionInfo ) {
2429 return $this->container->run(
2430 'ImportHandleUploadXMLTag',
2431 [ $reader, $revisionInfo ]
2432 );
2433 }
2434
2436 public function onImportLogInterwikiLink( &$fullInterwikiPrefix, &$pageTitle ) {
2437 return $this->container->run(
2438 'ImportLogInterwikiLink',
2439 [ &$fullInterwikiPrefix, &$pageTitle ]
2440 );
2441 }
2442
2444 public function onImportSources( &$importSources ) {
2445 return $this->container->run(
2446 'ImportSources',
2447 [ &$importSources ]
2448 );
2449 }
2450
2452 public function onInfoAction( $context, &$pageInfo ) {
2453 return $this->container->run(
2454 'InfoAction',
2455 [ $context, &$pageInfo ]
2456 );
2457 }
2458
2460 public function onInitializeArticleMaybeRedirect( $title, $request,
2461 &$ignoreRedirect, &$target, &$article
2462 ) {
2463 return $this->container->run(
2464 'InitializeArticleMaybeRedirect',
2465 [ $title, $request, &$ignoreRedirect, &$target, &$article ]
2466 );
2467 }
2468
2470 public function onInternalParseBeforeLinks( $parser, &$text, $stripState ) {
2471 return $this->container->run(
2472 'InternalParseBeforeLinks',
2473 [ $parser, &$text, $stripState ]
2474 );
2475 }
2476
2478 public function onInterwikiLoadPrefix( $prefix, &$iwData ) {
2479 return $this->container->run(
2480 'InterwikiLoadPrefix',
2481 [ $prefix, &$iwData ]
2482 );
2483 }
2484
2486 public function onInvalidateEmailComplete( $user ) {
2487 return $this->container->run(
2488 'InvalidateEmailComplete',
2489 [ $user ]
2490 );
2491 }
2492
2494 public function onIRCLineURL( &$url, &$query, $rc ) {
2495 return $this->container->run(
2496 'IRCLineURL',
2497 [ &$url, &$query, $rc ]
2498 );
2499 }
2500
2502 public function onIsFileCacheable( $article ) {
2503 return $this->container->run(
2504 'IsFileCacheable',
2505 [ $article ]
2506 );
2507 }
2508
2510 public function onIsTrustedProxy( $ip, &$result ) {
2511 return $this->container->run(
2512 'IsTrustedProxy',
2513 [ $ip, &$result ]
2514 );
2515 }
2516
2518 public function onIsUploadAllowedFromUrl( $url, &$allowed ) {
2519 return $this->container->run(
2520 'IsUploadAllowedFromUrl',
2521 [ $url, &$allowed ]
2522 );
2523 }
2524
2526 public function onIsValidEmailAddr( $addr, &$result ) {
2527 return $this->container->run(
2528 'isValidEmailAddr',
2529 [ $addr, &$result ]
2530 );
2531 }
2532
2534 public function onIsValidPassword( $password, &$result, $user ) {
2535 return $this->container->run(
2536 'isValidPassword',
2537 [ $password, &$result, $user ]
2538 );
2539 }
2540
2542 public function onJsonValidateSave( JsonContent $content, PageIdentity $pageIdentity, StatusValue $status ) {
2543 return $this->container->run(
2544 'JsonValidateSave',
2545 [ $content, $pageIdentity, &$status ]
2546 );
2547 }
2548
2550 public function onLanguageGetNamespaces( &$namespaces ) {
2551 return $this->container->run(
2552 'LanguageGetNamespaces',
2553 [ &$namespaces ]
2554 );
2555 }
2556
2558 public function onLanguageGetTranslatedLanguageNames( &$names, $code ) {
2559 return $this->container->run(
2560 'LanguageGetTranslatedLanguageNames',
2561 [ &$names, $code ]
2562 );
2563 }
2564
2566 public function onLanguageLinks( $title, &$links, &$linkFlags ) {
2567 return $this->container->run(
2568 'LanguageLinks',
2569 [ $title, &$links, &$linkFlags ]
2570 );
2571 }
2572
2574 public function onLanguageSelector( $out, $cssClassName ) {
2575 return $this->container->run(
2576 'LanguageSelector',
2577 [ $out, $cssClassName ]
2578 );
2579 }
2580
2582 public function onLanguage__getMessagesFileName( $code, &$file ) {
2583 return $this->container->run(
2584 'Language::getMessagesFileName',
2585 [ $code, &$file ]
2586 );
2587 }
2588
2590 public function onLinkerGenerateRollbackLink( $revRecord, $context, $options, &$inner ) {
2591 return $this->container->run(
2592 'LinkerGenerateRollbackLink',
2593 [ $revRecord, $context, $options, &$inner ]
2594 );
2595 }
2596
2598 public function onLinkerMakeExternalImage( &$url, &$alt, &$img ) {
2599 return $this->container->run(
2600 'LinkerMakeExternalImage',
2601 [ &$url, &$alt, &$img ]
2602 );
2603 }
2604
2606 public function onLinkerMakeExternalLink( &$url, &$text, &$link, &$attribs,
2607 $linkType
2608 ) {
2609 return $this->container->run(
2610 'LinkerMakeExternalLink',
2611 [ &$url, &$text, &$link, &$attribs, $linkType ]
2612 );
2613 }
2614
2616 public function onLinkerMakeMediaLinkFile( $title, $file, &$html, &$attribs,
2617 &$ret
2618 ) {
2619 return $this->container->run(
2620 'LinkerMakeMediaLinkFile',
2621 [ $title, $file, &$html, &$attribs, &$ret ]
2622 );
2623 }
2624
2626 public function onLinksUpdate( $linksUpdate ) {
2627 return $this->container->run(
2628 'LinksUpdate',
2629 [ $linksUpdate ]
2630 );
2631 }
2632
2634 public function onLinksUpdateComplete( $linksUpdate, $ticket ) {
2635 return $this->container->run(
2636 'LinksUpdateComplete',
2637 [ $linksUpdate, $ticket ]
2638 );
2639 }
2640
2642 public function onListDefinedTags( &$tags ) {
2643 return $this->container->run(
2644 'ListDefinedTags',
2645 [ &$tags ]
2646 );
2647 }
2648
2650 public function onLoadExtensionSchemaUpdates( $updater ) {
2651 return $this->container->run(
2652 'LoadExtensionSchemaUpdates',
2653 [ $updater ],
2654 [ 'noServices' => true ]
2655 );
2656 }
2657
2659 public function onLocalFilePurgeThumbnails( $file, $archiveName, $urls ) {
2660 return $this->container->run(
2661 'LocalFilePurgeThumbnails',
2662 [ $file, $archiveName, $urls ]
2663 );
2664 }
2665
2667 public function onLocalFile__getHistory( $file, &$tables, &$fields, &$conds,
2668 &$opts, &$join_conds
2669 ) {
2670 return $this->container->run(
2671 'LocalFile::getHistory',
2672 [ $file, &$tables, &$fields, &$conds, &$opts, &$join_conds ]
2673 );
2674 }
2675
2677 public function onLocalisationCacheRecache( $cache, $code, &$alldata, $unused ) {
2678 return $this->container->run(
2679 'LocalisationCacheRecache',
2680 [ $cache, $code, &$alldata, $unused ]
2681 );
2682 }
2683
2685 public function onLocalisationCacheRecacheFallback( $cache, $code, &$alldata ) {
2686 return $this->container->run(
2687 'LocalisationCacheRecacheFallback',
2688 [ $cache, $code, &$alldata ]
2689 );
2690 }
2691
2693 public function onLocalUserCreated( $user, $autocreated ) {
2694 return $this->container->run(
2695 'LocalUserCreated',
2696 [ $user, $autocreated ]
2697 );
2698 }
2699
2701 public function onLogEventsListGetExtraInputs( $type, $logEventsList, &$input,
2702 &$formDescriptor
2703 ) {
2704 return $this->container->run(
2705 'LogEventsListGetExtraInputs',
2706 [ $type, $logEventsList, &$input, &$formDescriptor ]
2707 );
2708 }
2709
2711 public function onLogEventsListLineEnding( $page, &$ret, $entry, &$classes,
2712 &$attribs
2713 ) {
2714 return $this->container->run(
2715 'LogEventsListLineEnding',
2716 [ $page, &$ret, $entry, &$classes, &$attribs ]
2717 );
2718 }
2719
2721 public function onLogEventsListShowLogExtract( &$s, $types, $page, $user,
2722 $param
2723 ) {
2724 return $this->container->run(
2725 'LogEventsListShowLogExtract',
2726 [ &$s, $types, $page, $user, $param ]
2727 );
2728 }
2729
2731 public function onLogException( $e, $suppressed ) {
2732 return $this->container->run(
2733 'LogException',
2734 [ $e, $suppressed ]
2735 );
2736 }
2737
2739 public function onLoginFormValidErrorMessages( array &$messages ) {
2740 return $this->container->run(
2741 'LoginFormValidErrorMessages',
2742 [ &$messages ]
2743 );
2744 }
2745
2747 public function onLogLine( $log_type, $log_action, $title, $paramArray,
2748 &$comment, &$revert, $time
2749 ) {
2750 return $this->container->run(
2751 'LogLine',
2752 [ $log_type, $log_action, $title, $paramArray, &$comment,
2753 &$revert, $time ]
2754 );
2755 }
2756
2758 public function onLonelyPagesQuery( &$tables, &$conds, &$joinConds ) {
2759 return $this->container->run(
2760 'LonelyPagesQuery',
2761 [ &$tables, &$conds, &$joinConds ]
2762 );
2763 }
2764
2766 public function onMaintenanceRefreshLinksInit( $refreshLinks ) {
2767 return $this->container->run(
2768 'MaintenanceRefreshLinksInit',
2769 [ $refreshLinks ]
2770 );
2771 }
2772
2774 public function onMaintenanceShellStart(): void {
2775 $this->container->run(
2776 'MaintenanceShellStart',
2777 [],
2778 [ 'abortable' => false ]
2779 );
2780 }
2781
2783 public function onMaintenanceUpdateAddParams( &$params ) {
2784 return $this->container->run(
2785 'MaintenanceUpdateAddParams',
2786 [ &$params ]
2787 );
2788 }
2789
2791 public function onMakeGlobalVariablesScript( &$vars, $out ): void {
2792 $this->container->run(
2793 'MakeGlobalVariablesScript',
2794 [ &$vars, $out ],
2795 [ 'abortable' => false ]
2796 );
2797 }
2798
2800 public function onManualLogEntryBeforePublish( $logEntry ): void {
2801 $this->container->run(
2802 'ManualLogEntryBeforePublish',
2803 [ $logEntry ],
2804 [ 'abortable' => false ]
2805 );
2806 }
2807
2809 public function onMarkPatrolled( $rcid, $user, $wcOnlySysopsCanPatrol, $auto,
2810 &$tags
2811 ) {
2812 return $this->container->run(
2813 'MarkPatrolled',
2814 [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto, &$tags ]
2815 );
2816 }
2817
2819 public function onMarkPatrolledComplete( $rcid, $user, $wcOnlySysopsCanPatrol,
2820 $auto
2821 ) {
2822 return $this->container->run(
2823 'MarkPatrolledComplete',
2824 [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto ]
2825 );
2826 }
2827
2829 public function onMediaWikiPerformAction( $output, $article, $title, $user,
2830 $request, $mediaWiki
2831 ) {
2832 return $this->container->run(
2833 'MediaWikiPerformAction',
2834 [ $output, $article, $title, $user, $request, $mediaWiki ]
2835 );
2836 }
2837
2839 public function onMediaWikiServices( $services ) {
2840 return $this->container->run(
2841 'MediaWikiServices',
2842 [ $services ],
2843 [ 'noServices' => true ]
2844 );
2845 }
2846
2848 public function onMessageCacheFetchOverrides( array &$messages ): void {
2849 $this->container->run(
2850 'MessageCacheFetchOverrides',
2851 [ &$messages ],
2852 [ 'abortable' => false ]
2853 );
2854 }
2855
2857 public function onMessageCacheReplace( $title, $text ) {
2858 return $this->container->run(
2859 'MessageCacheReplace',
2860 [ $title, $text ]
2861 );
2862 }
2863
2865 public function onMessageCache__get( &$key ) {
2866 return $this->container->run(
2867 'MessageCache::get',
2868 [ &$key ]
2869 );
2870 }
2871
2873 public function onMessagePostProcessHtml( &$value, $format, $key ): void {
2874 $this->container->run(
2875 'MessagePostProcessHtml',
2876 [ &$value, $format, $key ],
2877 [ 'abortable' => false ]
2878 );
2879 }
2880
2882 public function onMessagePostProcessText( &$value, $format, $key ): void {
2883 $this->container->run(
2884 'MessagePostProcessText',
2885 [ &$value, $format, $key ],
2886 [ 'abortable' => false ]
2887 );
2888 }
2889
2891 public function onMessagesPreLoad( $title, &$message, $code ) {
2892 return $this->container->run(
2893 'MessagesPreLoad',
2894 [ $title, &$message, $code ]
2895 );
2896 }
2897
2899 public function onMimeMagicGuessFromContent( $mimeMagic, &$head, &$tail, $file,
2900 &$mime
2901 ) {
2902 return $this->container->run(
2903 'MimeMagicGuessFromContent',
2904 [ $mimeMagic, &$head, &$tail, $file, &$mime ]
2905 );
2906 }
2907
2909 public function onMimeMagicImproveFromExtension( $mimeMagic, $ext, &$mime ) {
2910 return $this->container->run(
2911 'MimeMagicImproveFromExtension',
2912 [ $mimeMagic, $ext, &$mime ]
2913 );
2914 }
2915
2917 public function onMimeMagicInit( $mimeMagic ) {
2918 return $this->container->run(
2919 'MimeMagicInit',
2920 [ $mimeMagic ]
2921 );
2922 }
2923
2925 public function onGetBlockErrorMessageKey( $block, &$key ) {
2926 return $this->container->run(
2927 'GetBlockErrorMessageKey',
2928 [ $block, &$key ]
2929 );
2930 }
2931
2933 public function onModifyExportQuery( $db, &$tables, $cond, &$opts,
2934 &$join_conds, &$conds
2935 ) {
2936 return $this->container->run(
2937 'ModifyExportQuery',
2938 [ $db, &$tables, $cond, &$opts, &$join_conds, &$conds ]
2939 );
2940 }
2941
2943 public function onMovePageCheckPermissions( $oldTitle, $newTitle, $user,
2944 $reason, $status
2945 ) {
2946 return $this->container->run(
2947 'MovePageCheckPermissions',
2948 [ $oldTitle, $newTitle, $user, $reason, $status ]
2949 );
2950 }
2951
2953 public function onMovePageIsValidMove( $oldTitle, $newTitle, $status ) {
2954 return $this->container->run(
2955 'MovePageIsValidMove',
2956 [ $oldTitle, $newTitle, $status ]
2957 );
2958 }
2959
2961 public function onMultiContentSave( $renderedRevision, $user, $summary, $flags,
2962 $status
2963 ) {
2964 return $this->container->run(
2965 'MultiContentSave',
2966 [ $renderedRevision, $user, $summary, $flags, $status ]
2967 );
2968 }
2969
2971 public function onNamespaceIsMovable( $index, &$result ) {
2972 return $this->container->run(
2973 'NamespaceIsMovable',
2974 [ $index, &$result ]
2975 );
2976 }
2977
2979 public function onNewDifferenceEngine( $title, &$oldId, &$newId, $old, $new ) {
2980 return $this->container->run(
2981 'NewDifferenceEngine',
2982 [ $title, &$oldId, &$newId, $old, $new ]
2983 );
2984 }
2985
2987 public function onNewPagesLineEnding( $page, &$ret, $row, &$classes, &$attribs ) {
2988 return $this->container->run(
2989 'NewPagesLineEnding',
2990 [ $page, &$ret, $row, &$classes, &$attribs ]
2991 );
2992 }
2993
2995 public function onOldChangesListRecentChangesLine( $changeslist, &$s, $rc,
2996 &$classes, &$attribs
2997 ) {
2998 return $this->container->run(
2999 'OldChangesListRecentChangesLine',
3000 [ $changeslist, &$s, $rc, &$classes, &$attribs ]
3001 );
3002 }
3003
3005 public function onOpenSearchUrls( &$urls ) {
3006 return $this->container->run(
3007 'OpenSearchUrls',
3008 [ &$urls ]
3009 );
3010 }
3011
3013 public function onOpportunisticLinksUpdate( $page, $title, $parserOutput ) {
3014 return $this->container->run(
3015 'OpportunisticLinksUpdate',
3016 [ $page, $title, $parserOutput ]
3017 );
3018 }
3019
3021 public function onOtherAutoblockLogLink( &$otherBlockLink ) {
3022 return $this->container->run(
3023 'OtherAutoblockLogLink',
3024 [ &$otherBlockLink ]
3025 );
3026 }
3027
3029 public function onOtherBlockLogLink( &$otherBlockLink, $ip ) {
3030 return $this->container->run(
3031 'OtherBlockLogLink',
3032 [ &$otherBlockLink, $ip ]
3033 );
3034 }
3035
3037 public function onOutputPageAfterGetHeadLinksArray( &$tags, $out ) {
3038 return $this->container->run(
3039 'OutputPageAfterGetHeadLinksArray',
3040 [ &$tags, $out ]
3041 );
3042 }
3043
3045 public function onOutputPageBeforeHTML( $out, &$text ) {
3046 return $this->container->run(
3047 'OutputPageBeforeHTML',
3048 [ $out, &$text ]
3049 );
3050 }
3051
3053 public function onOutputPageBodyAttributes( $out, $sk, &$bodyAttrs ): void {
3054 $this->container->run(
3055 'OutputPageBodyAttributes',
3056 [ $out, $sk, &$bodyAttrs ],
3057 [ 'abortable' => false ]
3058 );
3059 }
3060
3062 public function onOutputPageCheckLastModified( &$modifiedTimes, $out ) {
3063 return $this->container->run(
3064 'OutputPageCheckLastModified',
3065 [ &$modifiedTimes, $out ]
3066 );
3067 }
3068
3070 public function onOutputPageParserOutput( $outputPage, $parserOutput ): void {
3071 $this->container->run(
3072 'OutputPageParserOutput',
3073 [ $outputPage, $parserOutput ],
3074 [ 'abortable' => false ]
3075 );
3076 }
3077
3080 OutputPage $outputPage,
3081 ProperPageIdentity $categoryTitle,
3082 string $text,
3083 ?string &$link
3084 ): void {
3085 $this->container->run(
3086 'OutputPageRenderCategoryLink',
3087 [ $outputPage, $categoryTitle, $text, &$link ],
3088 [ 'abortable' => false ]
3089 );
3090 }
3091
3093 public function onPageContentLanguage( $title, &$pageLang, $userLang ) {
3094 return $this->container->run(
3095 'PageContentLanguage',
3096 [ $title, &$pageLang, $userLang ]
3097 );
3098 }
3099
3101 public function onPageDelete(
3102 ProperPageIdentity $page,
3103 Authority $deleter,
3104 string $reason,
3105 StatusValue $status,
3106 bool $suppress
3107 ) {
3108 return $this->container->run(
3109 'PageDelete',
3110 [ $page, $deleter, $reason, $status, $suppress ]
3111 );
3112 }
3113
3115 public function onPageDeleteComplete(
3116 ProperPageIdentity $page,
3117 Authority $deleter,
3118 string $reason,
3119 int $pageID,
3120 RevisionRecord $deletedRev,
3121 ManualLogEntry $logEntry,
3122 int $archivedRevisionCount
3123 ) {
3124 return $this->container->run(
3125 'PageDeleteComplete',
3126 [ $page, $deleter, $reason, $pageID, $deletedRev, $logEntry, $archivedRevisionCount ]
3127 );
3128 }
3129
3131 public function onPageDeletionDataUpdates( $title, $revision, &$updates ) {
3132 return $this->container->run(
3133 'PageDeletionDataUpdates',
3134 [ $title, $revision, &$updates ]
3135 );
3136 }
3137
3139 public function onPageUndelete(
3140 ProperPageIdentity $page,
3141 Authority $performer,
3142 string $reason,
3143 bool $unsuppress,
3144 array $timestamps,
3145 array $fileVersions,
3146 StatusValue $status
3147 ) {
3148 return $this->container->run(
3149 'PageUndelete',
3150 [ $page, $performer, $reason, $unsuppress, $timestamps, $fileVersions, $status ]
3151 );
3152 }
3153
3155 public function onPageUndeleteComplete(
3156 ProperPageIdentity $page,
3157 Authority $restorer,
3158 string $reason,
3159 RevisionRecord $restoredRev,
3160 ManualLogEntry $logEntry,
3161 int $restoredRevisionCount,
3162 bool $created,
3163 array $restoredPageIds
3164 ): void {
3165 $this->container->run(
3166 'PageUndeleteComplete',
3167 [
3168 $page,
3169 $restorer,
3170 $reason,
3171 $restoredRev,
3172 $logEntry,
3173 $restoredRevisionCount,
3174 $created,
3175 $restoredPageIds
3176 ],
3177 [ 'abortable' => false ]
3178 );
3179 }
3180
3182 public function onPageHistoryBeforeList( $article, $context ) {
3183 return $this->container->run(
3184 'PageHistoryBeforeList',
3185 [ $article, $context ]
3186 );
3187 }
3188
3190 public function onPageHistoryLineEnding( $historyAction, &$row, &$s, &$classes,
3191 &$attribs
3192 ) {
3193 return $this->container->run(
3194 'PageHistoryLineEnding',
3195 [ $historyAction, &$row, &$s, &$classes, &$attribs ]
3196 );
3197 }
3198
3200 public function onPageHistoryPager__doBatchLookups( $pager, $result ) {
3201 return $this->container->run(
3202 'PageHistoryPager::doBatchLookups',
3203 [ $pager, $result ]
3204 );
3205 }
3206
3208 public function onPageHistoryPager__getQueryInfo( $pager, &$queryInfo ) {
3209 return $this->container->run(
3210 'PageHistoryPager::getQueryInfo',
3211 [ $pager, &$queryInfo ]
3212 );
3213 }
3214
3216 public function onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
3217 return $this->container->run(
3218 'PageMoveComplete',
3219 [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
3220 );
3221 }
3222
3224 public function onPageMoveCompleting( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
3225 return $this->container->run(
3226 'PageMoveCompleting',
3227 [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
3228 );
3229 }
3230
3232 public function onPageRenderingHash( &$confstr, $user, &$forOptions ) {
3233 return $this->container->run(
3234 'PageRenderingHash',
3235 [ &$confstr, $user, &$forOptions ]
3236 );
3237 }
3238
3240 public function onPageSaveComplete( $wikiPage, $user, $summary, $flags,
3241 $revisionRecord, $editResult
3242 ) {
3243 return $this->container->run(
3244 'PageSaveComplete',
3245 [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult ]
3246 );
3247 }
3248
3250 public function onPageViewUpdates( $wikipage, $user ) {
3251 return $this->container->run(
3252 'PageViewUpdates',
3253 [ $wikipage, $user ]
3254 );
3255 }
3256
3258 public function onParserAfterParse( $parser, &$text, $stripState ) {
3259 return $this->container->run(
3260 'ParserAfterParse',
3261 [ $parser, &$text, $stripState ]
3262 );
3263 }
3264
3266 public function onParserAfterTidy( $parser, &$text ) {
3267 return $this->container->run(
3268 'ParserAfterTidy',
3269 [ $parser, &$text ]
3270 );
3271 }
3272
3274 public function onParserBeforeInternalParse( $parser, &$text, $stripState ) {
3275 return $this->container->run(
3276 'ParserBeforeInternalParse',
3277 [ $parser, &$text, $stripState ]
3278 );
3279 }
3280
3282 public function onParserBeforePreprocess( $parser, &$text, $stripState ) {
3283 return $this->container->run(
3284 'ParserBeforePreprocess',
3285 [ $parser, &$text, $stripState ]
3286 );
3287 }
3288
3290 public function onParserCacheSaveComplete( $parserCache, $parserOutput, $title,
3291 $popts, $revId
3292 ) {
3293 return $this->container->run(
3294 'ParserCacheSaveComplete',
3295 [ $parserCache, $parserOutput, $title, $popts, $revId ]
3296 );
3297 }
3298
3300 public function onParserClearState( $parser ) {
3301 return $this->container->run(
3302 'ParserClearState',
3303 [ $parser ]
3304 );
3305 }
3306
3308 public function onParserCloned( $parser ) {
3309 return $this->container->run(
3310 'ParserCloned',
3311 [ $parser ]
3312 );
3313 }
3314
3316 public function onParserFetchTemplateData( array $titles, array &$tplData ): bool {
3317 return $this->container->run(
3318 'ParserFetchTemplateData',
3319 [ $titles, &$tplData ]
3320 );
3321 }
3322
3324 public function onParserFirstCallInit( $parser ) {
3325 return $this->container->run(
3326 'ParserFirstCallInit',
3327 [ $parser ]
3328 );
3329 }
3330
3332 public function onParserGetVariableValueSwitch( $parser, &$variableCache,
3333 $magicWordId, &$ret, $frame
3334 ) {
3335 return $this->container->run(
3336 'ParserGetVariableValueSwitch',
3337 [ $parser, &$variableCache, $magicWordId, &$ret, $frame ]
3338 );
3339 }
3340
3342 public function onParserGetVariableValueTs( $parser, &$time ) {
3343 return $this->container->run(
3344 'ParserGetVariableValueTs',
3345 [ $parser, &$time ]
3346 );
3347 }
3348
3350 public function onParserLimitReportFormat( $key, &$value, &$report, $isHTML,
3351 $localize
3352 ) {
3353 return $this->container->run(
3354 'ParserLimitReportFormat',
3355 [ $key, &$value, &$report, $isHTML, $localize ]
3356 );
3357 }
3358
3360 public function onParserLimitReportPrepare( $parser, $output ) {
3361 return $this->container->run(
3362 'ParserLimitReportPrepare',
3363 [ $parser, $output ]
3364 );
3365 }
3366
3368 public function onParserLogLinterData( string $title, int $revId, array $lints ): bool {
3369 return $this->container->run(
3370 'ParserLogLinterData',
3371 [ $title, $revId, $lints ]
3372 );
3373 }
3374
3376 public function onParserMakeImageParams( $title, $file, &$params, $parser ) {
3377 return $this->container->run(
3378 'ParserMakeImageParams',
3379 [ $title, $file, &$params, $parser ]
3380 );
3381 }
3382
3384 public function onParserModifyImageHTML( Parser $parser, File $file,
3385 array $params, string &$html
3386 ): void {
3387 $this->container->run(
3388 'ParserModifyImageHTML',
3389 [ $parser, $file, $params, &$html ],
3390 [ 'abortable' => false ]
3391 );
3392 }
3393
3395 public function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyLoad ) {
3396 return $this->container->run(
3397 'ParserOptionsRegister',
3398 [ &$defaults, &$inCacheKey, &$lazyLoad ]
3399 );
3400 }
3401
3403 public function onParserOutputPostCacheTransform( $parserOutput, &$text,
3404 &$options
3405 ): void {
3406 $this->container->run(
3407 'ParserOutputPostCacheTransform',
3408 [ $parserOutput, &$text, &$options ],
3409 [ 'abortable' => false ]
3410 );
3411 }
3412
3414 public function onParserOutputStashForEdit( $page, $content, $output, $summary,
3415 $user
3416 ) {
3417 return $this->container->run(
3418 'ParserOutputStashForEdit',
3419 [ $page, $content, $output, $summary, $user ]
3420 );
3421 }
3422
3424 public function onParserPreSaveTransformComplete( $parser, &$text ) {
3425 return $this->container->run(
3426 'ParserPreSaveTransformComplete',
3427 [ $parser, &$text ]
3428 );
3429 }
3430
3432 public function onParserTestGlobals( &$globals ) {
3433 return $this->container->run(
3434 'ParserTestGlobals',
3435 [ &$globals ]
3436 );
3437 }
3438
3440 public function onPasswordPoliciesForUser( $user, &$effectivePolicy ) {
3441 return $this->container->run(
3442 'PasswordPoliciesForUser',
3443 [ $user, &$effectivePolicy ]
3444 );
3445 }
3446
3448 public function onPerformRetroactiveAutoblock( $block, &$blockIds ) {
3449 return $this->container->run(
3450 'PerformRetroactiveAutoblock',
3451 [ $block, &$blockIds ]
3452 );
3453 }
3454
3456 public function onPingLimiter( $user, $action, &$result, $incrBy ) {
3457 return $this->container->run(
3458 'PingLimiter',
3459 [ $user, $action, &$result, $incrBy ]
3460 );
3461 }
3462
3464 public function onPlaceNewSection( $content, $oldtext, $subject, &$text ) {
3465 return $this->container->run(
3466 'PlaceNewSection',
3467 [ $content, $oldtext, $subject, &$text ]
3468 );
3469 }
3470
3472 public function onPostLoginRedirect( &$returnTo, &$returnToQuery, &$type ) {
3473 return $this->container->run(
3474 'PostLoginRedirect',
3475 [ &$returnTo, &$returnToQuery, &$type ]
3476 );
3477 }
3478
3480 public function onPreferencesFormPreSave( $formData, $form, $user, &$result,
3481 $oldUserOptions
3482 ) {
3483 return $this->container->run(
3484 'PreferencesFormPreSave',
3485 [ $formData, $form, $user, &$result, $oldUserOptions ]
3486 );
3487 }
3488
3490 public function onPreferencesGetIcon( &$iconNames ) {
3491 return $this->container->run(
3492 'PreferencesGetIcon',
3493 [ &$iconNames ]
3494 );
3495 }
3496
3498 public function onPreferencesGetLayout( &$useMobileLayout, $skinName,
3499 $skinProperties = []
3500 ) {
3501 return $this->container->run(
3502 'PreferencesGetLayout',
3503 [ &$useMobileLayout, $skinName, $skinProperties ]
3504 );
3505 }
3506
3508 public function onPreferencesGetLegend( $form, $key, &$legend ) {
3509 return $this->container->run(
3510 'PreferencesGetLegend',
3511 [ $form, $key, &$legend ]
3512 );
3513 }
3514
3516 public function onPrefixSearchBackend( $ns, $search, $limit, &$results,
3517 $offset
3518 ) {
3519 return $this->container->run(
3520 'PrefixSearchBackend',
3521 [ $ns, $search, $limit, &$results, $offset ]
3522 );
3523 }
3524
3526 public function onPrefixSearchExtractNamespace( &$namespaces, &$search ) {
3527 return $this->container->run(
3528 'PrefixSearchExtractNamespace',
3529 [ &$namespaces, &$search ]
3530 );
3531 }
3532
3534 public function onPrefsEmailAudit( $user, $oldaddr, $newaddr ) {
3535 return $this->container->run(
3536 'PrefsEmailAudit',
3537 [ $user, $oldaddr, $newaddr ]
3538 );
3539 }
3540
3542 public function onProtectionForm__buildForm( $article, &$output ) {
3543 return $this->container->run(
3544 'ProtectionForm::buildForm',
3545 [ $article, &$output ]
3546 );
3547 }
3548
3550 public function onProtectionFormAddFormFields( $article, &$hookFormOptions ) {
3551 return $this->container->run(
3552 'ProtectionFormAddFormFields',
3553 [ $article, &$hookFormOptions ]
3554 );
3555 }
3556
3558 public function onProtectionForm__save( $article, &$errorMsg, $reasonstr ) {
3559 return $this->container->run(
3560 'ProtectionForm::save',
3561 [ $article, &$errorMsg, $reasonstr ]
3562 );
3563 }
3564
3566 public function onProtectionForm__showLogExtract( $article, $out ) {
3567 return $this->container->run(
3568 'ProtectionForm::showLogExtract',
3569 [ $article, $out ]
3570 );
3571 }
3572
3574 public function onRandomPageQuery( &$tables, &$conds, &$joinConds ) {
3575 return $this->container->run(
3576 'RandomPageQuery',
3577 [ &$tables, &$conds, &$joinConds ]
3578 );
3579 }
3580
3582 public function onRawPageViewBeforeOutput( $obj, &$text ) {
3583 return $this->container->run(
3584 'RawPageViewBeforeOutput',
3585 [ $obj, &$text ]
3586 );
3587 }
3588
3591 UserIdentity $performer,
3592 UserIdentity $target,
3593 array $conditions
3594 ): void {
3595 $this->container->run(
3596 'ReadPrivateUserRequirementsCondition',
3597 [ $performer, $target, $conditions ],
3598 [ 'abortable' => false ]
3599 );
3600 }
3601
3603 public function onRecentChangesPurgeRows( $rows ): void {
3604 $this->container->run(
3605 'RecentChangesPurgeRows',
3606 [ $rows ]
3607 );
3608 }
3609
3611 public function onRecentChangesPurgeQuery( $query, &$callbacks ): void {
3612 $this->container->run(
3613 'RecentChangesPurgeQuery',
3614 [ $query, &$callbacks ]
3615 );
3616 }
3617
3619 public function onRecentChange_save( $recentChange ) {
3620 return $this->container->run(
3621 'RecentChange_save',
3622 [ $recentChange ]
3623 );
3624 }
3625
3627 public function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
3628 return $this->container->run(
3629 'RedirectSpecialArticleRedirectParams',
3630 [ &$redirectParams ]
3631 );
3632 }
3633
3635 public function onRejectParserCacheValue( $parserOutput, $wikiPage,
3636 $parserOptions
3637 ) {
3638 return $this->container->run(
3639 'RejectParserCacheValue',
3640 [ $parserOutput, $wikiPage, $parserOptions ]
3641 );
3642 }
3643
3645 public function onRenameUserAbort( int $uid, string $old, string $new ) {
3646 return $this->container->run(
3647 'RenameUserAbort',
3648 [ $uid, $old, $new ]
3649 );
3650 }
3651
3653 public function onRenameUserComplete( int $uid, string $old, string $new ): void {
3654 $this->container->run(
3655 'RenameUserComplete',
3656 [ $uid, $old, $new ],
3657 [ 'abortable' => false ]
3658 );
3659 }
3660
3662 public function onRenameUserPreRename( int $uid, string $old, string $new ): void {
3663 $this->container->run(
3664 'RenameUserPreRename',
3665 [ $uid, $old, $new ],
3666 [ 'abortable' => false ]
3667 );
3668 }
3669
3671 public function onRenameUserSQL( RenameuserSQL $renameUserSql ): void {
3672 $this->container->run(
3673 'RenameUserSQL',
3674 [ $renameUserSql ],
3675 [ 'abortable' => false ]
3676 );
3677 }
3678
3680 public function onRenameUserWarning( string $oldUsername, string $newUsername, array &$warnings ): void {
3681 $this->container->run(
3682 'RenameUserWarning',
3683 [ $oldUsername, $newUsername, &$warnings ],
3684 [ 'abortable' => false ]
3685 );
3686 }
3687
3689 public function onRequestContextCreateSkin( $context, &$skin ) {
3690 return $this->container->run(
3691 'RequestContextCreateSkin',
3692 [ $context, &$skin ]
3693 );
3694 }
3695
3697 public function onResetPasswordExpiration( $user, &$newExpire ) {
3698 return $this->container->run(
3699 'ResetPasswordExpiration',
3700 [ $user, &$newExpire ]
3701 );
3702 }
3703
3705 public function onRevisionDataUpdates( $title, $renderedRevision, &$updates ) {
3706 return $this->container->run(
3707 'RevisionDataUpdates',
3708 [ $title, $renderedRevision, &$updates ]
3709 );
3710 }
3711
3713 public function onRevisionFromEditComplete( $wikiPage, $rev, $originalRevId, $user, &$tags ) {
3714 return $this->container->run(
3715 'RevisionFromEditComplete',
3716 [ $wikiPage, $rev, $originalRevId, $user, &$tags ]
3717 );
3718 }
3719
3721 public function onRevisionRecordInserted( $revisionRecord ) {
3722 return $this->container->run(
3723 'RevisionRecordInserted',
3724 [ $revisionRecord ]
3725 );
3726 }
3727
3729 public function onRevisionUndeleted( $revisionRecord, $oldPageID ) {
3730 return $this->container->run(
3731 'RevisionUndeleted',
3732 [ $revisionRecord, $oldPageID ]
3733 );
3734 }
3735
3737 public function onRollbackComplete( $wikiPage, $user, $revision, $current ) {
3738 return $this->container->run(
3739 'RollbackComplete',
3740 [ $wikiPage, $user, $revision, $current ]
3741 );
3742 }
3743
3745 public function onSearchableNamespaces( &$arr ) {
3746 return $this->container->run(
3747 'SearchableNamespaces',
3748 [ &$arr ]
3749 );
3750 }
3751
3753 public function onSearchAfterNoDirectMatch( $term, &$title ) {
3754 return $this->container->run(
3755 'SearchAfterNoDirectMatch',
3756 [ $term, &$title ]
3757 );
3758 }
3759
3761 public function onSearchDataForIndex( &$fields, $handler, $page, $output, $engine ) {
3762 return $this->container->run(
3763 'SearchDataForIndex',
3764 [ &$fields, $handler, $page, $output, $engine ]
3765 );
3766 }
3767
3769 public function onSearchDataForIndex2( array &$fields, ContentHandler $handler,
3770 WikiPage $page, ParserOutput $output, SearchEngine $engine, RevisionRecord $revision
3771 ) {
3772 return $this->container->run(
3773 'SearchDataForIndex2',
3774 [ &$fields, $handler, $page, $output, $engine, $revision ]
3775 );
3776 }
3777
3779 public function onSearchGetNearMatch( $term, &$title ) {
3780 return $this->container->run(
3781 'SearchGetNearMatch',
3782 [ $term, &$title ]
3783 );
3784 }
3785
3787 public function onSearchGetNearMatchBefore( $allSearchTerms, &$titleResult ) {
3788 return $this->container->run(
3789 'SearchGetNearMatchBefore',
3790 [ $allSearchTerms, &$titleResult ]
3791 );
3792 }
3793
3795 public function onSearchGetNearMatchComplete( $term, &$title ) {
3796 return $this->container->run(
3797 'SearchGetNearMatchComplete',
3798 [ $term, &$title ]
3799 );
3800 }
3801
3803 public function onSearchIndexFields( &$fields, $engine ) {
3804 return $this->container->run(
3805 'SearchIndexFields',
3806 [ &$fields, $engine ]
3807 );
3808 }
3809
3811 public function onSearchResultInitFromTitle( $title, &$id ) {
3812 return $this->container->run(
3813 'SearchResultInitFromTitle',
3814 [ $title, &$id ]
3815 );
3816 }
3817
3819 public function onSearchResultProvideDescription( array $pageIdentities, &$descriptions ) {
3820 return $this->container->run(
3821 'SearchResultProvideDescription',
3822 [ $pageIdentities, &$descriptions ]
3823 );
3824 }
3825
3827 public function onSearchResultProvideThumbnail( array $pageIdentities, &$thumbnails, ?int $size = null ) {
3828 return $this->container->run(
3829 'SearchResultProvideThumbnail',
3830 [ $pageIdentities, &$thumbnails, $size ]
3831 );
3832 }
3833
3835 public function onSearchResultsAugment( &$setAugmentors, &$rowAugmentors ) {
3836 return $this->container->run(
3837 'SearchResultsAugment',
3838 [ &$setAugmentors, &$rowAugmentors ]
3839 );
3840 }
3841
3843 public function onSecuritySensitiveOperationStatus( &$status, $operation,
3844 $session, $timeSinceAuth
3845 ) {
3846 return $this->container->run(
3847 'SecuritySensitiveOperationStatus',
3848 [ &$status, $operation, $session, $timeSinceAuth ]
3849 );
3850 }
3851
3853 public function onSelfLinkBegin( $nt, &$html, &$trail, &$prefix, &$ret ) {
3854 return $this->container->run(
3855 'SelfLinkBegin',
3856 [ $nt, &$html, &$trail, &$prefix, &$ret ]
3857 );
3858 }
3859
3861 public function onSessionCheckInfo( &$reason, $info, $request, $metadata,
3862 $data
3863 ) {
3864 return $this->container->run(
3865 'SessionCheckInfo',
3866 [ &$reason, $info, $request, $metadata, $data ]
3867 );
3868 }
3869
3871 public function onSessionMetadata( $backend, &$metadata, $requests ) {
3872 return $this->container->run(
3873 'SessionMetadata',
3874 [ $backend, &$metadata, $requests ]
3875 );
3876 }
3877
3879 public function onSetupAfterCache() {
3880 return $this->container->run(
3881 'SetupAfterCache',
3882 []
3883 );
3884 }
3885
3887 public function onShortPagesQuery( &$tables, &$conds, &$joinConds, &$options ) {
3888 return $this->container->run(
3889 'ShortPagesQuery',
3890 [ &$tables, &$conds, &$joinConds, &$options ]
3891 );
3892 }
3893
3895 public function onShowMissingArticle( $article ) {
3896 return $this->container->run(
3897 'ShowMissingArticle',
3898 [ $article ]
3899 );
3900 }
3901
3903 public function onShowSearchHit( $searchPage, $result, $terms, &$link,
3904 &$redirect, &$section, &$extract, &$score, &$size, &$date, &$related, &$html
3905 ) {
3906 return $this->container->run(
3907 'ShowSearchHit',
3908 [ $searchPage, $result, $terms, &$link, &$redirect, &$section,
3909 &$extract, &$score, &$size, &$date, &$related, &$html ]
3910 );
3911 }
3912
3914 public function onShowSearchHitTitle( &$title, &$titleSnippet, $result, $terms,
3915 $specialSearch, &$query, &$attributes
3916 ) {
3917 return $this->container->run(
3918 'ShowSearchHitTitle',
3919 [ &$title, &$titleSnippet, $result, $terms, $specialSearch,
3920 &$query, &$attributes ]
3921 );
3922 }
3923
3925 public function onSidebarBeforeOutput( $skin, &$sidebar ): void {
3926 $this->container->run(
3927 'SidebarBeforeOutput',
3928 [ $skin, &$sidebar ],
3929 [ 'abortable' => false ]
3930 );
3931 }
3932
3934 public function onSiteNoticeAfter( &$siteNotice, $skin ) {
3935 return $this->container->run(
3936 'SiteNoticeAfter',
3937 [ &$siteNotice, $skin ]
3938 );
3939 }
3940
3942 public function onSiteNoticeBefore( &$siteNotice, $skin ) {
3943 return $this->container->run(
3944 'SiteNoticeBefore',
3945 [ &$siteNotice, $skin ]
3946 );
3947 }
3948
3950 public function onSkinPageReadyConfig( RL\Context $context,
3951 array &$config
3952 ) {
3953 $this->container->run(
3954 'SkinPageReadyConfig',
3955 [ $context, &$config ],
3956 [ 'abortable' => true ]
3957 );
3958 }
3959
3961 public function onSkinAddFooterLinks( Skin $skin, string $key, array &$footerItems ) {
3962 $this->container->run(
3963 'SkinAddFooterLinks',
3964 [ $skin, $key, &$footerItems ]
3965 );
3966 }
3967
3969 public function onSkinAfterBottomScripts( $skin, &$text ) {
3970 return $this->container->run(
3971 'SkinAfterBottomScripts',
3972 [ $skin, &$text ]
3973 );
3974 }
3975
3977 public function onSkinAfterContent( &$data, $skin ) {
3978 return $this->container->run(
3979 'SkinAfterContent',
3980 [ &$data, $skin ]
3981 );
3982 }
3983
3985 public function onSkinAfterPortlet( $skin, $portlet, &$html ) {
3986 return $this->container->run(
3987 'SkinAfterPortlet',
3988 [ $skin, $portlet, &$html ]
3989 );
3990 }
3991
3993 public function onSkinBuildSidebar( $skin, &$bar ) {
3994 return $this->container->run(
3995 'SkinBuildSidebar',
3996 [ $skin, &$bar ]
3997 );
3998 }
3999
4001 public function onSkinCopyrightFooterMessage( $title, $type, &$msg ) {
4002 return $this->container->run(
4003 'SkinCopyrightFooterMessage',
4004 [ $title, $type, &$msg ]
4005 );
4006 }
4007
4009 public function onSkinEditSectionLinks( $skin, $title, $section, $tooltip,
4010 &$result, $lang
4011 ) {
4012 return $this->container->run(
4013 'SkinEditSectionLinks',
4014 [ $skin, $title, $section, $tooltip, &$result, $lang ]
4015 );
4016 }
4017
4019 public function onSkinPreloadExistence( &$titles, $skin ) {
4020 return $this->container->run(
4021 'SkinPreloadExistence',
4022 [ &$titles, $skin ]
4023 );
4024 }
4025
4027 public function onSkinSubPageSubtitle( &$subpages, $skin, $out ) {
4028 return $this->container->run(
4029 'SkinSubPageSubtitle',
4030 [ &$subpages, $skin, $out ]
4031 );
4032 }
4033
4035 public function onSkinTemplateGetLanguageLink( &$languageLink,
4036 $languageLinkTitle, $title, $outputPage
4037 ) {
4038 return $this->container->run(
4039 'SkinTemplateGetLanguageLink',
4040 [ &$languageLink, $languageLinkTitle, $title, $outputPage ]
4041 );
4042 }
4043
4045 public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
4046 $this->container->run(
4047 'SkinTemplateNavigation::Universal',
4048 [ $sktemplate, &$links ],
4049 [ 'abortable' => false ]
4050 );
4051 }
4052
4054 public function onSoftwareInfo( &$software ) {
4055 return $this->container->run(
4056 'SoftwareInfo',
4057 [ &$software ]
4058 );
4059 }
4060
4062 public function onSpecialBlockModifyFormFields( $sp, &$fields ) {
4063 return $this->container->run(
4064 'SpecialBlockModifyFormFields',
4065 [ $sp, &$fields ]
4066 );
4067 }
4068
4070 public function onSpecialContributionsBeforeMainOutput( $id, $user, $sp ) {
4071 return $this->container->run(
4072 'SpecialContributionsBeforeMainOutput',
4073 [ $id, $user, $sp ]
4074 );
4075 }
4076
4078 public function onSpecialContributions__formatRow__flags( $context, $row,
4079 &$flags
4080 ) {
4081 return $this->container->run(
4082 'SpecialContributions::formatRow::flags',
4083 [ $context, $row, &$flags ]
4084 );
4085 }
4086
4088 public function onSpecialContributions__getForm__filters( $sp, &$filters ) {
4089 return $this->container->run(
4090 'SpecialContributions::getForm::filters',
4091 [ $sp, &$filters ]
4092 );
4093 }
4094
4096 public function onSpecialCreateAccountBenefits( ?string &$html, array $info, array &$options ) {
4097 return $this->container->run(
4098 'SpecialCreateAccountBenefits',
4099 [ &$html, $info, &$options ]
4100 );
4101 }
4102
4104 public function onSpecialExportGetExtraPages( $inputPages, &$extraPages ) {
4105 return $this->container->run(
4106 'SpecialExportGetExtraPages',
4107 [ $inputPages, &$extraPages ]
4108 );
4109 }
4110
4112 public function onSpecialListusersDefaultQuery( $pager, &$query ) {
4113 return $this->container->run(
4114 'SpecialListusersDefaultQuery',
4115 [ $pager, &$query ]
4116 );
4117 }
4118
4120 public function onSpecialListusersFormatRow( &$item, $row ) {
4121 return $this->container->run(
4122 'SpecialListusersFormatRow',
4123 [ &$item, $row ]
4124 );
4125 }
4126
4128 public function onSpecialListusersHeader( $pager, &$out ) {
4129 return $this->container->run(
4130 'SpecialListusersHeader',
4131 [ $pager, &$out ]
4132 );
4133 }
4134
4136 public function onSpecialListusersHeaderForm( $pager, &$out ) {
4137 return $this->container->run(
4138 'SpecialListusersHeaderForm',
4139 [ $pager, &$out ]
4140 );
4141 }
4142
4144 public function onSpecialListusersQueryInfo( $pager, &$query ) {
4145 return $this->container->run(
4146 'SpecialListusersQueryInfo',
4147 [ $pager, &$query ]
4148 );
4149 }
4150
4152 public function onSpecialLogAddLogSearchRelations( $type, $request, &$qc ) {
4153 return $this->container->run(
4154 'SpecialLogAddLogSearchRelations',
4155 [ $type, $request, &$qc ]
4156 );
4157 }
4158
4161 array $params,
4162 string &$type
4163 ): void {
4164 $this->container->run(
4165 'SpecialLogResolveLogType',
4166 [ $params, &$type ],
4167 [ 'abortable' => false ]
4168 );
4169 }
4170
4173 IContextSource $context,
4174 array &$subpages
4175 ): void {
4176 $this->container->run(
4177 'SpecialLogGetSubpagesForPrefixSearch',
4178 [ $context, &$subpages ],
4179 [ 'abortable' => false ]
4180 );
4181 }
4182
4184 public function onSpecialMovepageAfterMove( $movePage, $oldTitle, $newTitle ) {
4185 return $this->container->run(
4186 'SpecialMovepageAfterMove',
4187 [ $movePage, $oldTitle, $newTitle ]
4188 );
4189 }
4190
4192 public function onSpecialMuteModifyFormFields( $target, $user, &$fields ) {
4193 return $this->container->run(
4194 'SpecialMuteModifyFormFields',
4195 [ $target, $user, &$fields ]
4196 );
4197 }
4198
4200 public function onSpecialNewpagesConditions( $special, $opts, &$conds,
4201 &$tables, &$fields, &$join_conds
4202 ) {
4203 return $this->container->run(
4204 'SpecialNewpagesConditions',
4205 [ $special, $opts, &$conds, &$tables, &$fields, &$join_conds ]
4206 );
4207 }
4208
4210 public function onSpecialNewPagesFilters( $special, &$filters ) {
4211 return $this->container->run(
4212 'SpecialNewPagesFilters',
4213 [ $special, &$filters ]
4214 );
4215 }
4216
4218 public function onSpecialPageAfterExecute( $special, $subPage ) {
4219 return $this->container->run(
4220 'SpecialPageAfterExecute',
4221 [ $special, $subPage ]
4222 );
4223 }
4224
4226 public function onSpecialPageBeforeExecute( $special, $subPage ) {
4227 return $this->container->run(
4228 'SpecialPageBeforeExecute',
4229 [ $special, $subPage ]
4230 );
4231 }
4232
4234 public function onSpecialPageBeforeFormDisplay( $name, $form ) {
4235 return $this->container->run(
4236 'SpecialPageBeforeFormDisplay',
4237 [ $name, $form ]
4238 );
4239 }
4240
4242 public function onSpecialPage_initList( &$list ) {
4243 return $this->container->run(
4244 'SpecialPage_initList',
4245 [ &$list ]
4246 );
4247 }
4248
4250 public function onSpecialPasswordResetOnSubmit( &$users, $data, &$error ) {
4251 return $this->container->run(
4252 'SpecialPasswordResetOnSubmit',
4253 [ &$users, $data, &$error ]
4254 );
4255 }
4256
4258 public function onSpecialPrefixIndexGetFormFilters( IContextSource $contextSource, array &$filters ) {
4259 $this->container->run(
4260 'SpecialPrefixIndexGetFormFilters',
4261 [ $contextSource, &$filters ],
4262 [ 'abortable' => false ]
4263 );
4264 }
4265
4267 public function onSpecialPrefixIndexQuery( array $fieldData, SelectQueryBuilder $queryBuilder ) {
4268 $this->container->run(
4269 'SpecialPrefixIndexQuery',
4270 [ $fieldData, $queryBuilder ],
4271 [ 'abortable' => false ]
4272 );
4273 }
4274
4276 public function onSpecialRandomGetRandomTitle( &$randstr, &$isRedir,
4277 &$namespaces, &$extra, &$title
4278 ) {
4279 return $this->container->run(
4280 'SpecialRandomGetRandomTitle',
4281 [ &$randstr, &$isRedir, &$namespaces, &$extra, &$title ]
4282 );
4283 }
4284
4286 public function onSpecialRecentChangesPanel( &$extraOpts, $opts ) {
4287 return $this->container->run(
4288 'SpecialRecentChangesPanel',
4289 [ &$extraOpts, $opts ]
4290 );
4291 }
4292
4294 public function onSpecialResetTokensTokens( &$tokens ) {
4295 return $this->container->run(
4296 'SpecialResetTokensTokens',
4297 [ &$tokens ]
4298 );
4299 }
4300
4302 public function onSpecialSearchCreateLink( $t, &$params ) {
4303 return $this->container->run(
4304 'SpecialSearchCreateLink',
4305 [ $t, &$params ]
4306 );
4307 }
4308
4310 public function onSpecialSearchGoResult( $term, $title, &$url ) {
4311 return $this->container->run(
4312 'SpecialSearchGoResult',
4313 [ $term, $title, &$url ]
4314 );
4315 }
4316
4318 public function onSpecialSearchNogomatch( &$title ) {
4319 return $this->container->run(
4320 'SpecialSearchNogomatch',
4321 [ &$title ]
4322 );
4323 }
4324
4326 public function onSpecialSearchPowerBox( &$showSections, $term, &$opts ) {
4327 return $this->container->run(
4328 'SpecialSearchPowerBox',
4329 [ &$showSections, $term, &$opts ]
4330 );
4331 }
4332
4334 public function onSpecialSearchProfileForm( $search, &$form, $profile, $term,
4335 $opts
4336 ) {
4337 return $this->container->run(
4338 'SpecialSearchProfileForm',
4339 [ $search, &$form, $profile, $term, $opts ]
4340 );
4341 }
4342
4344 public function onSpecialSearchProfiles( &$profiles ) {
4345 return $this->container->run(
4346 'SpecialSearchProfiles',
4347 [ &$profiles ]
4348 );
4349 }
4350
4352 public function onSpecialSearchResults( $term, &$titleMatches, &$textMatches ) {
4353 return $this->container->run(
4354 'SpecialSearchResults',
4355 [ $term, &$titleMatches, &$textMatches ]
4356 );
4357 }
4358
4360 public function onSpecialSearchResultsAppend( $specialSearch, $output, $term ) {
4361 return $this->container->run(
4362 'SpecialSearchResultsAppend',
4363 [ $specialSearch, $output, $term ]
4364 );
4365 }
4366
4368 public function onSpecialSearchResultsPrepend( $specialSearch, $output, $term ) {
4369 return $this->container->run(
4370 'SpecialSearchResultsPrepend',
4371 [ $specialSearch, $output, $term ]
4372 );
4373 }
4374
4376 public function onSpecialSearchSetupEngine( $search, $profile, $engine ) {
4377 return $this->container->run(
4378 'SpecialSearchSetupEngine',
4379 [ $search, $profile, $engine ]
4380 );
4381 }
4382
4384 public function onSpecialStatsAddExtra( &$extraStats, $context ) {
4385 return $this->container->run(
4386 'SpecialStatsAddExtra',
4387 [ &$extraStats, $context ]
4388 );
4389 }
4390
4393 $catTitle, &$html
4394 ) {
4395 return $this->container->run(
4396 'SpecialTrackingCategories::generateCatLink',
4397 [ $specialPage, $catTitle, &$html ]
4398 );
4399 }
4400
4402 public function onSpecialTrackingCategories__preprocess( $specialPage,
4403 $trackingCategories
4404 ) {
4405 return $this->container->run(
4406 'SpecialTrackingCategories::preprocess',
4407 [ $specialPage, $trackingCategories ]
4408 );
4409 }
4410
4412 public function onSpecialUploadComplete( $form ) {
4413 return $this->container->run(
4414 'SpecialUploadComplete',
4415 [ $form ]
4416 );
4417 }
4418
4420 public function onSpecialVersionVersionUrl( $version, &$versionUrl ) {
4421 return $this->container->run(
4422 'SpecialVersionVersionUrl',
4423 [ $version, &$versionUrl ]
4424 );
4425 }
4426
4428 public function onSpreadAnyEditBlock( $user, bool &$blockWasSpread ) {
4429 return $this->container->run(
4430 'SpreadAnyEditBlock',
4431 [ $user, &$blockWasSpread ]
4432 );
4433 }
4434
4436 public function onSpecialWhatLinksHereQuery( $table, $data, $queryBuilder ): void {
4437 $this->container->run(
4438 'SpecialWhatLinksHereQuery',
4439 [ $table, $data, $queryBuilder ],
4440 [ 'abortable' => false ]
4441 );
4442 }
4443
4446 Session $session,
4447 UserIdentity $user,
4448 string $returnTo,
4449 string $returnToQuery,
4450 string $returnToAnchor,
4451 &$redirectUrl
4452 ) {
4453 return $this->container->run(
4454 'TempUserCreatedRedirect',
4455 [ $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ]
4456 );
4457 }
4458
4460 public function onTestCanonicalRedirect( $request, $title, $output ) {
4461 return $this->container->run(
4462 'TestCanonicalRedirect',
4463 [ $request, $title, $output ]
4464 );
4465 }
4466
4468 public function onThumbnailBeforeProduceHTML( $thumbnail, &$attribs,
4469 &$linkAttribs
4470 ) {
4471 return $this->container->run(
4472 'ThumbnailBeforeProduceHTML',
4473 [ $thumbnail, &$attribs, &$linkAttribs ]
4474 );
4475 }
4476
4478 public function onTitleExists( $title, &$exists ) {
4479 return $this->container->run(
4480 'TitleExists',
4481 [ $title, &$exists ]
4482 );
4483 }
4484
4486 public function onTitleGetEditNotices( $title, $oldid, &$notices ) {
4487 return $this->container->run(
4488 'TitleGetEditNotices',
4489 [ $title, $oldid, &$notices ]
4490 );
4491 }
4492
4494 public function onTitleGetRestrictionTypes( $title, &$types ) {
4495 return $this->container->run(
4496 'TitleGetRestrictionTypes',
4497 [ $title, &$types ]
4498 );
4499 }
4500
4502 public function onTitleIsAlwaysKnown( $title, &$isKnown ) {
4503 return $this->container->run(
4504 'TitleIsAlwaysKnown',
4505 [ $title, &$isKnown ]
4506 );
4507 }
4508
4510 public function onTitleIsMovable( $title, &$result ) {
4511 return $this->container->run(
4512 'TitleIsMovable',
4513 [ $title, &$result ]
4514 );
4515 }
4516
4518 public function onTitleMove( $old, $nt, $user, $reason, &$status ) {
4519 return $this->container->run(
4520 'TitleMove',
4521 [ $old, $nt, $user, $reason, &$status ]
4522 );
4523 }
4524
4526 public function onTitleMoveStarting( $old, $nt, $user ) {
4527 return $this->container->run(
4528 'TitleMoveStarting',
4529 [ $old, $nt, $user ]
4530 );
4531 }
4532
4534 public function onTitleQuickPermissions( $title, $user, $action, &$errors,
4535 $doExpensiveQueries, $short
4536 ) {
4537 return $this->container->run(
4538 'TitleQuickPermissions',
4539 [ $title, $user, $action, &$errors, $doExpensiveQueries, $short ]
4540 );
4541 }
4542
4544 public function onTitleReadWhitelist( $title, $user, &$allowed ) {
4545 return $this->container->run(
4546 'TitleReadWhitelist',
4547 [ $title, $user, &$allowed ]
4548 );
4549 }
4550
4552 public function onTitleSquidURLs( $title, &$urls ) {
4553 return $this->container->run(
4554 'TitleSquidURLs',
4555 [ $title, &$urls ]
4556 );
4557 }
4558
4560 public function onUnblockUser( $block, $user, &$reason ) {
4561 return $this->container->run(
4562 'UnblockUser',
4563 [ $block, $user, &$reason ]
4564 );
4565 }
4566
4568 public function onUnblockUserComplete( $block, $user ) {
4569 return $this->container->run(
4570 'UnblockUserComplete',
4571 [ $block, $user ]
4572 );
4573 }
4574
4576 public function onUndeleteForm__showHistory( &$archive, $title ) {
4577 return $this->container->run(
4578 'UndeleteForm::showHistory',
4579 [ &$archive, $title ]
4580 );
4581 }
4582
4584 public function onUndeleteForm__showRevision( &$archive, $title ) {
4585 return $this->container->run(
4586 'UndeleteForm::showRevision',
4587 [ &$archive, $title ]
4588 );
4589 }
4590
4592 public function onUndeletePageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
4593 return $this->container->run(
4594 'UndeletePageToolLinks',
4595 [ $context, $linkRenderer, &$links ]
4596 );
4597 }
4598
4600 public function onUnitTestsAfterDatabaseSetup( $database, $prefix ) {
4601 return $this->container->run(
4602 'UnitTestsAfterDatabaseSetup',
4603 [ $database, $prefix ]
4604 );
4605 }
4606
4609 return $this->container->run(
4610 'UnitTestsBeforeDatabaseTeardown',
4611 []
4612 );
4613 }
4614
4616 public function onUnitTestsList( &$paths ) {
4617 return $this->container->run(
4618 'UnitTestsList',
4619 [ &$paths ]
4620 );
4621 }
4622
4624 public function onUnwatchArticle( $user, $page, &$status ) {
4625 return $this->container->run(
4626 'UnwatchArticle',
4627 [ $user, $page, &$status ]
4628 );
4629 }
4630
4632 public function onUnwatchArticleComplete( $user, $page ) {
4633 return $this->container->run(
4634 'UnwatchArticleComplete',
4635 [ $user, $page ]
4636 );
4637 }
4638
4640 public function onUploadComplete( $uploadBase ) {
4641 return $this->container->run(
4642 'UploadComplete',
4643 [ $uploadBase ]
4644 );
4645 }
4646
4648 public function onUploadCreateFromRequest( $type, &$className ) {
4649 return $this->container->run(
4650 'UploadCreateFromRequest',
4651 [ $type, &$className ]
4652 );
4653 }
4654
4656 public function onUploadFormInitDescriptor( &$descriptor ) {
4657 return $this->container->run(
4658 'UploadFormInitDescriptor',
4659 [ &$descriptor ]
4660 );
4661 }
4662
4664 public function onUploadFormSourceDescriptors( &$descriptor, &$radio,
4665 $selectedSourceType
4666 ) {
4667 return $this->container->run(
4668 'UploadFormSourceDescriptors',
4669 [ &$descriptor, &$radio, $selectedSourceType ]
4670 );
4671 }
4672
4674 public function onUploadForm_BeforeProcessing( $upload ) {
4675 return $this->container->run(
4676 'UploadForm:BeforeProcessing',
4677 [ $upload ]
4678 );
4679 }
4680
4682 public function onUploadForm_getInitialPageText( &$pageText, $msg, $config ) {
4683 return $this->container->run(
4684 'UploadForm:getInitialPageText',
4685 [ &$pageText, $msg, $config ]
4686 );
4687 }
4688
4690 public function onUploadForm_initial( $upload ) {
4691 return $this->container->run(
4692 'UploadForm:initial',
4693 [ $upload ]
4694 );
4695 }
4696
4698 public function onUploadStashFile( $upload, $user, $props, &$error ) {
4699 return $this->container->run(
4700 'UploadStashFile',
4701 [ $upload, $user, $props, &$error ]
4702 );
4703 }
4704
4706 public function onUploadVerifyFile( $upload, $mime, &$error ) {
4707 return $this->container->run(
4708 'UploadVerifyFile',
4709 [ $upload, $mime, &$error ]
4710 );
4711 }
4712
4714 public function onUploadVerifyUpload( $upload, $user, $props, $comment,
4715 $pageText, &$error
4716 ) {
4717 return $this->container->run(
4718 'UploadVerifyUpload',
4719 [ $upload, $user, $props, $comment, $pageText, &$error ]
4720 );
4721 }
4722
4724 public function onUserAddGroup( $user, &$group, &$expiry ) {
4725 return $this->container->run(
4726 'UserAddGroup',
4727 [ $user, &$group, &$expiry ]
4728 );
4729 }
4730
4732 public function onUserArrayFromResult( &$userArray, $res ) {
4733 return $this->container->run(
4734 'UserArrayFromResult',
4735 [ &$userArray, $res ]
4736 );
4737 }
4738
4740 public function onUserCan( $title, $user, $action, &$result ) {
4741 return $this->container->run(
4742 'userCan',
4743 [ $title, $user, $action, &$result ]
4744 );
4745 }
4746
4748 public function onUserCanChangeEmail( $user, $oldaddr, $newaddr, &$status ) {
4749 return $this->container->run(
4750 'UserCanChangeEmail',
4751 [ $user, $oldaddr, $newaddr, &$status ]
4752 );
4753 }
4754
4756 public function onUserCanSendEmail( $user, &$hookErr ) {
4757 return $this->container->run(
4758 'UserCanSendEmail',
4759 [ $user, &$hookErr ]
4760 );
4761 }
4762
4764 public function onUserClearNewTalkNotification( $userIdentity, $oldid ) {
4765 return $this->container->run(
4766 'UserClearNewTalkNotification',
4767 [ $userIdentity, $oldid ]
4768 );
4769 }
4770
4772 public function onUserEditCountUpdate( $infos ): void {
4773 $this->container->run(
4774 'UserEditCountUpdate',
4775 [ $infos ],
4776 [ 'abortable' => false ]
4777 );
4778 }
4779
4781 public function onUserEffectiveGroups( $user, &$groups ) {
4782 return $this->container->run(
4783 'UserEffectiveGroups',
4784 [ $user, &$groups ]
4785 );
4786 }
4787
4789 public function onUserGetAllRights( &$rights ) {
4790 return $this->container->run(
4791 'UserGetAllRights',
4792 [ &$rights ]
4793 );
4794 }
4795
4797 public function onUserGetDefaultOptions( &$defaultOptions ) {
4798 return $this->container->run(
4799 'UserGetDefaultOptions',
4800 [ &$defaultOptions ]
4801 );
4802 }
4803
4805 public function onConditionalDefaultOptionsAddCondition( &$extraConditions ): void {
4806 $this->container->run(
4807 'ConditionalDefaultOptionsAddCondition',
4808 [ &$extraConditions ],
4809 [ 'abortable' => false ]
4810 );
4811 }
4812
4814 public function onUserGetEmail( $user, &$email ) {
4815 return $this->container->run(
4816 'UserGetEmail',
4817 [ $user, &$email ]
4818 );
4819 }
4820
4822 public function onUserGetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4823 return $this->container->run(
4824 'UserGetEmailAuthenticationTimestamp',
4825 [ $user, &$timestamp ]
4826 );
4827 }
4828
4830 public function onUserGetLanguageObject( $user, &$code, $context ) {
4831 return $this->container->run(
4832 'UserGetLanguageObject',
4833 [ $user, &$code, $context ]
4834 );
4835 }
4836
4838 public function onUserPrivilegedGroups( $userIdentity, &$groups ) {
4839 return $this->container->run(
4840 'UserPrivilegedGroups',
4841 [ $userIdentity, &$groups ]
4842 );
4843 }
4844
4846 public function onUserGetReservedNames( &$reservedUsernames ) {
4847 return $this->container->run(
4848 'UserGetReservedNames',
4849 [ &$reservedUsernames ]
4850 );
4851 }
4852
4854 public function onUserGetRights( $user, &$rights ) {
4855 return $this->container->run(
4856 'UserGetRights',
4857 [ $user, &$rights ]
4858 );
4859 }
4860
4862 public function onUserGetRightsRemove( $user, &$rights ) {
4863 return $this->container->run(
4864 'UserGetRightsRemove',
4865 [ $user, &$rights ]
4866 );
4867 }
4868
4870 public function onUserGroupsChanged( $user, $added, $removed, $performer,
4871 $reason, $oldUGMs, $newUGMs
4872 ) {
4873 return $this->container->run(
4874 'UserGroupsChanged',
4875 [ $user, $added, $removed, $performer, $reason, $oldUGMs,
4876 $newUGMs ]
4877 );
4878 }
4879
4881 public function onUserIsBlockedFrom( $user, $title, &$blocked, &$allowUsertalk ) {
4882 return $this->container->run(
4883 'UserIsBlockedFrom',
4884 [ $user, $title, &$blocked, &$allowUsertalk ]
4885 );
4886 }
4887
4889 public function onUserIsBot( $user, &$isBot ) {
4890 return $this->container->run(
4891 'UserIsBot',
4892 [ $user, &$isBot ]
4893 );
4894 }
4895
4897 public function onUserIsEveryoneAllowed( $right ) {
4898 return $this->container->run(
4899 'UserIsEveryoneAllowed',
4900 [ $right ]
4901 );
4902 }
4903
4905 public function onUserIsLocked( $user, &$locked ) {
4906 return $this->container->run(
4907 'UserIsLocked',
4908 [ $user, &$locked ]
4909 );
4910 }
4911
4914 UserIdentity $targetUser, IContextSource $context, &$html, &$prefix, &$postfix
4915 ) {
4916 return $this->container->run(
4917 'UserLinkRendererUserLinkPostRender',
4918 [ $targetUser, $context, &$html, &$prefix, &$postfix ]
4919 );
4920 }
4921
4923 public function onUserLoadAfterLoadFromSession( $user ) {
4924 return $this->container->run(
4925 'UserLoadAfterLoadFromSession',
4926 [ $user ]
4927 );
4928 }
4929
4931 public function onUserLoadDefaults( $user, $name ) {
4932 return $this->container->run(
4933 'UserLoadDefaults',
4934 [ $user, $name ]
4935 );
4936 }
4937
4939 public function onLoadUserOptions( UserIdentity $user, array &$options ): void {
4940 $this->container->run(
4941 'LoadUserOptions',
4942 [ $user, &$options ],
4943 [ 'abortable' => false ]
4944 );
4945 }
4946
4948 public function onUserLoggedIn( $user ) {
4949 return $this->container->run(
4950 'UserLoggedIn',
4951 [ $user ]
4952 );
4953 }
4954
4956 public function onUserLoginComplete( $user, &$inject_html, $direct ) {
4957 return $this->container->run(
4958 'UserLoginComplete',
4959 [ $user, &$inject_html, $direct ]
4960 );
4961 }
4962
4964 public function onUserLogout( $user ) {
4965 return $this->container->run(
4966 'UserLogout',
4967 [ $user ]
4968 );
4969 }
4970
4972 public function onUserLogoutComplete( $user, &$inject_html, $oldName ) {
4973 return $this->container->run(
4974 'UserLogoutComplete',
4975 [ $user, &$inject_html, $oldName ]
4976 );
4977 }
4978
4980 public function onUserMailerChangeReturnPath( $to, &$returnPath ) {
4981 return $this->container->run(
4982 'UserMailerChangeReturnPath',
4983 [ $to, &$returnPath ]
4984 );
4985 }
4986
4988 public function onUserMailerSplitTo( &$to ) {
4989 return $this->container->run(
4990 'UserMailerSplitTo',
4991 [ &$to ]
4992 );
4993 }
4994
4996 public function onUserMailerTransformContent( $to, $from, &$body, &$error ) {
4997 return $this->container->run(
4998 'UserMailerTransformContent',
4999 [ $to, $from, &$body, &$error ]
5000 );
5001 }
5002
5004 public function onUserMailerTransformMessage( $to, $from, &$subject, &$headers,
5005 &$body, &$error
5006 ) {
5007 return $this->container->run(
5008 'UserMailerTransformMessage',
5009 [ $to, $from, &$subject, &$headers, &$body, &$error ]
5010 );
5011 }
5012
5014 public function onUserRemoveGroup( $user, &$group ) {
5015 return $this->container->run(
5016 'UserRemoveGroup',
5017 [ $user, &$group ]
5018 );
5019 }
5020
5022 public function onUserRequirementsCondition( string|int $type, array $args, UserIdentity $user,
5023 bool $isPerformingRequest, ?bool &$result
5024 ): void {
5025 $this->container->run(
5026 'UserRequirementsCondition',
5027 [ $type, $args, $user, $isPerformingRequest, &$result ],
5028 [ 'abortable' => false ]
5029 );
5030 }
5031
5033 public function onUserRequirementsConditionDisplay( string|int $type, array $args, IContextSource $context,
5034 ?MessageSpecifier &$messageSpec
5035 ): void {
5036 $this->container->run(
5037 'UserRequirementsConditionDisplay',
5038 [ $type, $args, $context, &$messageSpec ],
5039 [ 'abortable' => false ]
5040 );
5041 }
5042
5044 public function onSaveUserOptions( UserIdentity $user, array &$modifiedOptions, array $originalOptions ) {
5045 return $this->container->run(
5046 'SaveUserOptions',
5047 [ $user, &$modifiedOptions, $originalOptions ]
5048 );
5049 }
5050
5052 public function onLocalUserOptionsStoreSave( UserIdentity $user, array $oldOptions, array $newOptions ): void {
5053 $this->container->run(
5054 'LocalUserOptionsStoreSave',
5055 [ $user, $oldOptions, $newOptions ],
5056 [ 'abortable' => false ]
5057 );
5058 }
5059
5061 public function onUserSaveSettings( $user ) {
5062 return $this->container->run(
5063 'UserSaveSettings',
5064 [ $user ]
5065 );
5066 }
5067
5069 public function onUserSendConfirmationMail( $user, &$mail, $info ) {
5070 return $this->container->run(
5071 'UserSendConfirmationMail',
5072 [ $user, &$mail, $info ]
5073 );
5074 }
5075
5077 public function onUserSetEmail( $user, &$email ) {
5078 return $this->container->run(
5079 'UserSetEmail',
5080 [ $user, &$email ]
5081 );
5082 }
5083
5085 public function onUserSetEmailAuthenticationTimestamp( $user, &$timestamp ) {
5086 return $this->container->run(
5087 'UserSetEmailAuthenticationTimestamp',
5088 [ $user, &$timestamp ]
5089 );
5090 }
5091
5093 public function onUsersPagerDoBatchLookups( $dbr, $userIds, &$cache, &$groups ) {
5094 return $this->container->run(
5095 'UsersPagerDoBatchLookups',
5096 [ $dbr, $userIds, &$cache, &$groups ]
5097 );
5098 }
5099
5101 public function onUserToolLinksEdit( $userId, $userText, &$items ) {
5102 return $this->container->run(
5103 'UserToolLinksEdit',
5104 [ $userId, $userText, &$items ]
5105 );
5106 }
5107
5109 public function onUser__mailPasswordInternal( $user, $ip, $u ) {
5110 return $this->container->run(
5111 'User::mailPasswordInternal',
5112 [ $user, $ip, $u ]
5113 );
5114 }
5115
5117 public function onValidateExtendedMetadataCache( $timestamp, $file ) {
5118 return $this->container->run(
5119 'ValidateExtendedMetadataCache',
5120 [ $timestamp, $file ]
5121 );
5122 }
5123
5125 public function onWantedPages__getQueryInfo( $wantedPages, &$query ) {
5126 return $this->container->run(
5127 'WantedPages::getQueryInfo',
5128 [ $wantedPages, &$query ]
5129 );
5130 }
5131
5133 public function onWatchArticle( $user, $page, &$status, $expiry ) {
5134 return $this->container->run(
5135 'WatchArticle',
5136 [ $user, $page, &$status, $expiry ]
5137 );
5138 }
5139
5141 public function onWatchArticleComplete( $user, $page ) {
5142 return $this->container->run(
5143 'WatchArticleComplete',
5144 [ $user, $page ]
5145 );
5146 }
5147
5149 public function onWatchedItemQueryServiceExtensions( &$extensions,
5150 $watchedItemQueryService
5151 ) {
5152 return $this->container->run(
5153 'WatchedItemQueryServiceExtensions',
5154 [ &$extensions, $watchedItemQueryService ]
5155 );
5156 }
5157
5159 public function onWatchlistEditorBeforeFormRender( &$watchlistInfo ) {
5160 return $this->container->run(
5161 'WatchlistEditorBeforeFormRender',
5162 [ &$watchlistInfo ]
5163 );
5164 }
5165
5167 public function onWatchlistEditorBuildRemoveLine( &$tools, $title, $redirect,
5168 $skin, &$link
5169 ) {
5170 return $this->container->run(
5171 'WatchlistEditorBuildRemoveLine',
5172 [ &$tools, $title, $redirect, $skin, &$link ]
5173 );
5174 }
5175
5177 public function onWebRequestPathInfoRouter( $router ) {
5178 return $this->container->run(
5179 'WebRequestPathInfoRouter',
5180 [ $router ]
5181 );
5182 }
5183
5185 public function onWebResponseSetCookie( &$name, &$value, &$expire, &$options ) {
5186 return $this->container->run(
5187 'WebResponseSetCookie',
5188 [ &$name, &$value, &$expire, &$options ]
5189 );
5190 }
5191
5193 public function onWfShellWikiCmd( &$script, &$parameters, &$options ) {
5194 return $this->container->run(
5195 'wfShellWikiCmd',
5196 [ &$script, &$parameters, &$options ]
5197 );
5198 }
5199
5201 public function onWgQueryPages( &$qp ) {
5202 return $this->container->run(
5203 'wgQueryPages',
5204 [ &$qp ]
5205 );
5206 }
5207
5209 public function onWhatLinksHereProps( $row, $title, $target, &$props ) {
5210 return $this->container->run(
5211 'WhatLinksHereProps',
5212 [ $row, $title, $target, &$props ]
5213 );
5214 }
5215
5217 public function onWikiExporter__dumpStableQuery( &$tables, &$opts, &$join ) {
5218 return $this->container->run(
5219 'WikiExporter::dumpStableQuery',
5220 [ &$tables, &$opts, &$join ]
5221 );
5222 }
5223
5225 public function onWikiPageDeletionUpdates( $page, $content, &$updates ) {
5226 return $this->container->run(
5227 'WikiPageDeletionUpdates',
5228 [ $page, $content, &$updates ]
5229 );
5230 }
5231
5233 public function onWikiPageFactory( $title, &$page ) {
5234 return $this->container->run(
5235 'WikiPageFactory',
5236 [ $title, &$page ]
5237 );
5238 }
5239
5241 public function onXmlDumpWriterOpenPage( $obj, &$out, $row, $title ) {
5242 return $this->container->run(
5243 'XmlDumpWriterOpenPage',
5244 [ $obj, &$out, $row, $title ]
5245 );
5246 }
5247
5249 public function onXmlDumpWriterWriteRevision( $obj, &$out, $row, $text, $rev ) {
5250 return $this->container->run(
5251 'XmlDumpWriterWriteRevision',
5252 [ $obj, &$out, $row, $text, $rev ]
5253 );
5254 }
5255}
AuthManager is the authentication system in MediaWiki and serves entry point for authentication.
This is a value object to hold authentication response data.
Base class for content handling.
JSON text content that can be viewed and edit directly by users.
Implements some public methods and some protected utility functions which are required by multiple ch...
Definition File.php:80
This class provides an implementation of the core hook interfaces, forwarding hook calls to HookConta...
onLanguage__getMessagesFileName( $code, &$file)
Use this hook to change the path of a localisation file.1.35bool|void True or no return value to cont...
onArticleProtectComplete( $wikiPage, $user, $protect, $reason)
This hook is called after an article is protected.1.35bool|void True or no return value to continue o...
onLanguageLinks( $title, &$links, &$linkFlags)
Use this hook to manipulate a page's language links.This hook is called in various places to allow ex...
onUserSetEmail( $user, &$email)
This hook is called when changing user email address.1.35bool|void True or no return value to continu...
onPreferencesGetLegend( $form, $key, &$legend)
Use the hook to override the text used for the <legend> of a preferences section.1....
onMarkPatrolled( $rcid, $user, $wcOnlySysopsCanPatrol, $auto, &$tags)
This hook is called before an edit is marked patrolled.1.35bool|void True or no return value to conti...
onSkinSubPageSubtitle(&$subpages, $skin, $out)
This hook is called at the beginning of Skin::subPageSubtitle().1.35bool|void True or no return value...
onReadPrivateUserRequirementsCondition(UserIdentity $performer, UserIdentity $target, array $conditions)
This hook is called when the value of private user requirement conditions is revealed to another user...
onImportSources(&$importSources)
This hook is called when reading from the $wgImportSources configuration variable....
onDifferenceEngineRenderRevisionShowFinalPatrolLink()
Use this hook to not show the final "mark as patrolled" link on the bottom of a page....
onOutputPageParserOutput( $outputPage, $parserOutput)
This hook is called after adding a parserOutput to $wgOut.1.35void This hook must not abort,...
onAbortAutoblock( $autoblockip, $block)
Use this hook to cancel an autoblock.1.35bool|void True or no return value to continue,...
onUnitTestsList(&$paths)
This hook is called when building a list of paths containing PHPUnit tests.Since 1....
onAfterBuildFeedLinks(&$feedLinks)
This hook is called in OutputPage.php after all feed links (atom, rss,...) are created....
onAlternateUserMailer( $headers, $to, $from, $subject, $body)
This hook is called before mail is sent so that mail could be logged (or something else) instead of u...
onMovePageIsValidMove( $oldTitle, $newTitle, $status)
Use this hook to specify whether a page can be moved for technical reasons.1.35bool|void True or no r...
onTitleReadWhitelist( $title, $user, &$allowed)
This hook is called at the end of read permissions checks, just before adding the default error messa...
onProtectionFormAddFormFields( $article, &$hookFormOptions)
This hook is called after all protection type form fields are added.1.36bool|void True or no return v...
onArticleRevisionViewCustom( $revision, $title, $oldid, $output)
Use this hook for custom rendering of an article's content.Note that it is preferable to implement pr...
onEnhancedChangesList__getLogText( $changesList, &$links, $block)
Use this hook to alter, remove, or add to the links of a group of changes in EnhancedChangesList....
onGetSlotDiffRenderer( $contentHandler, &$slotDiffRenderer, $context)
Use this hook to replace or wrap the standard SlotDiffRenderer for some content type....
onSkinAddFooterLinks(Skin $skin, string $key, array &$footerItems)
This hook is called when generating the code used to display the footer.1.35bool|void True or no retu...
onEditPageTosSummary( $title, &$msg)
Use this hook for site and per-namespace customizations of terms of service summary link that might e...
onUserSendConfirmationMail( $user, &$mail, $info)
This hook is called just before a confirmation email is sent to a user.Hook handlers can modify the e...
onTestCanonicalRedirect( $request, $title, $output)
This hook is called when about to force a redirect to a canonical URL for a title when we have no oth...
onAuthManagerLoginAuthenticateAudit( $response, $user, $username, $extraData)
This hook is called when a login attempt either succeeds or fails for a reason other than misconfigur...
onSessionCheckInfo(&$reason, $info, $request, $metadata, $data)
Use this hook to validate a MediaWiki\Session\SessionInfo as it's being loaded from storage....
onDifferenceEngineShowDiffPageMaybeShowMissingRevision( $differenceEngine)
This hook is called in DifferenceEngine::showDiffPage() when revision data cannot be loaded....
onSpecialExportGetExtraPages( $inputPages, &$extraPages)
onParserMakeImageParams( $title, $file, &$params, $parser)
This hook is called before the parser generates an image link, use this to modify the parameters of t...
onSkinAfterBottomScripts( $skin, &$text)
This hook is called in OutputPage::getBottomScripts() and allows to add extra html at the end of bott...
onSpecialContributions__formatRow__flags( $context, $row, &$flags)
This hook is called before rendering a Special:Contributions row.1.35bool|void True or no return valu...
onLanguageSelector( $out, $cssClassName)
Use this hook to change the language selector available on a page.1.35bool|void True or no return val...
onImportHandleRevisionXMLTag( $reader, $pageInfo, $revisionInfo)
This hook is called when parsing an XML tag in a page revision.1.35bool|void True or no return value ...
onXmlDumpWriterWriteRevision( $obj, &$out, $row, $text, $rev)
This hook is called at the end of a revision in an XML dump, to add extra metadata....
onAbortDiffCache( $diffEngine)
Use this hook to cancel the caching of a diff.1.35bool|void True or no return value to continue or fa...
onAfterFinalPageOutput( $output)
This hook is called nearly at the end of OutputPage::output() but before OutputPage::sendCacheControl...
onUnwatchArticle( $user, $page, &$status)
This hook is called before a watch is removed from an article.1.35bool|void True or no return value t...
onDifferenceEngineViewHeader( $differenceEngine)
This hook is called before diff display.1.35bool|void True or no return value to continue or false to...
onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex)
Use this hook to modify the edit buttons below the textarea in the edit form.1.35bool|void True or no...
onLogEventsListShowLogExtract(&$s, $types, $page, $user, $param)
This hook is called before the string is added to OutputPage.1.35bool|void True or no return value to...
onSpecialContributions__getForm__filters( $sp, &$filters)
This hook is called with a list of filters to render on Special:Contributions.1.35bool|void True or n...
onPasswordPoliciesForUser( $user, &$effectivePolicy)
Use this hook to alter the effective password policy for a user.1.35bool|void True or no return value...
onImportHandleLogItemXMLTag( $reader, $logInfo)
This hook is called when parsing an XML tag in a log item.1.35bool|void True or no return value to co...
onEditFormInitialText( $editPage)
Use this hook to modify the edit form when editing existing pages.1.35bool|void True or no return val...
onGetLogTypesOnUser(&$types)
Use this hook to add log types where the target is a user page.1.35bool|void True or no return value ...
onChangeTagAfterDelete( $tag, &$status)
This hook is called after a change tag has been deleted (that is, removed from all revisions and log ...
onContentHandlerForModelID( $modelName, &$handler)
This hook is called when a ContentHandler is requested for a given content model name,...
onDiffTools( $newRevRecord, &$links, $oldRevRecord, $userIdentity)
Use this hook to override or extend the revision tools available from the diff view,...
onSpecialContributionsBeforeMainOutput( $id, $user, $sp)
This hook is called before the form on Special:Contributions.1.35bool|void True or no return value to...
onRevisionUndeleted( $revisionRecord, $oldPageID)
After an article revision is restored.1.35bool|void True or no return value to continue or false to a...
onImportHandlePageXMLTag( $reader, &$pageInfo)
This hook is called when parsing an XML tag in a page.1.35bool|void True or no return value to contin...
onParserClearState( $parser)
This hook is called at the end of Parser::clearState().1.35bool|void True or no return value to conti...
onSpecialPasswordResetOnSubmit(&$users, $data, &$error)
This hook is called when executing a form submission on Special:PasswordReset.The data submitted by t...
onParserFirstCallInit( $parser)
This hook is called when the parser initialises for the first time.1.35bool|void True or no return va...
onProtectionForm__showLogExtract( $article, $out)
This hook is called after the protection log extract is shown.1.35bool|void True or no return value t...
onBeforeWelcomeCreation(&$welcome_creation_msg, &$injected_html)
This hook is called before the welcomecreation message is displayed to a newly created user....
onHtmlCacheUpdaterVaryUrls( $urls, &$append)
This hook is used to add variants of URLs to purge from HTTP caches.Extensions that provide site-wide...
onPageDeletionDataUpdates( $title, $revision, &$updates)
This hook is called when constructing a list of DeferrableUpdate to be executed when a page is delete...
onContribsPager__getQueryInfo( $pager, &$queryInfo)
This hook is called before the contributions query is about to run.1.35bool|void True or no return va...
onEditPage__showReadOnlyForm_initial( $editor, $out)
This hook is similar to EditPage::showEditForm:initial but for the read-only 'view source' variant of...
onContentSecurityPolicyDirectives(&$directives, $policyConfig, $mode)
If ContentSecurityPolicyDefaultSource and ContentSecurityPolicyScriptSource do not meet your needs,...
onArticleEditUpdateNewTalk( $wikiPage, $recipient)
This hook is called before updating user_newtalk when a user talk page was changed....
onUndeleteForm__showHistory(&$archive, $title)
This hook is called in UndeleteForm::showHistory, after creating the PageArchive object....
onIsUploadAllowedFromUrl( $url, &$allowed)
Use this hook to override the result of UploadFromUrl::isAllowedUrl().1.35bool|void True or no return...
onSearchResultProvideDescription(array $pageIdentities, &$descriptions)
This hook is called when generating search results in order to fill the 'description' field in an ext...
onUser__mailPasswordInternal( $user, $ip, $u)
This hook is called before creation and mailing of a user's new temporary password....
onWhatLinksHereProps( $row, $title, $target, &$props)
Use this hook to add annotations to Special:WhatLinksHere.1.35bool|void True or no return value to co...
onGetAutoPromoteGroups( $user, &$promote)
This hook is called when determining which autopromote groups a user is entitled to be in....
onGetMagicVariableIDs(&$variableIDs)
Use this hook to modify the list of magic variables.Magic variables are localized with the magic word...
onSpecialPrefixIndexGetFormFilters(IContextSource $contextSource, array &$filters)
This hook is called with a list of filters to render on Special:PrefixIndex.1.42void Un-abortable hoo...
onUserGetReservedNames(&$reservedUsernames)
Use this hook to modify $wgReservedUsernames at run time.1.35bool|void True or no return value to con...
onSkinTemplateNavigation__Universal( $sktemplate, &$links)
This hook is called on both content and special pages after variants have been added....
onEditPageBeforeEditToolbar(&$toolbar)
Use this hook to add an edit toolbar above the textarea in the edit form.1.35bool|void True or no ret...
onPreferencesGetLayout(&$useMobileLayout, $skinName, $skinProperties=[])
Use the hook to check if the preferences will have a mobile or desktop layout.1.40 bool|void True or ...
onContributionsToolLinks( $id, Title $title, array &$tools, SpecialPage $specialPage)
Use this hook to change the tool links above Special:Contributions.1.35bool|void True or no return va...
onTitleMove( $old, $nt, $user, $reason, &$status)
onSpecialNewpagesConditions( $special, $opts, &$conds, &$tables, &$fields, &$join_conds)
This hook is called when building the SQL query for Special:NewPages.1.35bool|void True or no return ...
onImgAuthModifyHeaders( $title, &$headers)
This hook is called just before a file is streamed to a user via img_auth.php, allowing headers to be...
onRenameUserSQL(RenameuserSQL $renameUserSql)
Called in the constructer of RenameuserSQL (which performs the actual renaming of users).
onImageBeforeProduceHTML( $linker, &$title, &$file, &$frameParams, &$handlerParams, &$time, &$res, $parser, &$query, &$widthOption)
This hook is called before producing the HTML created by a wiki image insertion.You can skip the defa...
onInfoAction( $context, &$pageInfo)
This hook is called when building information to display on the action=info page.1....
onUserEffectiveGroups( $user, &$groups)
This hook is called in UserGroupManager::getUserEffectiveGroups().1.35bool|void True or no return val...
onPageUndelete(ProperPageIdentity $page, Authority $performer, string $reason, bool $unsuppress, array $timestamps, array $fileVersions, StatusValue $status)
This hook is called before (part of) a page is undeleted.1.37bool|void True or no return value to con...
onSearchGetNearMatch( $term, &$title)
Use this hook to perform exact-title-matches in "go" searches if nothing was found....
onMultiContentSave( $renderedRevision, $user, $summary, $flags, $status)
This hook is called before an article is saved.1.35bool|void True or no return value to continue or f...
onRecentChange_save( $recentChange)
This hook is called at the end of RecentChange::save().1.35bool|void True or no return value to conti...
onSearchIndexFields(&$fields, $engine)
Use this hook to add fields to search index mapping.1.35bool|void True or no return value to continue...
onOtherBlockLogLink(&$otherBlockLink, $ip)
Use this hook to add list items to a list of "other blocks" when viewing Special:BlockList....
onSpecialSearchCreateLink( $t, &$params)
This hook is called when making the message to create a page or go to the existing page....
onWatchlistEditorBuildRemoveLine(&$tools, $title, $redirect, $skin, &$link)
This hook is called when building remove lines in Special:Watchlist/edit.1.35bool|void True or no ret...
onSpecialLogResolveLogType(array $params, string &$type)
Hook for intercepting and changing the requested log type in Special:Log, for example,...
__construct(private readonly HookContainer $container,)
onLinkerMakeExternalLink(&$url, &$text, &$link, &$attribs, $linkType)
onIsValidEmailAddr( $addr, &$result)
Use this hook to override the result of Sanitizer::validateEmail(), for instance to return false if t...
onWatchArticle( $user, $page, &$status, $expiry)
This hook is called before a watch is added to an article.1.35bool|void True or no return value to co...
onInternalParseBeforeLinks( $parser, &$text, $stripState)
This hook is called during Parser's internalParse method before links but after nowiki/noinclude/incl...
onSpecialTrackingCategories__preprocess( $specialPage, $trackingCategories)
This hook is called after LinkBatch on Special:TrackingCategories.1.35bool|void True or no return val...
onSpecialCreateAccountBenefits(?string &$html, array $info, array &$options)
Replace the default signup page content about the benefits of registering an account ("Wikipedia is m...
onManualLogEntryBeforePublish( $logEntry)
Use this hook to access or modify log entry just before it is published.1.35void This hook must not a...
onDifferenceEngineNewHeader( $differenceEngine, &$newHeader, $formattedRevisionTools, $nextlink, $rollback, $newminor, $diffOnly, $rdel, $unhide)
Use this hook to change the $newHeader variable, which contains information about the new revision,...
onSpecialSearchProfileForm( $search, &$form, $profile, $term, $opts)
Use this hook to modify search profile forms.1.35bool|void True or no return value to continue or fal...
onSearchGetNearMatchBefore( $allSearchTerms, &$titleResult)
Use this hook to perform exact-title-matches in "go" searches before the normal operations....
onHtmlCacheUpdaterAppendUrls( $title, $mode, &$append)
This hook is used to declare extra URLs to purge from HTTP caches.Use $mode to decide whether to gath...
onParserFetchTemplateData(array $titles, array &$tplData)
This hook allows Parsoid to fetch additional serialization information about a Template,...
onWebResponseSetCookie(&$name, &$value, &$expire, &$options)
This hook is called when setting a cookie in WebResponse::setcookie().1.35bool|void True or no return...
onHistoryTools( $revRecord, &$links, $prevRevRecord, $userIdentity)
Use this hook to override or extend the revision tools available from the page history view,...
onBeforeParserFetchFileAndTitle( $parser, $nt, &$options, &$descQuery)
This hook is called before an image is rendered by Parser.1.35bool|void True or no return value to co...
onSearchResultProvideThumbnail(array $pageIdentities, &$thumbnails, ?int $size=null)
This hook is called when generating search results in order to fill the 'thumbnail' field in an exten...
onDifferenceEngineMarkPatrolledRCID(&$rcid, $differenceEngine, $change, $user)
Use this hook to possibly change the rcid parameter.For example the rcid might be set to zero due to ...
onParserCacheSaveComplete( $parserCache, $parserOutput, $title, $popts, $revId)
This hook is called after a ParserOutput has been committed to the parser cache.1....
onMovePageCheckPermissions( $oldTitle, $newTitle, $user, $reason, $status)
Use this hook to specify whether the user is allowed to move the page.1.35bool|void True or no return...
onWatchlistEditorBeforeFormRender(&$watchlistInfo)
This hook is called before building the Special:EditWatchlist form.It is used to manipulate the list ...
onUserGetAllRights(&$rights)
This hook is called after calculating a list of all available rights.1.35bool|void True or no return ...
onSiteNoticeBefore(&$siteNotice, $skin)
This hook is called before the sitenotice/anonnotice is composed.1.35bool|void True or no return valu...
onImportHandleToplevelXMLTag( $reader)
This hook is called when parsing a top level XML tag.1.35bool|void True or no return value to continu...
onAlternateEditPreview( $editPage, &$content, &$previewHTML, &$parserOutput)
This hook is called before generating the preview of the page when editing ( EditPage::getPreviewText...
onArticleDelete( $wikiPage, $user, &$reason, &$error, &$status, $suppress)
onUserLogout( $user)
This hook is called before a user logs out.1.35bool|void True or no return value to continue or false...
onRejectParserCacheValue( $parserOutput, $wikiPage, $parserOptions)
Use this hook to reject an otherwise usable cached value from the Parser cache.NOTE: CARELESS USE OF ...
onGetSessionJwtData(?UserIdentity $user, array &$jwtData)
Called when a JWT session token is created, can modify the information stored within....
onIsFileCacheable( $article)
Use this hook to override the result of Article::isFileCacheable().1.35bool|void True or no return va...
onPingLimiter( $user, $action, &$result, $incrBy)
Use this hook to override the results of User::pingLimiter().1.35bool|void True or no return value to...
onMimeMagicInit( $mimeMagic)
This hook is called before processing the list mapping MIME types to media types and the list mapping...
onSpecialRecentChangesPanel(&$extraOpts, $opts)
This hook is called when building form options in SpecialRecentChanges.1.35bool|void True or no retur...
onPageDelete(ProperPageIdentity $page, Authority $deleter, string $reason, StatusValue $status, bool $suppress)
This hook is called before a page is deleted.1.37bool|void True or no return value to continue; false...
onParserPreSaveTransformComplete( $parser, &$text)
This hook is called from Parser::preSaveTransform() after processing is complete, giving the extensio...
onImportHandleContentXMLTag( $reader, $contentInfo)
This hook is called when parsing a content XML tag.1.36bool|void True or no return value to continue,...
onTitleQuickPermissions( $title, $user, $action, &$errors, $doExpensiveQueries, $short)
This hook is called from Title::checkQuickPermissions to add to or override the quick permissions che...
onDifferenceEngineShowEmptyOldContent( $differenceEngine)
Use this hook to change the diff table body (without header) in cases when there is no old revision o...
onBlockIpComplete( $block, $user, $priorBlock)
This hook is called after an IP address or user is blocked.1.35bool|void True or no return value to c...
onProtectionForm__buildForm( $article, &$output)
This hook is called after all protection type fieldsets are made in the form.1.35bool|void True or no...
onTextSlotDiffRendererTablePrefix(\TextSlotDiffRenderer $textSlotDiffRenderer, IContextSource $context, array &$parts)
onUsersPagerDoBatchLookups( $dbr, $userIds, &$cache, &$groups)
This hook is called in UsersPager::doBatchLookups()It is used to give extensions providing user group...
onPageSaveComplete( $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult)
This hook is called after an article has been updated.1.35bool|void True or no return value to contin...
onPageUndeleteComplete(ProperPageIdentity $page, Authority $restorer, string $reason, RevisionRecord $restoredRev, ManualLogEntry $logEntry, int $restoredRevisionCount, bool $created, array $restoredPageIds)
This hook is called after a page is undeleted.1.40void This hook must not abort, it must return no va...
onGetLocalURL__Article( $title, &$url)
Use this hook to modify local URLs specifically pointing to article paths without any fancy queries o...
onShortPagesQuery(&$tables, &$conds, &$joinConds, &$options)
Use this hook to modify the query used by Special:ShortPages.1.35bool|void True or no return value to...
onFileUndeleteComplete( $title, $fileVersions, $user, $reason)
This hook is called when a file is undeleted.1.35bool|void True or no return value to continue or fal...
onWatchArticleComplete( $user, $page)
This hook is called after a watch is added to an article.1.35bool|void True or no return value to con...
onOtherAutoblockLogLink(&$otherBlockLink)
Use this hook to add list items to a list of "other autoblocks" which appears at the end of Special:A...
onEditFilter( $editor, $text, $section, &$error, $summary)
Use this hook to perform checks on an edit.1.35bool|void True or no return value without altering $er...
onEditPage__showStandardInputs_options( $editor, $out, &$tabindex)
Use this hook to inject form fields into the editOptions area.1.35bool|void Return value is ignored; ...
onBeforeParserFetchTemplateRevisionRecord(?LinkTarget $contextTitle, LinkTarget $title, bool &$skip, ?RevisionRecord &$revRecord)
This hook is called before a template is fetched by Parser.It allows redirection of the title and/or ...
onGetCanonicalURL( $title, &$url, $query)
Use this hook to modify fully-qualified URLs used for IRC and email notifications....
onArticle__MissingArticleConditions(&$conds, $logTypes)
This hook is called before fetching deletion and move log entries to display a message of a non-exist...
onMessagePostProcessHtml(&$value, $format, $key)
This hook is called after a message is formatted as HTML.Use this hook if you wish to post process th...
onSidebarBeforeOutput( $skin, &$sidebar)
Use this hook to edit the sidebar just before it is output by skins.Warning: This hook is run on each...
onDifferenceEngineLoadTextAfterNewContentIsLoaded( $differenceEngine)
This hook is called in DifferenceEngine::loadText() after the new revision's content has been loaded ...
onParserAfterParse( $parser, &$text, $stripState)
This hook is called from Parser::parse() just after the call to Parser::internalParse() returns....
onGetLangPreferredVariant(&$req)
This hook is called in LanguageConverter::getPreferredVariant() to allow fetching the language varian...
onSpecialPageAfterExecute( $special, $subPage)
This hook is called after SpecialPage::execute.1.35bool|void True or no return value to continue or f...
onParserLogLinterData(string $title, int $revId, array $lints)
This hook allows Parsoid to log additional linting information during a parse to a database maintaine...
onGetPreferences( $user, &$preferences)
Use this hook to modify user preferences.1.35bool|void True or no return value to continue or false t...
onTitleSquidURLs( $title, &$urls)
This hook is called to determine which URLs to purge from HTTP caches.1.35bool|void True or no return...
onGetIP(&$ip)
Use this hook to modify the IP of the current user (called only once).1.35bool|void True or no return...
onMaintenanceRefreshLinksInit( $refreshLinks)
This hook is called before executing the refreshLinks.php maintenance script.1.35bool|void True or no...
onEditPageCopyrightWarning( $title, &$msg)
Use this hook for site and per-namespace customization of contribution/copyright notice....
onEmailUserAuthorizeSend(Authority $sender, StatusValue $status)
This hook is called when checking whether a user is allowed to send emails.bool|void True or no retur...
onBeforeRevertedTagUpdate( $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult, &$approved)
This hook is called before scheduling a RevertedTagUpdateJob.Various content management extensions th...
onLinkerMakeMediaLinkFile( $title, $file, &$html, &$attribs, &$ret)
onPerformRetroactiveAutoblock( $block, &$blockIds)
This hook is called before a retroactive autoblock is applied to a user.1.35bool|void True or no retu...
onSiteNoticeAfter(&$siteNotice, $skin)
This hook is called after the sitenotice/anonnotice is composed.1.35bool|void True or no return value...
onLocalFilePurgeThumbnails( $file, $archiveName, $urls)
This hook is called before thumbnails for a local file are purged.1.35bool|void True or no return val...
onChangeTagCanDelete( $tag, $user, &$status)
Use this hook to tell whether a change tag should be able to be deleted from the UI (Special:Tags) or...
onUserRequirementsConditionDisplay(string|int $type, array $args, IContextSource $context, ?MessageSpecifier &$messageSpec)
Use this hook to specify a custom message for displaying user requirements conditions in the user int...
onAuthManagerFilterProviders(array &$providers)
Filter the list of authentication available providers.Providers removed from the list will be disable...
onPreferencesGetIcon(&$iconNames)
Use the hook to add an icon that will be displayed in the mobile layout of Special:Preferences....
onPageHistoryPager__doBatchLookups( $pager, $result)
This hook is called after the pager query was run, before any output is generated,...
onContentModelCanBeUsedOn( $contentModel, $title, &$ok)
Use this hook to determine whether a content model can be used on a given page.This is especially use...
onGetUserBlock( $user, $ip, &$block)
Use this hook to modify the block found by the block manager.This may be a single block or a composit...
onUploadFormSourceDescriptors(&$descriptor, &$radio, $selectedSourceType)
This hook is called after the standard source inputs have been added to the descriptor....
onArticleConfirmDelete( $article, $output, &$reason)
This hook is called before writing the confirmation form for article deletion.1.35bool|void True or n...
onSpecialListusersQueryInfo( $pager, &$query)
This hook is called right before the end of UsersPager::getQueryInfo()1.35bool|void True or no return...
onLoadExtensionSchemaUpdates( $updater)
This hook is called during database installation and updates.Do not use this hook with a handler that...
onInitializeArticleMaybeRedirect( $title, $request, &$ignoreRedirect, &$target, &$article)
Use this hook to override whether a title is a redirect.1.35bool|void True or no return value to cont...
onSpecialSearchPowerBox(&$showSections, $term, &$opts)
Use this hook to modify advanced search profile forms.This hook is equivalent to SpecialSearchProfile...
onSkinPageReadyConfig(RL\Context $context, array &$config)
Allows skins to change the mediawiki.page.ready module configuration.1.36 void This hook must not abo...
onLogException( $e, $suppressed)
This hook is called before an exception (or PHP error) is logged.This is meant for integration with e...
onRedirectSpecialArticleRedirectParams(&$redirectParams)
Use this hook to alter the set of parameter names such as "oldid" that are preserved when using redir...
onLogEventsListLineEnding( $page, &$ret, $entry, &$classes, &$attribs)
This hook is called before a Special:Log line is finished.1.35bool|void True or no return value to co...
onUnblockUser( $block, $user, &$reason)
This hook is called before an IP address or user is unblocked.1.35bool|void True or no return value t...
onPermissionStatusAudit(LinkTarget $title, UserIdentity $user, string $action, string $rigor, PermissionStatus $status)
This hook is called from PermissionManager::getPermissionStatus() to make any permission status (even...
onMediaWikiServices( $services)
This hook is called when a global MediaWikiServices instance is initialized.Extensions may use this t...
onMediaWikiPerformAction( $output, $article, $title, $user, $request, $mediaWiki)
Use this hook to override ActionEntryPoint::performAction().Use this to do something completely diffe...
onTitleGetRestrictionTypes( $title, &$types)
Use this hook to modify the types of protection that can be applied.1.35bool|void True or no return v...
onParserGetVariableValueTs( $parser, &$time)
Use this hook to change the value of the time for time-related magic words, ie {{CURRENTMONTH}},...
onParserOptionsRegister(&$defaults, &$inCacheKey, &$lazyLoad)
Use this hook to register additional parser options.Note that if you change the default value for an ...
onEditPage__importFormData( $editpage, $request)
Use this hook to read additional data posted in the form.1.35bool|void Return value is ignored; this ...
onBeforePageDisplay( $out, $skin)
This hook is called prior to outputting a page.1.35void This hook must not abort, it must return no v...
onUserLoginComplete( $user, &$inject_html, $direct)
Use this hook to show custom content after a user has logged in via the web interface....
onParserLimitReportFormat( $key, &$value, &$report, $isHTML, $localize)
This hook is called for each row in the parser limit report that needs formatting....
onIRCLineURL(&$url, &$query, $rc)
This hook is called when constructing the URL to use in an RCFeed notification.Callee may modify $url...
onParserAfterTidy( $parser, &$text)
This hook is called after Parser::tidy() in Parser::parse().1.35bool|void True or no return value to ...
onSkinCopyrightFooterMessage( $title, $type, &$msg)
Use this hook for site and per-namespace customization of the copyright notice as wikitext....
onPageMoveCompleting( $old, $new, $user, $pageid, $redirid, $reason, $revision)
This hook is called after moving an article (title), pre-commit.1.35bool|void True or no return value...
onContentSecurityPolicyDefaultSource(&$defaultSrc, $policyConfig, $mode)
Use this hook to modify the allowed CSP load sources.This affects all directives except for the scrip...
onSecuritySensitiveOperationStatus(&$status, $operation, $session, $timeSinceAuth)
Use this hook to affect the return value from MediaWiki\Auth\AuthManager::securitySensitiveOperationS...
onSkinEditSectionLinks( $skin, $title, $section, $tooltip, &$result, $lang)
Use this hook to modify section edit links.1.35bool|void True or no return value to continue or false...
onSpecialResetTokensTokens(&$tokens)
This hook is called when building token list for SpecialResetTokens.1.35bool|void True or no return v...
onImagePageFileHistoryLine( $imageHistoryList, $file, &$line, &$css)
This hook is called when a file history line is constructed.1.35bool|void True or no return value to ...
onParserBeforePreprocess( $parser, &$text, $stripState)
Called at the beginning of Parser::preprocess()1.35bool|void True or no return value to continue or f...
onImportLogInterwikiLink(&$fullInterwikiPrefix, &$pageTitle)
Use this hook to change interwiki links in log entries and edit summaries for transwiki imports....
onParserOutputPostCacheTransform( $parserOutput, &$text, &$options)
This hook is called from during the post-processing output transform pipeline to do post-cache transf...
onSpreadAnyEditBlock( $user, bool &$blockWasSpread)
Use this hook to spread any blocks that are not provided by core when User::spreadAnyEditBlock is cal...
onUserGetEmailAuthenticationTimestamp( $user, &$timestamp)
This hook is called when getting the timestamp of email authentication.1.35bool|void True or no retur...
onSelfLinkBegin( $nt, &$html, &$trail, &$prefix, &$ret)
This hook is called before a link to the current article is displayed to allow the display of the lin...
onCollation__factory( $collationName, &$collationObject)
This hook is called if $wgCategoryCollation is an unknown collation.1.35bool|void True or no return v...
onSearchResultsAugment(&$setAugmentors, &$rowAugmentors)
Use this hook to add code to the list of search result augmenters.1.35bool|void True or no return val...
onArticleFromTitle( $title, &$article, $context)
This hook is called when creating an article object from a title object using Wiki::articleFromTitle(...
onGetDifferenceEngine( $context, $old, $new, $refreshCache, $unhide, &$differenceEngine)
This hook is called when getting a new difference engine interface object.Use this hook to decorate o...
onFormatAutocomments(&$comment, $pre, $extractedText, $post, $title, $local, $wikiId)
This hook is called when an autocomment is formatted by the Linker.1.35bool|void True or no return va...
onLinksUpdate( $linksUpdate)
This hook is called at the beginning of LinksUpdate::doUpdate() just before the actual update....
onLogEventsListGetExtraInputs( $type, $logEventsList, &$input, &$formDescriptor)
This hook is called when getting extra inputs to display on Special:Log for a specific log type....
onUnitTestsAfterDatabaseSetup( $database, $prefix)
This hook is called right after MediaWiki's test infrastructure has finished creating/duplicating cor...
onContribsPager__reallyDoQuery(&$data, $pager, $offset, $limit, $descending)
This hook is called before really executing the query for My Contributions.1.35bool|void True or no r...
onExemptFromAccountCreationThrottle( $ip)
Use this hook to add an exemption from the account creation throttle.1.35bool|void True or no return ...
onUndeleteForm__showRevision(&$archive, $title)
This hook is called in UndeleteForm::showRevision, after creating a PageArchive object....
onActionBeforeFormDisplay( $name, $form, $article)
This hook is called before executing the HTMLForm object.1.35bool|void True or no return value to con...
onArticleViewRedirect( $article)
This hook is called before setting "Redirected from ..." subtitle when a redirect was followed....
onGetContentModels(&$models)
Use this hook to add content models to the list of available models.1.35bool|void True or no return v...
onChangesListInitRows( $changesList, $rows)
Use this hook to batch process change list rows prior to rendering.1.35bool|void True or no return va...
onUserGetRights( $user, &$rights)
This hook is called in PermissionManager::getUserPermissions().1.35bool|void True or no return value ...
onRevisionFromEditComplete( $wikiPage, $rev, $originalRevId, $user, &$tags)
This hook is called when a revision was inserted due to an edit, file upload, import or page move....
onImageOpenShowImageInlineBefore( $imagePage, $output)
This hook is called just before showing the image on an image page.1.35bool|void True or no return va...
onProtectionForm__save( $article, &$errorMsg, $reasonstr)
This hook is called when a protection form is submitted.1.35bool|void True or no return value to cont...
onUploadFormInitDescriptor(&$descriptor)
This hook is called after the descriptor for the upload form as been assembled.1.35bool|void True or ...
onUploadComplete( $uploadBase)
This hook is called upon completion of a file upload.1.35bool|void True or no return value to continu...
onUserMailerSplitTo(&$to)
This hook is called in UserMailer::send() to give extensions a chance to split up an email with multi...
onImportHandleUploadXMLTag( $reader, $revisionInfo)
This hook is called when parsing an XML tag in a file upload.1.35bool|void True or no return value to...
onSetupAfterCache()
This hook is called in Setup.php, after cache objects are set.1.35bool|void True or no return value t...
onDifferenceEngineShowDiff( $differenceEngine)
Use this hook to affect the diff text which eventually gets sent to the OutputPage object....
onEmailUserPermissionsErrors( $user, $editToken, &$hookErr)
Use this hook to retrieve permissions errors for emailing a user.1.35bool|void True or no return valu...
onBeforeDisplayNoArticleText( $article)
This hook is called before displaying message key "noarticletext" or "noarticletext-nopermission" at ...
onNewPagesLineEnding( $page, &$ret, $row, &$classes, &$attribs)
This hook is called before a NewPages line is finished.1.35bool|void True or no return value to conti...
onDifferenceEngineShowDiffPage( $out)
Use this hook to add additional output via the available OutputPage object into the diff view....
onOutputPageRenderCategoryLink(OutputPage $outputPage, ProperPageIdentity $categoryTitle, string $text, ?string &$link)
This hook is called when a category link is rendered.1.43void This hook must not abort,...
onImagePageShowTOC( $page, &$toc)
This hook is called when the file toc on an image page is generated.1.35bool|void True or no return v...
onPageViewUpdates( $wikipage, $user)
Use this hook to make database (or other) changes after a page view is seen by MediaWiki....
onDeletedContributionsLineEnding( $page, &$ret, $row, &$classes, &$attribs)
This hook is called before a DeletedContributions HTML line is finished.ContributionsLineEndingHook1....
onWikiPageFactory( $title, &$page)
Use this hook to override WikiPage class used for a title.1.35bool|void True or no return value to co...
onSpecialLogAddLogSearchRelations( $type, $request, &$qc)
Use this hook to add log relations to the current log.1.35bool|void True or no return value to contin...
onSearchGetNearMatchComplete( $term, &$title)
Use this hook to modify exact-title-matches in "go" searches.1.35bool|void True or no return value to...
onMimeMagicGuessFromContent( $mimeMagic, &$head, &$tail, $file, &$mime)
Use this hook to guess the MIME by content.1.35bool|void True or no return value to continue or false...
onDifferenceEngineAfterLoadNewText( $differenceEngine)
This hook is called in DifferenceEngine::loadNewText() after the new revision's content has been load...
onUserLoadAfterLoadFromSession( $user)
This hook is called to authenticate users on external or environmental means.This hook is called afte...
onUserLinkRendererUserLinkPostRender(UserIdentity $targetUser, IContextSource $context, &$html, &$prefix, &$postfix)
onSpecialMovepageAfterMove( $movePage, $oldTitle, $newTitle)
This hook is called after moving a page.1.35bool|void True or no return value to continue or false to...
onEditFilterMergedContent( $context, $content, $status, $summary, $user, $minoredit)
onUserRequirementsCondition(string|int $type, array $args, UserIdentity $user, bool $isPerformingRequest, ?bool &$result)
Use this hook to check user requirements condition for a user.1.46
onOutputPageAfterGetHeadLinksArray(&$tags, $out)
This hook is called in OutputPage::getHeadLinksArray right before returning the result....
onSpecialVersionVersionUrl( $version, &$versionUrl)
This hook is called when building the URL for Special:Version.1.35bool|void True or no return value t...
onSpecialSearchProfiles(&$profiles)
Use this hook to modify search profiles.1.35bool|void True or no return value to continue or false to...
onSpecialSearchResultsAppend( $specialSearch, $output, $term)
This hook is called immediately before returning HTML on the search results page.Useful for including...
onGetDoubleUnderscoreIDs(&$doubleUnderscoreIDs)
Use this hook to modify the list of behavior switches (double underscore variables in wikitext)....
onTempUserCreatedRedirect(Session $session, UserIdentity $user, string $returnTo, string $returnToQuery, string $returnToAnchor, &$redirectUrl)
This hook is called after an action causes a temporary user to be created or after the first successf...
onModifyExportQuery( $db, &$tables, $cond, &$opts, &$join_conds, &$conds)
Use this hook to modify the query used by the exporter.1.35bool|void True or no return value to conti...
onLoadUserOptions(UserIdentity $user, array &$options)
This hook is called when user options/preferences are being loaded from the database....
onUserGetLanguageObject( $user, &$code, $context)
This hook is called when getting a user's interface language object.1.35bool|void True or no return v...
onLanguageGetNamespaces(&$namespaces)
Use this hook to provide custom ordering for namespaces or remove namespaces.Do not use this hook to ...
onPageContentLanguage( $title, &$pageLang, $userLang)
Use this hook to change the language in which the content of a page is written.Defaults to the wiki c...
onAuthPreserveQueryParams(&$params, $options)
onLonelyPagesQuery(&$tables, &$conds, &$joinConds)
Use this hook to modify the query used by Special:LonelyPages.1.35bool|void True or no return value t...
onSkinAfterPortlet( $skin, $portlet, &$html)
This hook is called when generating portlets.It allows injecting custom HTML after the portlet....
onFileUpload( $file, $reupload, $hasDescription)
This hook is called when a file upload occurs.1.35bool|void True or no return value to continue or fa...
onShowSearchHit( $searchPage, $result, $terms, &$link, &$redirect, &$section, &$extract, &$score, &$size, &$date, &$related, &$html)
Use this hook to customize display of search hit.1.35bool|void True or no return value to continue or...
onSearchAfterNoDirectMatch( $term, &$title)
This hook is called if there was no match for the exact result.This runs before lettercase variants a...
onSpecialPage_initList(&$list)
This hook is called when setting up SpecialPageFactory::$list.Use this hook to remove a core special ...
onChangesListInsertLogEntry( $entry, $context, &$html, &$classes, &$attribs)
onOpportunisticLinksUpdate( $page, $title, $parserOutput)
This hook is called by WikiPage::triggerOpportunisticLinksUpdate when a page view triggers a re-rende...
onSpecialTrackingCategories__generateCatLink( $specialPage, $catTitle, &$html)
This hook is called for each category link on Special:TrackingCategories.1.35bool|void True or no ret...
onWatchedItemQueryServiceExtensions(&$extensions, $watchedItemQueryService)
Use this hook to create a WatchedItemQueryServiceExtension.1.35 since 1.46 and no longer called....
onSpecialNewPagesFilters( $special, &$filters)
This hook is called after building form options at NewPages.1.35bool|void True or no return value to ...
onMimeMagicImproveFromExtension( $mimeMagic, $ext, &$mime)
Use this hook to further improve the MIME type detected by considering the file extension....
onGetUserPermissionsErrorsExpensive( $title, $user, $action, &$result)
This hook is equal to getUserPermissionsErrors, but it is called only if expensive checks are enabled...
onImgAuthBeforeStream(&$title, &$path, &$name, &$result)
This hook is called before a file is streamed to a user, but only when using img_auth....
onEnhancedChangesListModifyLineData( $changesList, &$data, $block, $rc, &$classes, &$attribs)
Use this hook to alter data used to build a grouped recent change inner line in EnhancedChangesList....
onArticleContentOnDiff( $diffEngine, $output)
This hook is called before showing the article content below a diff.Use this hook to change the conte...
onArticleUndelete( $title, $create, $comment, $oldPageId, $restoredPages)
This hook is called when one or more revisions of an article are restored.1.35bool|void True or no re...
onChangeTagsAfterUpdateTags( $addedTags, $removedTags, $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $user)
This hook is called after tags have been updated with the ChangeTagsStore->updateTags function....
onRecentChangesPurgeQuery( $query, &$callbacks)
This hook is called by RecentChangesUpdateJob before recentchanges rows are deleted....
onRecentChangesPurgeRows( $rows)
This hook is called by RecentChangesUpdateJob when expired recentchanges rows are deleted,...
onAlternateEdit( $editPage)
This hook is called before checking if a user can edit a page and before showing the edit form ( Edit...
onUserToolLinksEdit( $userId, $userText, &$items)
This hook is called when generating a list of user tool links, e.g."Foobar (Talk | Contribs | Block)"...
onSpecialPrefixIndexQuery(array $fieldData, SelectQueryBuilder $queryBuilder)
Use this hook to modify the query used by Special:PrefixIndex.1.42void Un-abortable hook
onUserIsBot( $user, &$isBot)
Use this hook to establish whether a user is a bot account.1.35bool|void True or no return value to c...
onDifferenceEngineRenderRevisionAddParserOutput( $differenceEngine, $out, $parserOutput, $wikiPage)
Use this hook to change the parser output.1.35bool|void True or no return value to continue,...
onShowMissingArticle( $article)
This hook is called when generating the output for a non-existent page.1.35bool|void True or no retur...
onEmailUserCC(&$to, &$from, &$subject, &$text)
This hook is called before sending the copy of the email to the author.1.35bool|void True or no retur...
onPostLoginRedirect(&$returnTo, &$returnToQuery, &$type)
Use this hook to modify the post login redirect behavior.Occurs after signing up or logging in,...
onEmailUserSendEmail(Authority $from, MailAddress $fromAddress, UserEmailContact $to, MailAddress $toAddress, string $subject, string $text, StatusValue $status)
This hook is called before sending an email, when all other checks have succeeded....
onSpecialSearchResults( $term, &$titleMatches, &$textMatches)
This hook is called before search result display.1.35bool|void True or no return value to continue or...
onDisplayOldSubtitle( $article, &$oldid)
This hook is called before creating subtitle when browsing old versions of an article....
onBitmapHandlerCheckImageArea( $image, &$params, &$checkImageAreaHookResult)
This hook is called by BitmapHandler::normaliseParams, after all normalizations have been performed,...
onOutputPageBodyAttributes( $out, $sk, &$bodyAttrs)
This hook is called when OutputPage::headElement is creating the body tag to allow for extensions to ...
onMessagesPreLoad( $title, &$message, $code)
This hook is called when loading a message from the database.1.35bool|void True or no return value to...
onGetUserPermissionsErrors( $title, $user, $action, &$result)
Use this hook to add a permissions error when permissions errors are checked for.Use instead of userC...
onValidateExtendedMetadataCache( $timestamp, $file)
Use this hook to validate the cached metadata in FormatMetadata::getExtendedMeta.1....
onGalleryGetModes(&$modeArray)
Use this hook to get a list of classes that can render different modes of a gallery....
onSearchableNamespaces(&$arr)
Use this hook to modify which namespaces are searchable.1.35bool|void True or no return value to cont...
onCategoryViewer__generateLink( $type, $title, $html, &$link)
This hook is called before generating an output link allow extensions opportunity to generate a more ...
onAfterParserFetchFileAndTitle( $parser, $ig, &$html)
This hook is called after an image gallery is formed by Parser, just before adding its HTML to parser...
onSpecialListusersDefaultQuery( $pager, &$query)
This hook is called right before the end of UsersPager::getDefaultQuery().1.35bool|void True or no re...
onUserLogoutComplete( $user, &$inject_html, $oldName)
This hook is called after a user has logged out.1.35bool|void True or no return value to continue or ...
onChangesListSpecialPageQuery( $name, &$tables, &$fields, &$conds, &$query_options, &$join_conds, $opts)
This hook is called when building an SQL query on pages inheriting from ChangesListSpecialPage (in co...
onWikiExporter__dumpStableQuery(&$tables, &$opts, &$join)
Use this hook to get the SELECT query for "stable" revisions dumps.One, and only one hook should set ...
onEditPageGetDiffContent( $editPage, &$newtext)
Use this hook to modify the wikitext that will be used in "Show changes".Note that it is preferable t...
onBookInformation( $isbn, $output)
This hook is called before information output on Special:Booksources.1.35bool|void True or no return ...
onOutputPageBeforeHTML( $out, &$text)
This hook is called when a page has been processed by the parser and the resulting HTML is about to b...
onBitmapHandlerTransform( $handler, $image, &$scalerParams, &$mto)
This hook is called before a file is transformed, giving extensions the possibility to transform it t...
onUserSaveSettings( $user)
This hook is called directly after user settings have been saved to the database.Compare to the SaveU...
onContentSecurityPolicyScriptSource(&$scriptSrc, $policyConfig, $mode)
Use this hook to modify the allowed CSP script sources.Note that you also have to use ContentSecurity...
onUploadVerifyUpload( $upload, $user, $props, $comment, $pageText, &$error)
onGetAllBlockActions(&$actions)
Use this hook to add an action or actions that may be blocked by a partial block.Add an item to the $...
onParserGetVariableValueSwitch( $parser, &$variableCache, $magicWordId, &$ret, $frame)
This hook is called when the parser needs the value of a custom magic word.1.35true|void True or no r...
onUserIsLocked( $user, &$locked)
Use this hook to establish that a user is locked.See User::isLocked().1.35bool|void True or no return...
onRenameUserPreRename(int $uid, string $old, string $new)
Called before a user is renamed.
onHtmlPageLinkRendererBegin( $linkRenderer, $target, &$text, &$customAttribs, &$query, &$ret)
This hook is called when generating internal and interwiki links in LinkRenderer, before processing s...
onPrefixSearchExtractNamespace(&$namespaces, &$search)
This hook is called if core was not able to extract a namespace from the search string so that extens...
onContentAlterParserOutput( $content, $title, $parserOutput)
Use this hook to modify parser output for a given content object.This hook is called by Content::getP...
onEditPage__showEditForm_fields( $editor, $out)
Use this hook to inject form field into edit form.1.35bool|void Return value is ignored; this hook sh...
onEditPage__showEditForm_initial( $editor, $out)
This hook is called before showing the edit form.1.35bool|void True or no return value to continue or...
onLocalFile__getHistory( $file, &$tables, &$fields, &$conds, &$opts, &$join_conds)
This hook is called before a file history query is performed.1.35bool|void True or no return value to...
onUserMailerChangeReturnPath( $to, &$returnPath)
This hook is called to generate a VERP return address when UserMailer sends an email,...
onUnwatchArticleComplete( $user, $page)
This hook is called after a watch is removed from an article.1.35bool|void True or no return value to...
onRawPageViewBeforeOutput( $obj, &$text)
This hook is called right before the text is blown out in action=raw.1.35bool|void True or no return ...
onUserIsBlockedFrom( $user, $title, &$blocked, &$allowUsertalk)
Use this hook to check if a user is blocked from a specific page (for specific block exemptions if a ...
onSkinAfterContent(&$data, $skin)
Use this hook to add text after the page content and article metadata.This hook should work in all sk...
onGetFullURL( $title, &$url, $query)
Use this hook to modify fully-qualified URLs used in redirects/export/offsite data....
onRevisionRecordInserted( $revisionRecord)
This hook is called after a revision is inserted into the database.1.35bool|void True or no return va...
onTitleIsAlwaysKnown( $title, &$isKnown)
This hook is called when determining if a page exists.Use this hook to override default behavior for ...
onSpecialPageBeforeExecute( $special, $subPage)
This hook is called before SpecialPage::execute.1.35bool|void True or no return value to continue or ...
onRequestContextCreateSkin( $context, &$skin)
This hook is called when RequestContext::getSkin creates a skin instance.Use this hook to override wh...
onTitleMoveStarting( $old, $nt, $user)
This hook is called before moving an article (title), but just after the atomic DB section starts....
onGetDefaultSortkey( $title, &$sortkey)
Use this hook to override the default sortkey for a page.1.35bool|void True or no return value to con...
onEditPage__attemptSave( $editpage_Obj)
This hook is called before an article is saved, before WikiPage::doUserEditContent() is called....
onGetLocalURL( $title, &$url, $query)
Use this hook to modify local URLs as output into page links.Note that if you are working with intern...
onSoftwareInfo(&$software)
This hook is called by Special:Version for returning information about the software....
onEditPageGetPreviewContent( $editPage, &$content)
Use this hook to modify the wikitext that will be previewed.Note that it is preferable to implement p...
onArticleMergeComplete( $targetTitle, $destTitle)
This hook is called after merging to article using Special:Mergehistory.1.35bool|void True or no retu...
onSpecialMuteModifyFormFields( $target, $user, &$fields)
Use this hook to add more fields to Special:Mute.1.35bool|void True or no return value to continue or...
onCustomEditor( $article, $user)
This hook is called when invoking the page editor.1.35bool|void True or no return value to allow the ...
onOpenSearchUrls(&$urls)
This hook is called when constructing the OpenSearch description XML.Hooks can alter or append to the...
onFileTransformed( $file, $thumb, $tmpThumbPath, $thumbPath)
This hook is called when a file is transformed and moved into storage.1.35bool|void True or no return...
onSkinBuildSidebar( $skin, &$bar)
This hook is called at the end of Skin::buildSidebar().1.35bool|void True or no return value to conti...
onChangesListSpecialPageStructuredFilters( $special)
Use this hook to register filters for pages inheriting from ChangesListSpecialPage (in core: RecentCh...
onPrefsEmailAudit( $user, $oldaddr, $newaddr)
This hook is called when user changes their email address.1.35bool|void True or no return value to co...
onWikiPageDeletionUpdates( $page, $content, &$updates)
Use this hook to manipulate the list of DeferrableUpdates to be applied when a page is deleted....
onWantedPages__getQueryInfo( $wantedPages, &$query)
This hook is called in SpecialWantedPages::getQueryInfo().Can be used to alter the SQL query....
onArticlePageDataBefore( $wikiPage, &$fields, &$tables, &$joinConds)
This hook is called before loading data of an article from the database.1.35bool|void True or no retu...
onParserTestGlobals(&$globals)
Use this hook to define globals for parser tests.1.35bool|void True or no return value to continue or...
onEmailUser(&$to, &$from, &$subject, &$text, &$error)
This hook is called before sending email from one user to another.1.35bool|void True or no return val...
onSpecialListusersHeaderForm( $pager, &$out)
This hook is called before adding the submit button in UsersPager::getPageHeader()....
onAncientPagesQuery(&$tables, &$conds, &$joinConds)
Use this hook to modify the query used by Special:AncientPages.1.35bool|void True or no return value ...
onChangesListInsertArticleLink( $changesList, &$articlelink, &$s, $rc, $unpatrolled, $watched)
Use this hook to override or augment link to article in RC list.1.35bool|void True or no return value...
onSpecialSearchResultsPrepend( $specialSearch, $output, $term)
This hook is called immediately before returning HTML on the search results page.Useful for including...
onApiBeforeMain(&$main)
This hook is called before calling ApiMain's execute() method in api.php.1.35bool|void True or no ret...
onUserClearNewTalkNotification( $userIdentity, $oldid)
This hook is called post-send when viewing a user talk page.The hook may be aborted,...
onChangeTagsAllowedAdd(&$allowedTags, $addTags, $user)
This hook is called when checking if a user can add tags to a change.1.35bool|void True or no return ...
onEditPageNoSuchSection( $editpage, &$res)
This hook is called when a section edit request is given for a non-existent section....
onPlaceNewSection( $content, $oldtext, $subject, &$text)
Use this hook to override placement of new sections.1.35bool|void True or no return value to continue...
onArticleParserOptions(Article $article, ParserOptions $popts)
This hook is called before parsing wikitext for an article, and allows setting particular parser opti...
onLinksUpdateComplete( $linksUpdate, $ticket)
This hook is called at the end of LinksUpdate::doUpdate() when updating, including delete and insert,...
onGetActionName(IContextSource $context, string &$action)
Use this hook to override the action name depending on request parameters.1.37void This hook must not...
onMaintenanceShellStart()
This hook is called before maintenance script shells start, such as eval.php and shell....
onGetExtendedMetadata(&$combinedMeta, $file, $context, $single, &$maxCacheTime)
Use this hook to get extended file metadata for the API.1.35bool|void True or no return value to cont...
onLogLine( $log_type, $log_action, $title, $paramArray, &$comment, &$revert, $time)
Use this hook to process a single log entry on Special:Log.1.35bool|void True or no return value to c...
onBlockIp( $block, $user, &$reason)
This hook is called before an IP address or user is blocked.1.35bool|void True or no return value to ...
onIsTrustedProxy( $ip, &$result)
Use this hook to override the result of ProxyLookup::isTrustedProxy().1.35bool|void True or no return...
onUserCanSendEmail( $user, &$hookErr)
Use this hook to override User::canSendEmail() permission check.1.35bool|void True or no return value...
onRevisionDataUpdates( $title, $renderedRevision, &$updates)
This hook is called when constructing a list of DeferrableUpdate to be executed to record secondary d...
onImportHandleUnknownUser( $name)
When a user doesn't exist locally, use this hook to auto-create it.1.35bool|void True or no return va...
onAfterImportPage( $title, $foreignTitle, $revCount, $sRevCount, $pageInfo)
This hook is called when a page import is completed.1.35bool|void True or no return value to continue...
onArticleUpdateBeforeRedirect( $article, &$sectionanchor, &$extraq)
This hook is called after a page is updated (usually on save), before the user is redirected back to ...
onCategoryAfterPageRemoved( $category, $wikiPage, $id)
This hook is called after a page is removed from a category.1.35bool|void True or no return value to ...
onPreferencesFormPreSave( $formData, $form, $user, &$result, $oldUserOptions)
Use this hook to override preferences being saved.1.35bool|void True or no return value to continue o...
onMessageCacheReplace( $title, $text)
This hook is called when a message page is changed.Use this hook to update caches....
onTitleIsMovable( $title, &$result)
This hook is called when determining if it is possible to move a page.Note that this hook is not call...
onMaintenanceUpdateAddParams(&$params)
Use this hook to add params to the update.php maintenance script.1.35bool|void True or no return valu...
onDifferenceEngineMarkPatrolledLink( $differenceEngine, &$markAsPatrolledLink, $rcid)
Use this hook to change the "mark as patrolled" link which is shown both on the diff header as well a...
onBeforeInitialize( $title, $unused, $output, $user, $request, $mediaWiki)
This hook is called before anything is initialized in ActionEntryPoint::performRequest()....
onUserCanChangeEmail( $user, $oldaddr, $newaddr, &$status)
This hook is called when user changes their email address.1.45bool|void True or no return value to co...
onParserBeforeInternalParse( $parser, &$text, $stripState)
This hook is called at the beginning of Parser::internalParse().1.35bool|void True or no return value...
onEmailUserForm(&$form)
This hook is called after building the email user form object.1.35bool|void True or no return value t...
onPageDeleteComplete(ProperPageIdentity $page, Authority $deleter, string $reason, int $pageID, RevisionRecord $deletedRev, ManualLogEntry $logEntry, int $archivedRevisionCount)
This hook is called after a page is deleted.1.37true|void
onLanguageGetTranslatedLanguageNames(&$names, $code)
Use this hook to provide translated language names.1.35bool|void True or no return value to continue ...
onRandomPageQuery(&$tables, &$conds, &$joinConds)
Use this hook to modify the query used by Special:Random to select random pages.1....
onArticlePrepareTextForEdit( $wikiPage, $popts)
This hook is called when preparing text to be saved.1.35bool|void True or no return value to continue...
onTitleGetEditNotices( $title, $oldid, &$notices)
Use this hook to add edit notices.1.35bool|void True or no return value to continue or false to abort
onDeleteUnknownPreferences(&$where, $db)
This hook is called by the cleanupPreferences.php maintenance script to build a WHERE clause with whi...
onUserCan( $title, $user, $action, &$result)
Use this hook to interrupt or advise the "user can do X to Y article" check.If you want to display an...
onGetSecurityLogContext(array $info, array &$context)
This hook is called from WebRequest::getSecurityLogContext() to collect information about the request...
onBadImage( $name, &$bad)
This hook is called when checking against the bad image list.If an image is "bad",...
onChangeAuthenticationDataAudit( $req, $status)
This hook is called when a user changes their password.No return data is accepted; this hook is for a...
onUserLoadDefaults( $user, $name)
This hook is called when loading a default user.1.35bool|void True or no return value to continue or ...
onUploadVerifyFile( $upload, $mime, &$error)
Use this hook to perform extra file verification, based on MIME type, etc.1.35bool|void True or no re...
onPrefixSearchBackend( $ns, $search, $limit, &$results, $offset)
Use this hook to override the title prefix search used for OpenSearch and AJAX search suggestions....
onDifferenceEngineOldHeaderNoOldRev(&$oldHeader)
Use this hook to change the $oldHeader variable in cases when there is no old revision....
onUserPrivilegedGroups( $userIdentity, &$groups)
onUserGetRightsRemove( $user, &$rights)
This hook is called in PermissionManager::getUserPermissions().This hook overrides the UserGetRights ...
onHTMLFileCache__useFileCache( $context)
Use this hook to override whether a page should be cached in file cache.1.35bool|void True or no retu...
onUserAddGroup( $user, &$group, &$expiry)
This hook is called when adding a group or changing a group's expiry.1.35bool|void True or no return ...
onEditFormPreloadText(&$text, $title)
Use this hook to populate the edit form when creating pages.1.35bool|void True or no return value to ...
onSpecialSearchNogomatch(&$title)
This hook is called when the 'Go' feature is triggered and the target doesn't exist....
onGetRelativeTimestamp(&$output, &$diff, $timestamp, $relativeTo, $user, $lang)
Use this hook to pre-emptively override the relative timestamp generated by MWTimestamp::getRelativeT...
onAuthManagerVerifyAuthentication(?UserIdentity $user, AuthenticationResponse &$response, AuthManager $authManager, array $info)
This hook is called before the end of a successful login or account creation attempt....
onActionModifyFormFields( $name, &$fields, $article)
This hook is called before creating an HTMLForm object for a page action.Use this hook to change the ...
onInvalidateEmailComplete( $user)
This hook is called after a user's email has been invalidated successfully.1.35bool|void True or no r...
onConfirmEmailComplete( $user)
This hook is called after a user's email has been confirmed successfully.1.35bool|void True or no ret...
onMakeGlobalVariablesScript(&$vars, $out)
Export user- or page-specific mw.config variables to JavaScript.When using this hook,...
onArticlePageDataAfter( $wikiPage, &$row)
This hook is called after loading data of an article from the database.1.35bool|void True or no retur...
onResetPasswordExpiration( $user, &$newExpire)
Use this hook to allow extensions to set a default password expiration.1.35bool|void True or no retur...
onConditionalDefaultOptionsAddCondition(&$extraConditions)
onSpecialUploadComplete( $form)
This hook is called after successfully uploading a file from Special:Upload.1.35bool|void True or no ...
onArticleViewFooter( $article, $patrolFooterShown)
This hook is called after showing the footer section of an ordinary page view.1.35bool|void True or n...
onParserOutputStashForEdit( $page, $content, $output, $summary, $user)
This hook is called when an edit stash parse finishes, before the output is cached....
onXmlDumpWriterOpenPage( $obj, &$out, $row, $title)
This hook is called at the end of XmlDumpWriter::openPage, to allow extra metadata to be added....
onUploadStashFile( $upload, $user, $props, &$error)
onMessagePostProcessText(&$value, $format, $key)
This hook is called after a message is formatted as a text format.Use this hook if you wish to post p...
onSpecialBlockModifyFormFields( $sp, &$fields)
Use this hook to add more fields to Special:Block.1.35bool|void True or no return value to continue o...
onUserEditCountUpdate( $infos)
This is called from a deferred update on edit or move and provides collected user edit count informat...
onArticleDeleteComplete( $wikiPage, $user, $reason, $id, $content, $logEntry, $archivedRevisionCount)
This hook is called after an article is deleted.1.35bool|void True or no return value to continue or ...
onUndeletePageToolLinks(IContextSource $context, LinkRenderer $linkRenderer, array &$links)
Use this hook to add one or more links to edit page subtitle when a page has been previously deleted....
onUploadForm_initial( $upload)
This hook is called before the upload form is generated.Extensions might set the member-variables $up...
onAutopromoteCondition( $type, $args, $user, &$result)
Use this hook to check autopromote condition for user.1.35bool|void True or no return value to contin...
onGitViewers(&$extTypes)
This hook is called when generating the list of git viewers for Special:Version, allowing you to modi...
onSpecialSearchSetupEngine( $search, $profile, $engine)
Use this hook for passing custom data to the search engine.1.35bool|void True or no return value to c...
onDeletedContribsPager__reallyDoQuery(&$data, $pager, $offset, $limit, $descending)
This hook is called before really executing the query for Special:DeletedContributions....
onGetHumanTimestamp(&$output, $timestamp, $relativeTo, $user, $lang)
Use this hook to preemptively override the human-readable timestamp generated by Language::getHumanTi...
onUserIsEveryoneAllowed( $right)
Use this hook to check if all users are allowed some user right; return false if a UserGetRights hook...
onEmailUserComplete( $to, $from, $subject, $text)
This hook is called after sending email from one user to another.1.35bool|void True or no return valu...
onSpecialListusersFormatRow(&$item, $row)
This hook is called right before the end of UsersPager::formatRow().1.35bool|void True or no return v...
onShowSearchHitTitle(&$title, &$titleSnippet, $result, $terms, $specialSearch, &$query, &$attributes)
Use this hook to customise display of search hit title/link.1.35bool|void True or no return value to ...
onUploadForm_getInitialPageText(&$pageText, $msg, $config)
This hook is called after the initial page text for file uploads is generated.It allows extensions to...
onEmailConfirmed( $user, &$confirmed)
This hook is called when checking that the user's email address is "confirmed".This runs before the o...
onLocalisationCacheRecache( $cache, $code, &$alldata, $unused)
Called when loading the localisation data into cache.1.35bool|void True or no return value to continu...
onChangeTagsListActive(&$tags)
Use this hook to nominate which of the tags your extension uses are in active use....
onNewDifferenceEngine( $title, &$oldId, &$newId, $old, $new)
This hook is called when a new DifferenceEngine object is made.1.35bool|void True or no return value ...
onUploadCreateFromRequest( $type, &$className)
This hook is called when UploadBase::createFromRequest has been called.1.35bool|void True or no retur...
onLinkerGenerateRollbackLink( $revRecord, $context, $options, &$inner)
This hook is called before a rollback link is displayed to allow for customizing the appearance of th...
onBacklinkCacheGetConditions( $table, $title, &$conds)
Use this hook to set conditions for query when links to certain title are fetched....
onArticleRevisionVisibilitySet( $title, $ids, $visibilityChangeMap)
This hook is called when changing visibility of one or more revisions of an article....
onGetMetadataVersion(&$version)
Use this hook to modify the image metadata version currently in use.This is used when requesting imag...
onExtensionTypes(&$extTypes)
This hook is called when generating the extensions credits.Use this to change the tables headers....
onUserSetEmailAuthenticationTimestamp( $user, &$timestamp)
This hook is called when setting the timestamp of a User's email authentication.1....
onLocalisationCacheRecacheFallback( $cache, $code, &$alldata)
Called for each language when merging fallback data into the cache.1.35bool|void True or no return va...
onUnitTestsBeforeDatabaseTeardown()
This hook is called right before MediaWiki tears down its database infrastructure used for unit tests...
onLocalUserOptionsStoreSave(UserIdentity $user, array $oldOptions, array $newOptions)
This hook is called just after saving preferences in LocalUserOptionsStore.Hook handlers cannot modif...
onRenameUserWarning(string $oldUsername, string $newUsername, array &$warnings)
Called on Special:Renameuser before a user is renamed.Will show the given warnings to the user and as...
onSpecialStatsAddExtra(&$extraStats, $context)
Use this hook to add extra statistics at the end of Special:Statistics.1.35; can be an array with the...
onUserMailerTransformContent( $to, $from, &$body, &$error)
This hook is called in UserMailer::send() to change email contents.1.35bool|void True or no return va...
onTitleExists( $title, &$exists)
This hook is called when determining whether a page exists at a given title.1.35bool|void True or no ...
onUserGroupsChanged( $user, $added, $removed, $performer, $reason, $oldUGMs, $newUGMs)
This hook is called after user groups are changed.1.35bool|void True or no return value to continue o...
onSearchDataForIndex2(array &$fields, ContentHandler $handler, WikiPage $page, ParserOutput $output, SearchEngine $engine, RevisionRecord $revision)
Use this hook to add data to search document.Allows you to add any data to the field map used to inde...
onPageHistoryLineEnding( $historyAction, &$row, &$s, &$classes, &$attribs)
This hook is called right before the <li> is generated for a history line.1.35bool|void True or no re...
onEditPageGetCheckboxesDefinition( $editpage, &$checkboxes)
Use this hook to modify the edit checkboxes and other form fields below the textarea in the edit form...
onHistoryPageToolLinks(IContextSource $context, LinkRenderer $linkRenderer, array &$links)
Use this hook to add one or more links to revision history page subtitle.1.35bool|void True or no ret...
onContentGetParserOutput( $content, $title, $revId, $options, $generateHtml, &$parserOutput)
Use this hook to customize parser output for a given content object.This hook is called by AbstractCo...
onContributionsLineEnding( $page, &$ret, $row, &$classes, &$attribs)
This hook is called before a contributions HTML line is finished.1.35bool|void True or no return valu...
onUserMailerTransformMessage( $to, $from, &$subject, &$headers, &$body, &$error)
This hook is called in UserMailer::send() to change email after it has gone through the MIME transfor...
onCategoryViewer__doCategoryQuery( $type, $res)
This hook is called after querying for pages to be displayed in a Category page.Use this hook to batc...
onSpecialPageBeforeFormDisplay( $name, $form)
This hook is called before executing the HTMLForm object.1.35bool|void True or no return value to con...
onEditPage__attemptSave_after( $editpage_Obj, $status, $resultDetails)
This hook is called after an article save attempt.1.35bool|void True or no return value to continue o...
onThumbnailBeforeProduceHTML( $thumbnail, &$attribs, &$linkAttribs)
This hook is called before an image HTML is about to be rendered (by ThumbnailImage:toHtml method)....
onSaveUserOptions(UserIdentity $user, array &$modifiedOptions, array $originalOptions)
This hook is called just before saving user preferences.Hook handlers can either add or manipulate op...
onSessionMetadata( $backend, &$metadata, $requests)
Use this hook to add metadata to a session being saved.1.35bool|void True or no return value to conti...
onArticleViewHeader( $article, &$outputDone, &$pcache)
Use this hook to control article output.This hook is called before the parser cache is about to be tr...
onFileDeleteComplete( $file, $oldimage, $article, $user, $reason)
This hook is called when a file is deleted.1.35bool|void True or no return value to continue or false...
onUnblockUserComplete( $block, $user)
This hook is called after an IP address or user has been unblocked.1.35bool|void True or no return va...
onChangeUserGroups( $performer, $user, &$add, &$remove)
This hook is called before user groups are changed.1.35bool|void True or no return value to continue ...
onOldChangesListRecentChangesLine( $changeslist, &$s, $rc, &$classes, &$attribs)
Use this hook to customize a recent changes line.1.35bool|void True or no return value to continue,...
onRollbackComplete( $wikiPage, $user, $revision, $current)
After an article rollback is completed.1.35bool|void True or no return value to continue or false to ...
onLoginFormValidErrorMessages(array &$messages)
This hook is called in LoginHelper::getValidErrorMessages before returning the list of message keys t...
onJsonValidateSave(JsonContent $content, PageIdentity $pageIdentity, StatusValue $status)
Use this hook to add additional validations for JSON content pages.This hook is only called if JSON s...
onSpecialSearchGoResult( $term, $title, &$url)
Use this hook to alter the behaviour of the 'go' feature when searching.If a hook returns false the '...
onPageHistoryBeforeList( $article, $context)
This hook is called when a history page list is about to be constructed.1.35bool|void True or no retu...
onUserArrayFromResult(&$userArray, $res)
This hook is called when creating an UserArray object from a database result.1.35bool|void True or no...
onAuthenticationAttemptThrottled(string $type, ?string $username, ?string $ip)
This hook is called when a Throttler has throttled an authentication attempt.An authentication attemp...
onSpecialLogGetSubpagesForPrefixSearch(IContextSource $context, array &$subpages)
Hook for intercepting and changing the list of suggested log types when typing "Special:Log" in the s...
onGetLocalURL__Internal( $title, &$url, $query)
Use this hook to modify local URLs to internal pages.1.35bool|void True or no return value to continu...
onBacklinkCacheGetPrefix( $table, &$prefix)
Use this hook to set a prefix for a specific link table.1.35bool|void True or no return value to cont...
onConvertContent( $content, $toModel, $lossy, &$result)
This hook is called by AbstractContent::convert when a conversion to another content model is request...
onBeforePageRedirect( $out, &$redirect, &$code)
This hook is called prior to sending an HTTP redirect.Gives a chance to override how the redirect is ...
onArticleShowPatrolFooter( $article)
This hook is called at the beginning of Article::showPatrolFooter.Use this hook to not show the [mark...
onParserLimitReportPrepare( $parser, $output)
This hook is called at the end of Parser:parse() when the parser will include comments about size of ...
onGetCacheVaryCookies( $out, &$cookies)
Use this hook to get cookies that should vary cache options.1.35bool|void True or no return value to ...
onChangeTagCanCreate( $tag, $user, &$status)
Use this hook to tell whether a change tag should be able to be created from the UI (Special:Tags) or...
onLocalUserCreated( $user, $autocreated)
This hook is called when a local user has been created.After this hook User::saveSettings is called t...
onPageHistoryPager__getQueryInfo( $pager, &$queryInfo)
This hook is called when a history pager query parameter set is constructed.1.35bool|void True or no ...
onArticlePurge( $wikiPage)
This hook is called before executing "&action=purge".1.35bool|void True or no return value to continu...
onArticleProtect( $wikiPage, $user, $protect, $reason)
This hook is called before an article is protected.1.35bool|void True or no return value to continue ...
onMarkPatrolledComplete( $rcid, $user, $wcOnlySysopsCanPatrol, $auto)
This hook is called after an edit is marked patrolled.1.35bool|void True or no return value to contin...
onFetchChangesList( $user, $skin, &$list, $groups)
This hook is called when fetching the ChangesList derivative for a particular user....
onPageRenderingHash(&$confstr, $user, &$forOptions)
NOTE: Consider using ParserOptionsRegister instead.Use this hook to alter the parser cache option has...
onImagePageFindFile( $page, &$file, &$displayFile)
This hook is called when fetching the file associated with an image page.1.35bool|void True or no ret...
onInterwikiLoadPrefix( $prefix, &$iwData)
This hook is called when resolving whether a given prefix is an interwiki or not.1....
onSearchDataForIndex(&$fields, $handler, $page, $output, $engine)
Use this hook to add data to search document.Allows you to add any data to the field map used to inde...
onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader, $prevlink, $oldminor, $diffOnly, $ldel, $unhide)
Use this hook to change the $oldHeader variable, which contains information about the old revision,...
onMessageCacheFetchOverrides(array &$messages)
This hook is called to fetch overrides.Use this hook to override message keys for customisations....
onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision)
This hook is called after moving an article (title), post-commit.1.35bool|void True or no return valu...
onParserModifyImageHTML(Parser $parser, File $file, array $params, string &$html)
This hook is called for each image added to parser output, with its associated HTML as returned from ...
onWebRequestPathInfoRouter( $router)
This hook is called while building the MediaWiki\Request\PathRouter to parse the REQUEST_URI....
onOutputPageCheckLastModified(&$modifiedTimes, $out)
This hook is called when checking if the page has been modified since the last visit....
onUserGetEmail( $user, &$email)
This hook is called when getting an user email address.1.35bool|void True or no return value to conti...
onNamespaceIsMovable( $index, &$result)
This hook is called when determining if it is possible to move pages in a namespace....
onSkinPreloadExistence(&$titles, $skin)
Use this hook to supply titles that should be added to link existence cache before the page is render...
onRenameUserComplete(int $uid, string $old, string $new)
Called after a user was renamed.
onSpecialListusersHeader( $pager, &$out)
This hook is called after adding the submit button in UsersPager::getPageHeader()....
onListDefinedTags(&$tags)
This hook is called when trying to find all defined tags.1.35bool|void True or no return value to con...
onAuthChangeFormFields( $requests, $fieldInfo, &$formDescriptor, $action)
This hook is called after converting a field information array obtained from a set of AuthenticationR...
onCategoryAfterPageAdded( $category, $wikiPage)
This hook is called after a page is added to a category.1.35bool|void True or no return value to cont...
onMessageCache__get(&$key)
This hook is called when fetching a message.Use this hook to override the key for customisations....
onUserRemoveGroup( $user, &$group)
This hook is called when removing a group.1.35bool|void True or no return value to continue or false ...
onImagePageAfterImageLinks( $imagePage, &$html)
This hook is called after the image links section on an image page is built.1.35bool|void True or no ...
onCanonicalNamespaces(&$namespaces)
Use this hook to add namespaces or alter the defaults.Note that if you need to specify namespace prot...
onIsValidPassword( $password, &$result, $user)
Use this hook to override the result of User::isValidPassword()1.35bool|void True or no return value ...
onUploadForm_BeforeProcessing( $upload)
This hook is called at the beginning of processUpload().Lets you poke at member variables like $mUplo...
onArticleDeleteAfterSuccess( $title, $outputPage)
Use this hook to modify the output after an article has been deleted.1.35bool|void True or no return ...
onHtmlPageLinkRendererEnd( $linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret)
This hook is called when generating internal and interwiki links in LinkRenderer, just before the fun...
onUserGetDefaultOptions(&$defaultOptions)
This hook is called after fetching core default user options but before returning the options....
onContentHandlerDefaultModelFor( $title, &$model)
This hook is called when the default content model is determined for a given title....
onGetInternalURL( $title, &$url, $query)
Use this hook to modify fully-qualified URLs used for squid cache purging.1.35bool|void True or no re...
onSkinTemplateGetLanguageLink(&$languageLink, $languageLinkTitle, $title, $outputPage)
This hook is called after building the data for a language link from which the actual html is constru...
onWfShellWikiCmd(&$script, &$parameters, &$options)
This hook is called when generating a shell-escaped command line string to run a MediaWiki CLI script...
onRenameUserAbort(int $uid, string $old, string $new)
Allows the renaming to be aborted.bool|void
onSpecialRandomGetRandomTitle(&$randstr, &$isRedir, &$namespaces, &$extra, &$title)
This hook is called during the execution of Special:Random,.Use this to change some selection criteri...
onCategoryPageView( $catpage)
This hook is called before viewing a categorypage in CategoryPage::view.1.35bool|void True or no retu...
onEditPageBeforeConflictDiff( $editor, $out)
Use this hook to modify the EditPage object and output when there's an edit conflict....
onSearchResultInitFromTitle( $title, &$id)
Use this hook to set the revision used when displaying a page in search results.1....
onLinkerMakeExternalImage(&$url, &$alt, &$img)
onSpecialWhatLinksHereQuery( $table, $data, $queryBuilder)
Use this hook to modify the query used by Special:WhatLinksHere.Implement the SpecialPageBeforeFormDi...
onGetNewMessagesAlert(&$newMessagesAlert, $newtalks, $user, $out)
Use this hook to disable or modify the new messages alert.1.35bool|void True or no return value to co...
onUserLoggedIn( $user)
This hook is called after a user is logged in.1.35bool|void True or no return value to continue or fa...
onGetLinkColours( $linkcolour_ids, &$colours, $title)
Use this hook to modify the CSS class of an array of page links.1.35bool|void True or no return value...
onParserCloned( $parser)
This hook is called when the parser is cloned.1.35bool|void True or no return value to continue or fa...
onEnhancedChangesListModifyBlockLineData( $changesList, &$data, $rc)
Use this hook to alter data used to build a non-grouped recent change line in EnhancedChangesList....
onWgQueryPages(&$qp)
This hook is called when initialising list of QueryPage subclasses.Use this hook to add new query pag...
Class that generates HTML for internal links.
Class for creating new log entries and inserting them into the database.
Represent and format a single name and email address pair for SMTP.
This is one of the Core classes and should be read at least once by any new developers.
Legacy class representing an editable page and handling UI for some page actions.
Definition Article.php:65
Base representation for an editable wiki page.
Definition WikiPage.php:82
Set options of the Parser.
ParserOutput is a rendering of a Content object or a message.
PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for ma...
Definition Parser.php:134
A StatusValue for permission errors.
Class which performs the actual renaming of users.
Page revision base class.
Contain a class for special pages.
Manages data for an authenticated session.
Definition Session.php:37
The base class for all skins.
Definition Skin.php:54
Parent class for all special pages.
Represents a title within MediaWiki.
Definition Title.php:69
Generic operation result class Has warning/error list, boolean status and arbitrary value.
Build SELECT queries with a fluent interface.
return[ 'config-schema-inverse'=>['default'=>['ConfigRegistry'=>['main'=> 'MediaWiki\\Config\\GlobalVarConfig::newInstance',], 'Sitename'=> 'MediaWiki', 'Server'=> false, 'CanonicalServer'=> false, 'ServerName'=> false, 'AssumeProxiesUseDefaultProtocolPorts'=> true, 'HttpsPort'=> 443, 'ForceHTTPS'=> false, 'ScriptPath'=> '/wiki', 'UsePathInfo'=> null, 'Script'=> false, 'LoadScript'=> false, 'RestPath'=> false, 'StylePath'=> false, 'LocalStylePath'=> false, 'ExtensionAssetsPath'=> false, 'ExtensionDirectory'=> null, 'StyleDirectory'=> null, 'ArticlePath'=> false, 'UploadPath'=> false, 'ImgAuthPath'=> false, 'ThumbPath'=> false, 'UploadDirectory'=> false, 'FileCacheDirectory'=> false, 'Logo'=> false, 'Logos'=> false, 'Favicon'=> '/favicon.ico', 'AppleTouchIcon'=> false, 'ReferrerPolicy'=> false, 'TmpDirectory'=> false, 'UploadBaseUrl'=> '', 'UploadStashScalerBaseUrl'=> false, 'ActionPaths'=>[], 'MainPageIsDomainRoot'=> false, 'EnableUploads'=> false, 'UploadStashMaxAge'=> 21600, 'EnableAsyncUploads'=> false, 'EnableAsyncUploadsByURL'=> false, 'UploadMaintenance'=> false, 'IllegalFileChars'=> ':\\/\\\\', 'DeletedDirectory'=> false, 'ImgAuthDetails'=> false, 'ImgAuthUrlPathMap'=>[], 'LocalFileRepo'=>['class'=> 'MediaWiki\\FileRepo\\LocalRepo', 'name'=> 'local', 'directory'=> null, 'scriptDirUrl'=> null, 'favicon'=> null, 'url'=> null, 'hashLevels'=> null, 'thumbScriptUrl'=> null, 'transformVia404'=> null, 'deletedDir'=> null, 'deletedHashLevels'=> null, 'updateCompatibleMetadata'=> null, 'reserializeMetadata'=> null,], 'ForeignFileRepos'=>[], 'UseInstantCommons'=> false, 'UseSharedUploads'=> false, 'SharedUploadDirectory'=> null, 'SharedUploadPath'=> null, 'HashedSharedUploadDirectory'=> true, 'RepositoryBaseUrl'=> 'https:'FetchCommonsDescriptions'=> false, 'SharedUploadDBname'=> false, 'SharedUploadDBprefix'=> '', 'CacheSharedUploads'=> true, 'ForeignUploadTargets'=>['local',], 'UploadDialog'=>['fields'=>['description'=> true, 'date'=> false, 'categories'=> false,], 'licensemessages'=>['local'=> 'generic-local', 'foreign'=> 'generic-foreign',], 'comment'=>['local'=> '', 'foreign'=> '',], 'format'=>['filepage'=> ' $DESCRIPTION', 'description'=> ' $TEXT', 'ownwork'=> '', 'license'=> '', 'uncategorized'=> '',],], 'FileBackends'=>[], 'LockManagers'=>[], 'ShowEXIF'=> null, 'UpdateCompatibleMetadata'=> false, 'AllowCopyUploads'=> false, 'CopyUploadsDomains'=>[], 'CopyUploadsFromSpecialUpload'=> false, 'CopyUploadProxy'=> false, 'CopyUploadTimeout'=> false, 'CopyUploadAllowOnWikiDomainConfig'=> false, 'MaxUploadSize'=> 104857600, 'MinUploadChunkSize'=> 1024, 'UploadNavigationUrl'=> false, 'UploadMissingFileUrl'=> false, 'ThumbnailScriptPath'=> false, 'SharedThumbnailScriptPath'=> false, 'HashedUploadDirectory'=> true, 'CSPUploadEntryPoint'=> true, 'FileExtensions'=>['png', 'gif', 'jpg', 'jpeg', 'webp',], 'ProhibitedFileExtensions'=>['html', 'htm', 'js', 'jsb', 'mhtml', 'mht', 'xhtml', 'xht', 'php', 'phtml', 'php3', 'php4', 'php5', 'phps', 'phar', 'shtml', 'jhtml', 'pl', 'py', 'cgi', 'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl', 'xml',], 'MimeTypeExclusions'=>['text/html', 'application/javascript', 'text/javascript', 'text/x-javascript', 'application/x-shellscript', 'application/x-php', 'text/x-php', 'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh', 'text/scriptlet', 'application/x-msdownload', 'application/x-msmetafile', 'application/java', 'application/xml', 'text/xml',], 'CheckFileExtensions'=> true, 'StrictFileExtensions'=> true, 'DisableUploadScriptChecks'=> false, 'UploadSizeWarning'=> false, 'TrustedMediaFormats'=>['BITMAP', 'AUDIO', 'VIDEO', 'image/svg+xml', 'application/pdf',], 'MediaHandlers'=>[], 'NativeImageLazyLoading'=> false, 'ParserTestMediaHandlers'=>['image/jpeg'=> 'MockBitmapHandler', 'image/png'=> 'MockBitmapHandler', 'image/gif'=> 'MockBitmapHandler', 'image/tiff'=> 'MockBitmapHandler', 'image/webp'=> 'MockBitmapHandler', 'image/x-ms-bmp'=> 'MockBitmapHandler', 'image/x-bmp'=> 'MockBitmapHandler', 'image/x-xcf'=> 'MockBitmapHandler', 'image/svg+xml'=> 'MockSvgHandler', 'image/vnd.djvu'=> 'MockDjVuHandler',], 'UseImageResize'=> true, 'UseImageMagick'=> false, 'ImageMagickConvertCommand'=> '/usr/bin/convert', 'MaxInterlacingAreas'=>[], 'SharpenParameter'=> '0x0.4', 'SharpenReductionThreshold'=> 0.85, 'ImageMagickTempDir'=> false, 'CustomConvertCommand'=> false, 'JpegTran'=> '/usr/bin/jpegtran', 'JpegPixelFormat'=> 'yuv420', 'JpegQuality'=> 80, 'Exiv2Command'=> '/usr/bin/exiv2', 'Exiftool'=> '/usr/bin/exiftool', 'SVGConverters'=>['ImageMagick'=> ' $path/convert -background "#ffffff00" -thumbnail $widthx$height\\! $input PNG:$output', 'inkscape'=> ' $path/inkscape -w $width -o $output $input', 'batik'=> 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input', 'rsvg'=> ' $path/rsvg-convert -w $width -h $height -o $output $input', 'ImagickExt'=>['SvgHandler::rasterizeImagickExt',],], 'SVGConverter'=> 'ImageMagick', 'SVGConverterPath'=> '', 'SVGMaxSize'=> 5120, 'SVGMetadataCutoff'=> 5242880, 'SVGNativeRendering'=> true, 'SVGNativeRenderingSizeLimit'=> 51200, 'MediaInTargetLanguage'=> true, 'MaxImageArea'=> 12500000, 'MaxAnimatedGifArea'=> 12500000, 'TiffThumbnailType'=>[], 'ThumbnailEpoch'=> '20030516000000', 'AttemptFailureEpoch'=> 1, 'IgnoreImageErrors'=> false, 'GenerateThumbnailOnParse'=> true, 'ShowArchiveThumbnails'=> true, 'EnableAutoRotation'=> null, 'Antivirus'=> null, 'AntivirusSetup'=>['clamav'=>['command'=> 'clamscan --no-summary ', 'codemap'=>[0=> 0, 1=> 1, 52=> -1, ' *'=> false,], 'messagepattern'=> '/.*?:(.*)/sim',],], 'AntivirusRequired'=> true, 'VerifyMimeType'=> true, 'MimeTypeFile'=> 'internal', 'MimeInfoFile'=> 'internal', 'MimeDetectorCommand'=> null, 'TrivialMimeDetection'=> false, 'XMLMimeTypes'=>['http:'svg'=> 'image/svg+xml', 'http:'http:'html'=> 'text/html',], 'ImageLimits'=>[[320, 240,], [640, 480,], [800, 600,], [1024, 768,], [1280, 1024,], [2560, 2048,],], 'ThumbLimits'=>[120, 150, 180, 200, 220, 250, 300, 400,], 'ThumbnailNamespaces'=>[6,], 'ThumbnailSteps'=> null, 'ThumbnailStepsRatio'=> null, 'ThumbnailBuckets'=> null, 'ThumbnailMinimumBucketDistance'=> 50, 'UploadThumbnailRenderMap'=>[], 'UploadThumbnailRenderMethod'=> 'jobqueue', 'UploadThumbnailRenderHttpCustomHost'=> false, 'UploadThumbnailRenderHttpCustomDomain'=> false, 'UseTinyRGBForJPGThumbnails'=> false, 'GalleryOptions'=>[], 'ThumbUpright'=> 0.75, 'DirectoryMode'=> 511, 'ResponsiveImages'=> true, 'ImagePreconnect'=> false, 'TrackMediaRequestProvenance'=> false, 'DjvuUseBoxedCommand'=> false, 'DjvuDump'=> null, 'DjvuRenderer'=> null, 'DjvuTxt'=> null, 'DjvuPostProcessor'=> 'pnmtojpeg', 'DjvuOutputExtension'=> 'jpg', 'EmergencyContact'=> false, 'PasswordSender'=> false, 'NoReplyAddress'=> false, 'EnableEmail'=> true, 'EnableUserEmail'=> true, 'UserEmailUseReplyTo'=> true, 'PasswordReminderResendTime'=> 24, 'NewPasswordExpiry'=> 604800, 'UserEmailConfirmationTokenExpiry'=> 604800, 'PasswordExpirationDays'=> false, 'PasswordExpireGrace'=> 604800, 'SMTP'=> false, 'AdditionalMailParams'=> null, 'AllowHTMLEmail'=> false, 'EnotifFromEditor'=> false, 'EmailAuthentication'=> true, 'EmailConfirmationBanner'=> false, 'EnotifWatchlist'=> false, 'EnotifUserTalk'=> false, 'EnotifRevealEditorAddress'=> false, 'EnotifMinorEdits'=> true, 'EnotifUseRealName'=> false, 'UsersNotifiedOnAllChanges'=>[], 'DBname'=> 'my_wiki', 'DBmwschema'=> null, 'DBprefix'=> '', 'DBserver'=> 'localhost', 'DBport'=> 5432, 'DBuser'=> 'wikiuser', 'DBpassword'=> '', 'DBtype'=> 'mysql', 'DBssl'=> false, 'DBcompress'=> false, 'DBStrictWarnings'=> false, 'DBadminuser'=> null, 'DBadminpassword'=> null, 'SearchType'=> null, 'SearchTypeAlternatives'=> null, 'DBTableOptions'=> 'ENGINE=InnoDB, DEFAULT CHARSET=binary', 'SQLMode'=> '', 'SQLiteDataDir'=> '', 'SharedDB'=> null, 'SharedPrefix'=> false, 'SharedTables'=>['user', 'user_properties', 'user_autocreate_serial',], 'SharedSchema'=> false, 'DBservers'=> false, 'LBFactoryConf'=>['class'=> 'Wikimedia\\Rdbms\\LBFactorySimple',], 'DataCenterUpdateStickTTL'=> 10, 'DBerrorLog'=> false, 'DBerrorLogTZ'=> false, 'LocalDatabases'=>[], 'DatabaseReplicaLagWarning'=> 10, 'DatabaseReplicaLagCritical'=> 30, 'MaxExecutionTimeForExpensiveQueries'=> 0, 'VirtualDomainsMapping'=>[], 'FileSchemaMigrationStage'=> 3, 'ExternalLinksDomainGaps'=>[], 'ContentHandlers'=>['wikitext'=>['class'=> 'MediaWiki\\Content\\WikitextContentHandler', 'services'=>['TitleFactory', 'ParserFactory', 'GlobalIdGenerator', 'LanguageNameUtils', 'LinkRenderer', 'MagicWordFactory', 'ParsoidParserFactory',],], 'javascript'=>['class'=> 'MediaWiki\\Content\\JavaScriptContentHandler', 'services'=>['MainConfig', 'ParserFactory', 'UserOptionsLookup',],], 'json'=>['class'=> 'MediaWiki\\Content\\JsonContentHandler', 'services'=>['ParsoidParserFactory', 'TitleFactory',],], 'css'=>['class'=> 'MediaWiki\\Content\\CssContentHandler', 'services'=>['MainConfig', 'ParserFactory', 'UserOptionsLookup',],], 'vue'=>['class'=> 'MediaWiki\\Content\\VueContentHandler', 'services'=>['MainConfig', 'ParserFactory',],], 'text'=> 'MediaWiki\\Content\\TextContentHandler', 'unknown'=> 'MediaWiki\\Content\\FallbackContentHandler',], 'NamespaceContentModels'=>[], 'TextModelsToParse'=>['wikitext', 'javascript', 'css',], 'CompressRevisions'=> false, 'ExternalStores'=>[], 'ExternalServers'=>[], 'DefaultExternalStore'=> false, 'RevisionCacheExpiry'=> 604800, 'PageLanguageUseDB'=> false, 'DiffEngine'=> null, 'ExternalDiffEngine'=> false, 'Wikidiff2Options'=>[], 'RequestTimeLimit'=> null, 'TransactionalTimeLimit'=> 120, 'CriticalSectionTimeLimit'=> 180.0, 'MiserMode'=> false, 'DisableQueryPages'=> false, 'QueryCacheLimit'=> 1000, 'WantedPagesThreshold'=> 1, 'AllowSlowParserFunctions'=> false, 'AllowSchemaUpdates'=> true, 'MaxArticleSize'=> 2048, 'MemoryLimit'=> '50M', 'PoolCounterConf'=> null, 'PoolCountClientConf'=>['servers'=>['127.0.0.1',], 'timeout'=> 0.1,], 'MaxUserDBWriteDuration'=> false, 'MaxJobDBWriteDuration'=> false, 'LinkHolderBatchSize'=> 1000, 'MaximumMovedPages'=> 100, 'ForceDeferredUpdatesPreSend'=> false, 'MultiShardSiteStats'=> false, 'CacheDirectory'=> false, 'MainCacheType'=> 0, 'MessageCacheType'=> -1, 'ParserCacheType'=> -1, 'SessionCacheType'=> -1, 'AnonSessionCacheType'=> false, 'LanguageConverterCacheType'=> -1, 'ObjectCaches'=>[0=>['class'=> 'Wikimedia\\ObjectCache\\EmptyBagOStuff', 'reportDupes'=> false,], 1=>['class'=> 'MediaWiki\\ObjectCache\\SqlBagOStuff', 'loggroup'=> 'SQLBagOStuff',], 'memcached-php'=>['class'=> 'Wikimedia\\ObjectCache\\MemcachedPhpBagOStuff', 'loggroup'=> 'memcached',], 'memcached-pecl'=>['class'=> 'Wikimedia\\ObjectCache\\MemcachedPeclBagOStuff', 'loggroup'=> 'memcached',], 'hash'=>['class'=> 'Wikimedia\\ObjectCache\\HashBagOStuff', 'reportDupes'=> false,], 'apc'=>['class'=> 'Wikimedia\\ObjectCache\\APCUBagOStuff', 'reportDupes'=> false,], 'apcu'=>['class'=> 'Wikimedia\\ObjectCache\\APCUBagOStuff', 'reportDupes'=> false,],], 'WANObjectCache'=>[], 'MicroStashType'=> -1, 'MainStash'=> 1, 'ParsoidCacheConfig'=>['StashType'=> null, 'StashDuration'=> 86400, 'WarmParsoidParserCache'=> false,], 'ParsoidSelectiveUpdateSampleRate'=> 0, 'ParserCacheFilterConfig'=>['pcache'=>['default'=>['minCpuTime'=> 0,],], 'postproc-pcache'=>['default'=>['minCpuTime'=> 9223372036854775807,],], 'parsoid-pcache'=>['default'=>['minCpuTime'=> 0,],], 'postproc-parsoid-pcache'=>['default'=>['minCpuTime'=> 0,],],], 'ChronologyProtectorSecret'=> '', 'ParserCacheExpireTime'=> 86400, 'ParserCacheAsyncExpireTime'=> 60, 'ParserCacheAsyncRefreshJobs'=> true, 'OldRevisionParserCacheExpireTime'=> 3600, 'ObjectCacheSessionExpiry'=> 3600, 'PHPSessionHandling'=> 'warn', 'SuspiciousIpExpiry'=> false, 'SessionPbkdf2Iterations'=> 10001, 'UseSessionCookieJwt'=> false, 'JwtSessionCookieIssuer'=> null, 'MemCachedServers'=>['127.0.0.1:11211',], 'MemCachedPersistent'=> false, 'MemCachedTimeout'=> 500000, 'UseLocalMessageCache'=> false, 'AdaptiveMessageCache'=> false, 'LocalisationCacheConf'=>['class'=> 'MediaWiki\\Language\\LocalisationCache', 'store'=> 'detect', 'storeClass'=> false, 'storeDirectory'=> false, 'storeServer'=>[], 'forceRecache'=> false, 'manualRecache'=> false,], 'CachePages'=> true, 'CacheEpoch'=> '20030516000000', 'GitInfoCacheDirectory'=> false, 'UseFileCache'=> false, 'FileCacheDepth'=> 2, 'RenderHashAppend'=> '', 'EnableSidebarCache'=> false, 'SidebarCacheExpiry'=> 86400, 'UseGzip'=> false, 'InvalidateCacheOnLocalSettingsChange'=> true, 'ExtensionInfoMTime'=> false, 'EnableRemoteBagOStuffTests'=> false, 'UseCdn'=> false, 'VaryOnXFP'=> false, 'InternalServer'=> false, 'CdnMaxAge'=> 18000, 'CdnMaxageLagged'=> 30, 'CdnMaxageStale'=> 10, 'CdnReboundPurgeDelay'=> 0, 'CdnMaxageSubstitute'=> 60, 'ForcedRawSMaxage'=> 300, 'CdnServers'=>[], 'CdnServersNoPurge'=>[], 'HTCPRouting'=>[], 'HTCPMulticastTTL'=> 1, 'UsePrivateIPs'=> false, 'CdnMatchParameterOrder'=> true, 'LanguageCode'=> 'en', 'GrammarForms'=>[], 'InterwikiMagic'=> true, 'HideInterlanguageLinks'=> false, 'ExtraInterlanguageLinkPrefixes'=>[], 'InterlanguageLinkCodeMap'=>[], 'ExtraLanguageNames'=>[], 'ExtraLanguageCodes'=>['bh'=> 'bho', 'no'=> 'nb', 'simple'=> 'en',], 'DummyLanguageCodes'=>[], 'AllUnicodeFixes'=> false, 'LegacyEncoding'=> false, 'AmericanDates'=> false, 'TranslateNumerals'=> true, 'UseDatabaseMessages'=> true, 'MaxMsgCacheEntrySize'=> 10000, 'DisableLangConversion'=> false, 'DisableTitleConversion'=> false, 'DefaultLanguageVariant'=> false, 'UsePigLatinVariant'=> false, 'DisabledVariants'=>[], 'VariantArticlePath'=> false, 'UseXssLanguage'=> false, 'LoginLanguageSelector'=> false, 'ForceUIMsgAsContentMsg'=>[], 'RawHtmlMessages'=>[], 'Localtimezone'=> null, 'LocalTZoffset'=> null, 'OverrideUcfirstCharacters'=>[], 'MimeType'=> 'text/html', 'Html5Version'=> null, 'EditSubmitButtonLabelPublish'=> false, 'XhtmlNamespaces'=>[], 'SiteNotice'=> '', 'BrowserFormatDetection'=> 'telephone=no', 'SkinMetaTags'=>[], 'DefaultSkin'=> 'vector-2022', 'FallbackSkin'=> 'fallback', 'SkipSkins'=>[], 'DisableOutputCompression'=> false, 'FragmentMode'=>['html5', 'legacy',], 'ExternalInterwikiFragmentMode'=> 'legacy', 'FooterIcons'=>['copyright'=>['copyright'=>[],], 'poweredby'=>['mediawiki'=>['src'=> null, 'url'=> 'https:'alt'=> 'Powered by MediaWiki', 'lang'=> 'en',],],], 'UseCombinedLoginLink'=> false, 'Edititis'=> false, 'Send404Code'=> true, 'ShowRollbackEditCount'=> 10, 'EnableCanonicalServerLink'=> false, 'InterwikiLogoOverride'=>[], 'ResourceModules'=>[], 'ResourceModuleSkinStyles'=>[], 'ResourceLoaderSources'=>[], 'ResourceBasePath'=> null, 'ResourceLoaderMaxage'=>[], 'ResourceLoaderDebug'=> false, 'ResourceLoaderMaxQueryLength'=> false, 'ResourceLoaderValidateJS'=> true, 'ResourceLoaderEnableJSProfiler'=> false, 'ResourceLoaderStorageEnabled'=> true, 'ResourceLoaderStorageVersion'=> 1, 'ResourceLoaderEnableSourceMapLinks'=> true, 'AllowSiteCSSOnRestrictedPages'=> false, 'VueDevelopmentMode'=> false, 'CodexDevelopmentDir'=> null, 'MetaNamespace'=> false, 'MetaNamespaceTalk'=> false, 'CanonicalNamespaceNames'=>[-2=> 'Media', -1=> 'Special', 0=> '', 1=> 'Talk', 2=> 'User', 3=> 'User_talk', 4=> 'Project', 5=> 'Project_talk', 6=> 'File', 7=> 'File_talk', 8=> 'MediaWiki', 9=> 'MediaWiki_talk', 10=> 'Template', 11=> 'Template_talk', 12=> 'Help', 13=> 'Help_talk', 14=> 'Category', 15=> 'Category_talk',], 'ExtraNamespaces'=>[], 'ExtraGenderNamespaces'=>[], 'NamespaceAliases'=>[], 'LegalTitleChars'=> ' %!"$&\'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF+', 'CapitalLinks' => true, 'CapitalLinkOverrides' => [ ], 'NamespacesWithSubpages' => [ 1 => true, 2 => true, 3 => true, 4 => true, 5 => true, 7 => true, 8 => true, 9 => true, 10 => true, 11 => true, 12 => true, 13 => true, 15 => true, ], 'ContentNamespaces' => [ 0, ], 'ShortPagesNamespaceExclusions' => [ ], 'ExtraSignatureNamespaces' => [ ], 'InvalidRedirectTargets' => [ 'Filepath', 'Mypage', 'Mytalk', 'Redirect', 'Mylog', ], 'DisableHardRedirects' => false, 'FixDoubleRedirects' => false, 'LocalInterwikis' => [ ], 'InterwikiExpiry' => 10800, 'InterwikiCache' => false, 'InterwikiScopes' => 3, 'InterwikiFallbackSite' => 'wiki', 'RedirectSources' => false, 'SiteTypes' => [ 'mediawiki' => 'MediaWiki\\Site\\MediaWikiSite', ], 'MaxTocLevel' => 999, 'MaxPPNodeCount' => 1000000, 'MaxTemplateDepth' => 100, 'MaxPPExpandDepth' => 100, 'UrlProtocols' => [ 'bitcoin:', 'ftp: 'ftps: 'geo:', 'git: 'gopher: 'http: 'https: 'irc: 'ircs: 'magnet:', 'mailto:', 'matrix:', 'mms: 'news:', 'nntp: 'redis: 'sftp: 'sip:', 'sips:', 'sms:', 'ssh: 'svn: 'tel:', 'telnet: 'urn:', 'wikipedia: 'worldwind: 'xmpp:', ' ], 'CleanSignatures' => true, 'AllowExternalImages' => false, 'AllowExternalImagesFrom' => '', 'EnableImageWhitelist' => false, 'TidyConfig' => [ ], 'ParsoidSettings' => [ 'useSelser' => true, ], 'ParsoidExperimentalParserFunctionOutput' => false, 'UseLegacyMediaStyles' => false, 'RawHtml' => false, 'ExternalLinkTarget' => false, 'NoFollowLinks' => true, 'NoFollowNsExceptions' => [ ], 'NoFollowDomainExceptions' => [ 'mediawiki.org', ], 'RegisterInternalExternals' => false, 'ExternalLinksIgnoreDomains' => [ ], 'AllowDisplayTitle' => true, 'RestrictDisplayTitle' => true, 'ExpensiveParserFunctionLimit' => 100, 'PreprocessorCacheThreshold' => 1000, 'EnableScaryTranscluding' => false, 'TranscludeCacheExpiry' => 3600, 'EnableMagicLinks' => [ 'ISBN' => false, 'PMID' => false, 'RFC' => false, ], 'ParserEnableUserLanguage' => false, 'ArticleCountMethod' => 'link', 'ActiveUserDays' => 30, 'LearnerEdits' => 10, 'LearnerMemberSince' => 4, 'ExperiencedUserEdits' => 500, 'ExperiencedUserMemberSince' => 30, 'ManualRevertSearchRadius' => 15, 'RevertedTagMaxDepth' => 15, 'CentralIdLookupProviders' => [ 'local' => [ 'class' => 'MediaWiki\\User\\CentralId\\LocalIdLookup', 'services' => [ 'MainConfig', 'DBLoadBalancerFactory', 'HideUserUtils', ], ], ], 'CentralIdLookupProvider' => 'local', 'UserRegistrationProviders' => [ 'local' => [ 'class' => 'MediaWiki\\User\\Registration\\LocalUserRegistrationProvider', 'services' => [ 'ConnectionProvider', ], ], ], 'PasswordPolicy' => [ 'policies' => [ 'bureaucrat' => [ 'MinimalPasswordLength' => 10, 'MinimumPasswordLengthToLogin' => 1, ], 'sysop' => [ 'MinimalPasswordLength' => 10, 'MinimumPasswordLengthToLogin' => 1, ], 'interface-admin' => [ 'MinimalPasswordLength' => 10, 'MinimumPasswordLengthToLogin' => 1, ], 'bot' => [ 'MinimalPasswordLength' => 10, 'MinimumPasswordLengthToLogin' => 1, ], 'default' => [ 'MinimalPasswordLength' => [ 'value' => 8, 'suggestChangeOnLogin' => true, ], 'PasswordCannotBeSubstringInUsername' => [ 'value' => true, 'suggestChangeOnLogin' => true, ], 'PasswordCannotMatchDefaults' => [ 'value' => true, 'suggestChangeOnLogin' => true, ], 'MaximalPasswordLength' => [ 'value' => 4096, 'suggestChangeOnLogin' => true, ], 'PasswordNotInCommonList' => [ 'value' => true, 'suggestChangeOnLogin' => true, ], ], ], 'checks' => [ 'MinimalPasswordLength' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkMinimalPasswordLength', ], 'MinimumPasswordLengthToLogin' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkMinimumPasswordLengthToLogin', ], 'PasswordCannotBeSubstringInUsername' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkPasswordCannotBeSubstringInUsername', ], 'PasswordCannotMatchDefaults' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkPasswordCannotMatchDefaults', ], 'MaximalPasswordLength' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkMaximalPasswordLength', ], 'PasswordNotInCommonList' => [ 'MediaWiki\\Password\\PasswordPolicyChecks', 'checkPasswordNotInCommonList', ], ], ], 'AuthManagerConfig' => null, 'AuthManagerAutoConfig' => [ 'preauth' => [ 'MediaWiki\\Auth\\ThrottlePreAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\ThrottlePreAuthenticationProvider', 'sort' => 0, ], ], 'primaryauth' => [ 'MediaWiki\\Auth\\TemporaryPasswordPrimaryAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\TemporaryPasswordPrimaryAuthenticationProvider', 'services' => [ 'DBLoadBalancerFactory', 'UserOptionsLookup', ], 'args' => [ [ 'authoritative' => false, ], ], 'sort' => 0, ], 'MediaWiki\\Auth\\LocalPasswordPrimaryAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\LocalPasswordPrimaryAuthenticationProvider', 'services' => [ 'DBLoadBalancerFactory', ], 'args' => [ [ 'authoritative' => true, ], ], 'sort' => 100, ], ], 'secondaryauth' => [ 'MediaWiki\\Auth\\CheckBlocksSecondaryAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\CheckBlocksSecondaryAuthenticationProvider', 'sort' => 0, ], 'MediaWiki\\Auth\\ResetPasswordSecondaryAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\ResetPasswordSecondaryAuthenticationProvider', 'sort' => 100, ], 'MediaWiki\\Auth\\EmailNotificationSecondaryAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\EmailNotificationSecondaryAuthenticationProvider', 'services' => [ 'DBLoadBalancerFactory', ], 'sort' => 200, ], ], ], 'RememberMe' => 'choose', 'ReauthenticateTime' => [ 'default' => 3600, ], 'AllowSecuritySensitiveOperationIfCannotReauthenticate' => [ 'default' => true, ], 'ChangeCredentialsBlacklist' => [ 'MediaWiki\\Auth\\TemporaryPasswordAuthenticationRequest', ], 'RemoveCredentialsBlacklist' => [ 'MediaWiki\\Auth\\PasswordAuthenticationRequest', ], 'InvalidPasswordReset' => true, 'PasswordDefault' => 'pbkdf2', 'PasswordConfig' => [ 'A' => [ 'class' => 'MediaWiki\\Password\\MWOldPassword', ], 'B' => [ 'class' => 'MediaWiki\\Password\\MWSaltedPassword', ], 'pbkdf2-legacyA' => [ 'class' => 'MediaWiki\\Password\\LayeredParameterizedPassword', 'types' => [ 'A', 'pbkdf2', ], ], 'pbkdf2-legacyB' => [ 'class' => 'MediaWiki\\Password\\LayeredParameterizedPassword', 'types' => [ 'B', 'pbkdf2', ], ], 'bcrypt' => [ 'class' => 'MediaWiki\\Password\\BcryptPassword', 'cost' => 9, ], 'pbkdf2' => [ 'class' => 'MediaWiki\\Password\\Pbkdf2PasswordUsingOpenSSL', 'algo' => 'sha512', 'cost' => '30000', 'length' => '64', ], 'argon2' => [ 'class' => 'MediaWiki\\Password\\Argon2Password', 'algo' => 'auto', ], ], 'PasswordResetRoutes' => [ 'username' => true, 'email' => true, ], 'MaxSigChars' => 255, 'SignatureValidation' => 'warning', 'SignatureAllowedLintErrors' => [ 'obsolete-tag', ], 'MaxNameChars' => 255, 'ReservedUsernames' => [ 'MediaWiki default', 'Conversion script', 'Maintenance script', 'Template namespace initialisation script', 'ScriptImporter', 'Delete page script', 'Move page script', 'Command line script', 'Unknown user', 'msg:double-redirect-fixer', 'msg:usermessage-editor', 'msg:proxyblocker', 'msg:sorbs', 'msg:spambot_username', 'msg:autochange-username', ], 'DefaultUserOptions' => [ 'ccmeonemails' => 0, 'date' => 'default', 'diffonly' => 0, 'diff-type' => 'table', 'disablemail' => 0, 'editfont' => 'monospace', 'editondblclick' => 0, 'editrecovery' => 0, 'editsectiononrightclick' => 0, 'email-allow-new-users' => 1, 'enotifminoredits' => 0, 'enotifrevealaddr' => 0, 'enotifusertalkpages' => 1, 'enotifwatchlistpages' => 1, 'extendwatchlist' => 1, 'fancysig' => 0, 'forceeditsummary' => 0, 'forcesafemode' => 0, 'gender' => 'unknown', 'hidecategorization' => 1, 'hideminor' => 0, 'hidepatrolled' => 0, 'imagesize' => 2, 'minordefault' => 0, 'newpageshidepatrolled' => 0, 'nickname' => '', 'norollbackdiff' => 0, 'prefershttps' => 1, 'previewonfirst' => 0, 'previewontop' => 1, 'pst-cssjs' => 1, 'rcdays' => 7, 'rcenhancedfilters-disable' => 0, 'rclimit' => 50, 'requireemail' => 0, 'search-match-redirect' => true, 'search-special-page' => 'Search', 'search-thumbnail-extra-namespaces' => true, 'searchlimit' => 20, 'showhiddencats' => 0, 'shownumberswatching' => 1, 'showrollbackconfirmation' => 0, 'skin' => false, 'skin-responsive' => 1, 'thumbsize' => 5, 'underline' => 2, 'useeditwarning' => 1, 'uselivepreview' => 0, 'usenewrc' => 1, 'watchcreations' => 1, 'watchcreations-expiry' => 'infinite', 'watchdefault' => 1, 'watchdefault-expiry' => 'infinite', 'watchdeletion' => 0, 'watchlistdays' => 7, 'watchlisthideanons' => 0, 'watchlisthidebots' => 0, 'watchlisthidecategorization' => 1, 'watchlisthideliu' => 0, 'watchlisthideminor' => 0, 'watchlisthideown' => 0, 'watchlisthidepatrolled' => 0, 'watchlistreloadautomatically' => 0, 'watchlistunwatchlinks' => 0, 'watchmoves' => 0, 'watchrollback' => 0, 'watchuploads' => 1, 'watchrollback-expiry' => 'infinite', 'watchstar-expiry' => 'infinite', 'wlenhancedfilters-disable' => 0, 'wllimit' => 250, ], 'ConditionalUserOptions' => [ ], 'HiddenPrefs' => [ ], 'UserJsPrefLimit' => 100, 'InvalidUsernameCharacters' => '@:>=', 'UserrightsInterwikiDelimiter' => '@', 'SecureLogin' => false, 'AuthenticationTokenVersion' => null, 'SessionProviders' => [ 'MediaWiki\\Session\\CookieSessionProvider' => [ 'class' => 'MediaWiki\\Session\\CookieSessionProvider', 'args' => [ [ 'priority' => 30, ], ], 'services' => [ 'JwtCodec', 'UrlUtils', ], ], 'MediaWiki\\Session\\BotPasswordSessionProvider' => [ 'class' => 'MediaWiki\\Session\\BotPasswordSessionProvider', 'args' => [ [ 'priority' => 75, ], ], 'services' => [ 'GrantsInfo', ], ], ], 'AutoCreateTempUser' => [ 'known' => false, 'enabled' => false, 'actions' => [ 'edit', ], 'genPattern' => '~$1', 'matchPattern' => null, 'reservedPattern' => '~$1', 'serialProvider' => [ 'type' => 'local', 'useYear' => true, ], 'serialMapping' => [ 'type' => 'readable-numeric', ], 'expireAfterDays' => 90, 'notifyBeforeExpirationDays' => 10, ], 'AutoblockExemptions' => [ ], 'AutoblockExpiry' => 86400, 'BlockAllowsUTEdit' => true, 'BlockCIDRLimit' => [ 'IPv4' => 16, 'IPv6' => 19, ], 'BlockDisablesLogin' => false, 'EnableMultiBlocks' => false, 'WhitelistRead' => false, 'WhitelistReadRegexp' => false, 'EmailConfirmToEdit' => false, 'HideIdentifiableRedirects' => true, 'GroupPermissions' => [ '*' => [ 'createaccount' => true, 'read' => true, 'edit' => true, 'createpage' => true, 'createtalk' => true, 'viewmyprivateinfo' => true, 'editmyprivateinfo' => true, 'editmyoptions' => true, ], 'user' => [ 'move' => true, 'move-subpages' => true, 'move-rootuserpages' => true, 'move-categorypages' => true, 'movefile' => true, 'read' => true, 'edit' => true, 'createpage' => true, 'createtalk' => true, 'upload' => true, 'reupload' => true, 'reupload-shared' => true, 'minoredit' => true, 'editmyusercss' => true, 'editmyuserjson' => true, 'editmyuserjs' => true, 'editmyuserjsredirect' => true, 'sendemail' => true, 'applychangetags' => true, 'changetags' => true, 'viewmywatchlist' => true, 'editmywatchlist' => true, 'createwithcontentmodel' => true, ], 'autoconfirmed' => [ 'autoconfirmed' => true, 'editsemiprotected' => true, ], 'bot' => [ 'bot' => true, 'autoconfirmed' => true, 'editsemiprotected' => true, 'nominornewtalk' => true, 'autopatrol' => true, 'suppressredirect' => true, 'apihighlimits' => true, ], 'sysop' => [ 'block' => true, 'createaccount' => true, 'delete' => true, 'bigdelete' => true, 'deletedhistory' => true, 'deletedtext' => true, 'undelete' => true, 'editcontentmodel' => true, 'editinterface' => true, 'editsitejson' => true, 'edituserjson' => true, 'import' => true, 'importupload' => true, 'move' => true, 'move-subpages' => true, 'move-rootuserpages' => true, 'move-categorypages' => true, 'patrol' => true, 'autopatrol' => true, 'protect' => true, 'editprotected' => true, 'rollback' => true, 'upload' => true, 'reupload' => true, 'reupload-shared' => true, 'unwatchedpages' => true, 'autoconfirmed' => true, 'editsemiprotected' => true, 'ipblock-exempt' => true, 'blockemail' => true, 'markbotedits' => true, 'apihighlimits' => true, 'browsearchive' => true, 'noratelimit' => true, 'movefile' => true, 'unblockself' => true, 'suppressredirect' => true, 'mergehistory' => true, 'managechangetags' => true, 'deletechangetags' => true, ], 'interface-admin' => [ 'editinterface' => true, 'editsitecss' => true, 'editsitejson' => true, 'editsitejs' => true, 'editusercss' => true, 'edituserjson' => true, 'edituserjs' => true, ], 'bureaucrat' => [ 'userrights' => true, 'noratelimit' => true, 'renameuser' => true, ], 'suppress' => [ 'hideuser' => true, 'suppressrevision' => true, 'viewsuppressed' => true, 'suppressionlog' => true, 'deleterevision' => true, 'deletelogentry' => true, ], ], 'PrivilegedGroups' => [ 'bureaucrat', 'interface-admin', 'suppress', 'sysop', ], 'RevokePermissions' => [ ], 'GroupInheritsPermissions' => [ ], 'ImplicitGroups' => [ '*', 'user', 'autoconfirmed', ], 'GroupsAddToSelf' => [ ], 'GroupsRemoveFromSelf' => [ ], 'RestrictedGroups' => [ ], 'UserRequirementsPrivateConditions' => [ ], 'RestrictionTypes' => [ 'create', 'edit', 'move', 'upload', ], 'RestrictionLevels' => [ '', 'autoconfirmed', 'sysop', ], 'CascadingRestrictionLevels' => [ 'sysop', ], 'SemiprotectedRestrictionLevels' => [ 'autoconfirmed', ], 'NamespaceProtection' => [ ], 'NonincludableNamespaces' => [ ], 'AutoConfirmAge' => 0, 'AutoConfirmCount' => 0, 'Autopromote' => [ 'autoconfirmed' => [ '&', [ 1, null, ], [ 2, null, ], ], ], 'AutopromoteOnce' => [ 'onEdit' => [ ], ], 'AutopromoteOnceLogInRC' => true, 'AutopromoteOnceRCExcludedGroups' => [ ], 'AddGroups' => [ ], 'RemoveGroups' => [ ], 'AvailableRights' => [ ], 'ImplicitRights' => [ ], 'DeleteRevisionsLimit' => 0, 'DeleteRevisionsBatchSize' => 1000, 'HideUserContribLimit' => 1000, 'AccountCreationThrottle' => [ [ 'count' => 0, 'seconds' => 86400, ], ], 'TempAccountCreationThrottle' => [ [ 'count' => 1, 'seconds' => 600, ], [ 'count' => 6, 'seconds' => 86400, ], ], 'TempAccountNameAcquisitionThrottle' => [ [ 'count' => 60, 'seconds' => 86400, ], ], 'SpamRegex' => [ ], 'SummarySpamRegex' => [ ], 'EnableDnsBlacklist' => false, 'DnsBlacklistUrls' => [ ], 'ProxyList' => [ ], 'ProxyWhitelist' => [ ], 'SoftBlockRanges' => [ ], 'ApplyIpBlocksToXff' => false, 'RateLimits' => [ 'edit' => [ 'ip' => [ 8, 60, ], 'newbie' => [ 8, 60, ], 'user' => [ 90, 60, ], ], 'move' => [ 'newbie' => [ 2, 120, ], 'user' => [ 8, 60, ], ], 'upload' => [ 'ip' => [ 8, 60, ], 'newbie' => [ 8, 60, ], ], 'rollback' => [ 'user' => [ 10, 60, ], 'newbie' => [ 5, 120, ], ], 'mailpassword' => [ 'ip' => [ 5, 3600, ], ], 'sendemail' => [ 'ip' => [ 5, 86400, ], 'newbie' => [ 5, 86400, ], 'user' => [ 20, 86400, ], ], 'changeemail' => [ 'ip-all' => [ 10, 3600, ], 'user' => [ 4, 86400, ], ], 'confirmemail' => [ 'ip-all' => [ 10, 3600, ], 'user' => [ 4, 86400, ], ], 'purge' => [ 'ip' => [ 30, 60, ], 'user' => [ 30, 60, ], ], 'linkpurge' => [ 'ip' => [ 30, 60, ], 'user' => [ 30, 60, ], ], 'renderfile' => [ 'ip' => [ 700, 30, ], 'user' => [ 700, 30, ], ], 'renderfile-nonstandard' => [ 'ip' => [ 70, 30, ], 'user' => [ 70, 30, ], ], 'stashedit' => [ 'ip' => [ 30, 60, ], 'newbie' => [ 30, 60, ], ], 'stashbasehtml' => [ 'ip' => [ 5, 60, ], 'newbie' => [ 5, 60, ], ], 'changetags' => [ 'ip' => [ 8, 60, ], 'newbie' => [ 8, 60, ], ], 'editcontentmodel' => [ 'newbie' => [ 2, 120, ], 'user' => [ 8, 60, ], ], ], 'RateLimitsExcludedIPs' => [ ], 'PutIPinRC' => true, 'QueryPageDefaultLimit' => 50, 'ExternalQuerySources' => [ ], 'PasswordAttemptThrottle' => [ [ 'count' => 5, 'seconds' => 300, ], [ 'count' => 150, 'seconds' => 172800, ], ], 'GrantPermissions' => [ 'basic' => [ 'autocreateaccount' => true, 'autoconfirmed' => true, 'autopatrol' => true, 'editsemiprotected' => true, 'ipblock-exempt' => true, 'nominornewtalk' => true, 'patrolmarks' => true, 'read' => true, 'unwatchedpages' => true, ], 'highvolume' => [ 'bot' => true, 'apihighlimits' => true, 'noratelimit' => true, 'markbotedits' => true, ], 'import' => [ 'import' => true, 'importupload' => true, ], 'editpage' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'pagelang' => true, ], 'editprotected' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'editprotected' => true, ], 'editmycssjs' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'editmyusercss' => true, 'editmyuserjson' => true, 'editmyuserjs' => true, ], 'editmyoptions' => [ 'editmyoptions' => true, 'editmyuserjson' => true, ], 'editinterface' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'editinterface' => true, 'edituserjson' => true, 'editsitejson' => true, ], 'editsiteconfig' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'editinterface' => true, 'edituserjson' => true, 'editsitejson' => true, 'editusercss' => true, 'edituserjs' => true, 'editsitecss' => true, 'editsitejs' => true, ], 'createeditmovepage' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'createpage' => true, 'createtalk' => true, 'delete-redirect' => true, 'move' => true, 'move-rootuserpages' => true, 'move-subpages' => true, 'move-categorypages' => true, 'suppressredirect' => true, ], 'uploadfile' => [ 'upload' => true, 'reupload-own' => true, ], 'uploadeditmovefile' => [ 'upload' => true, 'reupload-own' => true, 'reupload' => true, 'reupload-shared' => true, 'upload_by_url' => true, 'movefile' => true, 'suppressredirect' => true, ], 'patrol' => [ 'patrol' => true, ], 'rollback' => [ 'rollback' => true, ], 'blockusers' => [ 'block' => true, 'blockemail' => true, ], 'viewdeleted' => [ 'browsearchive' => true, 'deletedhistory' => true, 'deletedtext' => true, ], 'viewrestrictedlogs' => [ 'suppressionlog' => true, ], 'delete' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'browsearchive' => true, 'deletedhistory' => true, 'deletedtext' => true, 'delete' => true, 'bigdelete' => true, 'deletelogentry' => true, 'deleterevision' => true, 'undelete' => true, ], 'oversight' => [ 'suppressrevision' => true, 'viewsuppressed' => true, ], 'protect' => [ 'edit' => true, 'minoredit' => true, 'applychangetags' => true, 'changetags' => true, 'editcontentmodel' => true, 'createwithcontentmodel' => true, 'editprotected' => true, 'protect' => true, ], 'viewmywatchlist' => [ 'viewmywatchlist' => true, ], 'editmywatchlist' => [ 'editmywatchlist' => true, ], 'sendemail' => [ 'sendemail' => true, ], 'createaccount' => [ 'createaccount' => true, ], 'privateinfo' => [ 'viewmyprivateinfo' => true, ], 'mergehistory' => [ 'mergehistory' => true, ], ], 'GrantPermissionGroups' => [ 'basic' => 'hidden', 'editpage' => 'page-interaction', 'createeditmovepage' => 'page-interaction', 'editprotected' => 'page-interaction', 'patrol' => 'page-interaction', 'uploadfile' => 'file-interaction', 'uploadeditmovefile' => 'file-interaction', 'sendemail' => 'email', 'viewmywatchlist' => 'watchlist-interaction', 'editviewmywatchlist' => 'watchlist-interaction', 'editmycssjs' => 'customization', 'editmyoptions' => 'customization', 'editinterface' => 'administration', 'editsiteconfig' => 'administration', 'rollback' => 'administration', 'blockusers' => 'administration', 'delete' => 'administration', 'viewdeleted' => 'administration', 'viewrestrictedlogs' => 'administration', 'protect' => 'administration', 'oversight' => 'administration', 'createaccount' => 'administration', 'mergehistory' => 'administration', 'import' => 'administration', 'highvolume' => 'high-volume', 'privateinfo' => 'private-information', ], 'GrantRiskGroups' => [ 'basic' => 'low', 'editpage' => 'low', 'createeditmovepage' => 'low', 'editprotected' => 'vandalism', 'patrol' => 'low', 'uploadfile' => 'low', 'uploadeditmovefile' => 'low', 'sendemail' => 'security', 'viewmywatchlist' => 'low', 'editviewmywatchlist' => 'low', 'editmycssjs' => 'security', 'editmyoptions' => 'security', 'editinterface' => 'vandalism', 'editsiteconfig' => 'security', 'rollback' => 'low', 'blockusers' => 'vandalism', 'delete' => 'vandalism', 'viewdeleted' => 'vandalism', 'viewrestrictedlogs' => 'security', 'protect' => 'vandalism', 'oversight' => 'security', 'createaccount' => 'low', 'mergehistory' => 'vandalism', 'import' => 'security', 'highvolume' => 'low', 'privateinfo' => 'low', ], 'EnableBotPasswords' => true, 'BotPasswordsCluster' => false, 'BotPasswordsDatabase' => false, 'BotPasswordsLimit' => 100, 'SecretKey' => false, 'JwtPrivateKey' => false, 'JwtPublicKey' => false, 'AllowUserJs' => false, 'AllowUserCss' => false, 'AllowUserCssPrefs' => true, 'UseSiteJs' => true, 'UseSiteCss' => true, 'BreakFrames' => false, 'EditPageFrameOptions' => 'DENY', 'ApiFrameOptions' => 'DENY', 'CSPHeader' => false, 'CSPReportOnlyHeader' => false, 'CSPFalsePositiveUrls' => [ 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'https: 'chrome-extension' => true, ], 'AllowCrossOrigin' => false, 'RestAllowCrossOriginCookieAuth' => false, 'SessionSecret' => false, 'CookieExpiration' => 2592000, 'ExtendedLoginCookieExpiration' => 15552000, 'SessionCookieJwtExpiration' => 14400, 'CookieDomain' => '', 'CookiePath' => '/', 'CookieSecure' => 'detect', 'CookiePrefix' => false, 'CookieHttpOnly' => true, 'CookieSameSite' => null, 'CacheVaryCookies' => [ ], 'SessionName' => false, 'CookieSetOnAutoblock' => true, 'CookieSetOnIpBlock' => true, 'DebugLogFile' => '', 'DebugLogPrefix' => '', 'DebugRedirects' => false, 'DebugRawPage' => false, 'DebugComments' => false, 'DebugDumpSql' => false, 'TrxProfilerLimits' => [ 'GET' => [ 'masterConns' => 0, 'writes' => 0, 'readQueryTime' => 5, 'readQueryRows' => 10000, ], 'POST' => [ 'readQueryTime' => 5, 'writeQueryTime' => 1, 'readQueryRows' => 100000, 'maxAffected' => 1000, ], 'POST-nonwrite' => [ 'writes' => 0, 'readQueryTime' => 5, 'readQueryRows' => 10000, ], 'PostSend-GET' => [ 'readQueryTime' => 5, 'writeQueryTime' => 1, 'readQueryRows' => 10000, 'maxAffected' => 1000, 'masterConns' => 0, 'writes' => 0, ], 'PostSend-POST' => [ 'readQueryTime' => 5, 'writeQueryTime' => 1, 'readQueryRows' => 100000, 'maxAffected' => 1000, ], 'JobRunner' => [ 'readQueryTime' => 30, 'writeQueryTime' => 5, 'readQueryRows' => 100000, 'maxAffected' => 500, ], 'Maintenance' => [ 'writeQueryTime' => 5, 'maxAffected' => 1000, ], ], 'DebugLogGroups' => [ ], 'MWLoggerDefaultSpi' => [ 'class' => 'MediaWiki\\Logger\\LegacySpi', ], 'ShowDebug' => false, 'SpecialVersionShowHooks' => false, 'ShowExceptionDetails' => false, 'LogExceptionBacktrace' => true, 'PropagateErrors' => true, 'ShowHostnames' => false, 'OverrideHostname' => false, 'DevelopmentWarnings' => false, 'DeprecationReleaseLimit' => false, 'Profiler' => [ ], 'StatsdServer' => false, 'StatsdMetricPrefix' => 'MediaWiki', 'StatsTarget' => null, 'StatsFormat' => null, 'StatsPrefix' => 'mediawiki', 'OpenTelemetryConfig' => null, 'PageInfoTransclusionLimit' => 50, 'EnableJavaScriptTest' => false, 'CachePrefix' => false, 'DebugToolbar' => false, 'ApiClientErrorSampleRate' => 1.0, 'DisableTextSearch' => false, 'AdvancedSearchHighlighting' => false, 'SearchHighlightBoundaries' => '[\\p{Z}\\p{P}\\p{C}]', 'OpenSearchTemplates' => [ 'application/x-suggestions+json' => false, 'application/x-suggestions+xml' => false, ], 'OpenSearchDefaultLimit' => 10, 'OpenSearchDescriptionLength' => 100, 'SearchSuggestCacheExpiry' => 1200, 'DisableSearchUpdate' => false, 'NamespacesToBeSearchedDefault' => [ true, ], 'DisableInternalSearch' => false, 'SearchForwardUrl' => null, 'SitemapNamespaces' => false, 'SitemapNamespacesPriorities' => false, 'SitemapApiConfig' => [ ], 'SpecialSearchFormOptions' => [ ], 'SearchMatchRedirectPreference' => false, 'SearchRunSuggestedQuery' => true, 'Diff3' => '/usr/bin/diff3', 'Diff' => '/usr/bin/diff', 'PreviewOnOpenNamespaces' => [ 14 => true, ], 'UniversalEditButton' => true, 'UseAutomaticEditSummaries' => true, 'CommandLineDarkBg' => false, 'ReadOnly' => null, 'ReadOnlyWatchedItemStore' => false, 'ReadOnlyFile' => false, 'UpgradeKey' => false, 'GitBin' => '/usr/bin/git', 'GitRepositoryViewers' => [ 'https: 'ssh: ], 'InstallerInitialPages' => [ [ 'titlemsg' => 'mainpage', 'text' => '{{subst:int:mainpagetext}}{{subst:int:mainpagedocfooter}}', ], ], 'RCMaxAge' => 7776000, 'WatchersMaxAge' => 15552000, 'UnwatchedPageSecret' => 1, 'RCFilterByAge' => false, 'RCLinkLimits' => [ 50, 100, 250, 500, ], 'RCLinkDays' => [ 1, 3, 7, 14, 30, ], 'RCFeeds' => [ ], 'RCWatchCategoryMembership' => false, 'UseRCPatrol' => true, 'StructuredChangeFiltersLiveUpdatePollingRate' => 3, 'UseNPPatrol' => true, 'UseFilePatrol' => true, 'Feed' => true, 'FeedLimit' => 50, 'FeedCacheTimeout' => 60, 'FeedDiffCutoff' => 32768, 'OverrideSiteFeed' => [ ], 'FeedClasses' => [ 'rss' => 'MediaWiki\\Feed\\RSSFeed', 'atom' => 'MediaWiki\\Feed\\AtomFeed', ], 'AdvertisedFeedTypes' => [ 'atom', ], 'RCShowWatchingUsers' => false, 'RCShowChangedSize' => true, 'RCChangedSizeThreshold' => 500, 'ShowUpdatedMarker' => true, 'DisableAnonTalk' => false, 'UseTagFilter' => true, 'SoftwareTags' => [ 'mw-contentmodelchange' => true, 'mw-new-redirect' => true, 'mw-removed-redirect' => true, 'mw-changed-redirect-target' => true, 'mw-blank' => true, 'mw-replace' => true, 'mw-recreated' => true, 'mw-rollback' => true, 'mw-undo' => true, 'mw-manual-revert' => true, 'mw-reverted' => true, 'mw-server-side-upload' => true, 'mw-ipblock-appeal' => true, ], 'UnwatchedPageThreshold' => false, 'RecentChangesFlags' => [ 'newpage' => [ 'letter' => 'newpageletter', 'title' => 'recentchanges-label-newpage', 'legend' => 'recentchanges-legend-newpage', 'grouping' => 'any', ], 'minor' => [ 'letter' => 'minoreditletter', 'title' => 'recentchanges-label-minor', 'legend' => 'recentchanges-legend-minor', 'class' => 'minoredit', 'grouping' => 'all', ], 'bot' => [ 'letter' => 'boteditletter', 'title' => 'recentchanges-label-bot', 'legend' => 'recentchanges-legend-bot', 'class' => 'botedit', 'grouping' => 'all', ], 'unpatrolled' => [ 'letter' => 'unpatrolledletter', 'title' => 'recentchanges-label-unpatrolled', 'legend' => 'recentchanges-legend-unpatrolled', 'grouping' => 'any', ], ], 'WatchlistExpiry' => false, 'EnableWatchlistLabels' => false, 'WatchlistLabelsMaxPerUser' => 100, 'WatchlistPurgeRate' => 0.1, 'WatchlistExpiryMaxDuration' => '1 year', 'EnableChangesListQueryPartitioning' => false, 'RightsPage' => null, 'RightsUrl' => null, 'RightsText' => null, 'RightsIcon' => null, 'UseCopyrightUpload' => false, 'MaxCredits' => 0, 'ShowCreditsIfMax' => true, 'ImportSources' => [ ], 'ImportTargetNamespace' => null, 'ExportAllowHistory' => true, 'ExportMaxHistory' => 0, 'ExportAllowListContributors' => false, 'ExportMaxLinkDepth' => 0, 'ExportFromNamespaces' => false, 'ExportAllowAll' => false, 'ExportPagelistLimit' => 5000, 'XmlDumpSchemaVersion' => '0.11', 'WikiFarmSettingsDirectory' => null, 'WikiFarmSettingsExtension' => 'yaml', 'ExtensionFunctions' => [ ], 'ExtensionMessagesFiles' => [ ], 'MessagesDirs' => [ ], 'TranslationAliasesDirs' => [ ], 'ExtensionEntryPointListFiles' => [ ], 'EnableParserLimitReporting' => true, 'ValidSkinNames' => [ ], 'SpecialPages' => [ ], 'ExtensionCredits' => [ ], 'Hooks' => [ ], 'ServiceWiringFiles' => [ ], 'JobClasses' => [ 'deletePage' => 'MediaWiki\\Page\\DeletePageJob', 'refreshLinks' => 'MediaWiki\\JobQueue\\Jobs\\RefreshLinksJob', 'deleteLinks' => 'MediaWiki\\Page\\DeleteLinksJob', 'htmlCacheUpdate' => 'MediaWiki\\JobQueue\\Jobs\\HTMLCacheUpdateJob', 'sendMail' => [ 'class' => 'MediaWiki\\Mail\\EmaillingJob', 'services' => [ 'Emailer', ], ], 'enotifNotify' => [ 'class' => 'MediaWiki\\RecentChanges\\RecentChangeNotifyJob', 'services' => [ 'RecentChangeLookup', ], ], 'fixDoubleRedirect' => [ 'class' => 'MediaWiki\\JobQueue\\Jobs\\DoubleRedirectJob', 'services' => [ 'RevisionLookup', 'MagicWordFactory', 'WikiPageFactory', ], 'needsPage' => true, ], 'AssembleUploadChunks' => 'MediaWiki\\JobQueue\\Jobs\\AssembleUploadChunksJob', 'PublishStashedFile' => 'MediaWiki\\JobQueue\\Jobs\\PublishStashedFileJob', 'ThumbnailRender' => 'MediaWiki\\JobQueue\\Jobs\\ThumbnailRenderJob', 'UploadFromUrl' => 'MediaWiki\\JobQueue\\Jobs\\UploadFromUrlJob', 'recentChangesUpdate' => 'MediaWiki\\RecentChanges\\RecentChangesUpdateJob', 'refreshLinksPrioritized' => 'MediaWiki\\JobQueue\\Jobs\\RefreshLinksJob', 'refreshLinksDynamic' => 'MediaWiki\\JobQueue\\Jobs\\RefreshLinksJob', 'activityUpdateJob' => 'MediaWiki\\Watchlist\\ActivityUpdateJob', 'categoryMembershipChange' => [ 'class' => 'MediaWiki\\JobQueue\\Jobs\\CategoryMembershipChangeJob', 'services' => [ 'RecentChangeFactory', ], ], 'CategoryCountUpdateJob' => [ 'class' => 'MediaWiki\\JobQueue\\Jobs\\CategoryCountUpdateJob', 'services' => [ 'ConnectionProvider', 'NamespaceInfo', ], ], 'clearUserWatchlist' => 'MediaWiki\\Watchlist\\ClearUserWatchlistJob', 'watchlistExpiry' => 'MediaWiki\\Watchlist\\WatchlistExpiryJob', 'cdnPurge' => 'MediaWiki\\JobQueue\\Jobs\\CdnPurgeJob', 'userGroupExpiry' => 'MediaWiki\\User\\UserGroupExpiryJob', 'clearWatchlistNotifications' => 'MediaWiki\\Watchlist\\ClearWatchlistNotificationsJob', 'userOptionsUpdate' => 'MediaWiki\\User\\Options\\UserOptionsUpdateJob', 'revertedTagUpdate' => 'MediaWiki\\JobQueue\\Jobs\\RevertedTagUpdateJob', 'null' => 'MediaWiki\\JobQueue\\Jobs\\NullJob', 'userEditCountInit' => 'MediaWiki\\User\\UserEditCountInitJob', 'parsoidCachePrewarm' => [ 'class' => 'MediaWiki\\JobQueue\\Jobs\\ParsoidCachePrewarmJob', 'services' => [ 'ParserOutputAccess', 'PageStore', 'RevisionLookup', 'ParsoidSiteConfig', ], 'needsPage' => false, ], 'renameUserTable' => [ 'class' => 'MediaWiki\\RenameUser\\Job\\RenameUserTableJob', 'services' => [ 'MainConfig', 'DBLoadBalancerFactory', ], ], 'renameUserDerived' => [ 'class' => 'MediaWiki\\RenameUser\\Job\\RenameUserDerivedJob', 'services' => [ 'RenameUserFactory', 'UserFactory', ], ], 'renameUser' => [ 'class' => 'MediaWiki\\RenameUser\\Job\\RenameUserTableJob', 'services' => [ 'MainConfig', 'DBLoadBalancerFactory', ], ], ], 'JobTypesExcludedFromDefaultQueue' => [ 'AssembleUploadChunks', 'PublishStashedFile', 'UploadFromUrl', ], 'JobBackoffThrottling' => [ ], 'JobTypeConf' => [ 'default' => [ 'class' => 'MediaWiki\\JobQueue\\JobQueueDB', 'order' => 'random', 'claimTTL' => 3600, ], ], 'JobQueueIncludeInMaxLagFactor' => false, 'SpecialPageCacheUpdates' => [ 'Statistics' => [ 'MediaWiki\\Deferred\\SiteStatsUpdate', 'cacheUpdate', ], ], 'PagePropLinkInvalidations' => [ 'hiddencat' => 'categorylinks', ], 'CategoryMagicGallery' => true, 'CategoryPagingLimit' => 200, 'CategoryCollation' => 'uppercase', 'TempCategoryCollations' => [ ], 'SortedCategories' => false, 'TrackingCategories' => [ ], 'LogTypes' => [ '', 'block', 'protect', 'rights', 'delete', 'upload', 'move', 'import', 'interwiki', 'patrol', 'merge', 'suppress', 'tag', 'managetags', 'contentmodel', 'renameuser', ], 'LogRestrictions' => [ 'suppress' => 'suppressionlog', ], 'FilterLogTypes' => [ 'patrol' => true, 'tag' => true, 'newusers' => false, ], 'LogNames' => [ '' => 'all-logs-page', 'block' => 'blocklogpage', 'protect' => 'protectlogpage', 'rights' => 'rightslog', 'delete' => 'dellogpage', 'upload' => 'uploadlogpage', 'move' => 'movelogpage', 'import' => 'importlogpage', 'patrol' => 'patrol-log-page', 'merge' => 'mergelog', 'suppress' => 'suppressionlog', ], 'LogHeaders' => [ '' => 'alllogstext', 'block' => 'blocklogtext', 'delete' => 'dellogpagetext', 'import' => 'importlogpagetext', 'merge' => 'mergelogpagetext', 'move' => 'movelogpagetext', 'patrol' => 'patrol-log-header', 'protect' => 'protectlogtext', 'rights' => 'rightslogtext', 'suppress' => 'suppressionlogtext', 'upload' => 'uploadlogpagetext', ], 'LogActions' => [ ], 'LogActionsHandlers' => [ 'block/block' => [ 'class' => 'MediaWiki\\Logging\\BlockLogFormatter', 'services' => [ 'TitleParser', 'NamespaceInfo', ], ], 'block/reblock' => [ 'class' => 'MediaWiki\\Logging\\BlockLogFormatter', 'services' => [ 'TitleParser', 'NamespaceInfo', ], ], 'block/unblock' => [ 'class' => 'MediaWiki\\Logging\\BlockLogFormatter', 'services' => [ 'TitleParser', 'NamespaceInfo', ], ], 'contentmodel/change' => 'MediaWiki\\Logging\\ContentModelLogFormatter', 'contentmodel/new' => 'MediaWiki\\Logging\\ContentModelLogFormatter', 'delete/delete' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'delete/delete_redir' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'delete/delete_redir2' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'delete/event' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'delete/restore' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'delete/revision' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'import/interwiki' => 'MediaWiki\\Logging\\ImportLogFormatter', 'import/upload' => 'MediaWiki\\Logging\\ImportLogFormatter', 'interwiki/iw_add' => 'MediaWiki\\Logging\\InterwikiLogFormatter', 'interwiki/iw_delete' => 'MediaWiki\\Logging\\InterwikiLogFormatter', 'interwiki/iw_edit' => 'MediaWiki\\Logging\\InterwikiLogFormatter', 'managetags/activate' => 'MediaWiki\\Logging\\LogFormatter', 'managetags/create' => 'MediaWiki\\Logging\\LogFormatter', 'managetags/deactivate' => 'MediaWiki\\Logging\\LogFormatter', 'managetags/delete' => 'MediaWiki\\Logging\\LogFormatter', 'merge/merge' => [ 'class' => 'MediaWiki\\Logging\\MergeLogFormatter', 'services' => [ 'TitleParser', ], ], 'merge/merge-into' => [ 'class' => 'MediaWiki\\Logging\\MergeLogFormatter', 'services' => [ 'TitleParser', ], ], 'move/move' => [ 'class' => 'MediaWiki\\Logging\\MoveLogFormatter', 'services' => [ 'TitleParser', ], ], 'move/move_redir' => [ 'class' => 'MediaWiki\\Logging\\MoveLogFormatter', 'services' => [ 'TitleParser', ], ], 'patrol/patrol' => 'MediaWiki\\Logging\\PatrolLogFormatter', 'patrol/autopatrol' => 'MediaWiki\\Logging\\PatrolLogFormatter', 'protect/modify' => [ 'class' => 'MediaWiki\\Logging\\ProtectLogFormatter', 'services' => [ 'TitleParser', ], ], 'protect/move_prot' => [ 'class' => 'MediaWiki\\Logging\\ProtectLogFormatter', 'services' => [ 'TitleParser', ], ], 'protect/protect' => [ 'class' => 'MediaWiki\\Logging\\ProtectLogFormatter', 'services' => [ 'TitleParser', ], ], 'protect/unprotect' => [ 'class' => 'MediaWiki\\Logging\\ProtectLogFormatter', 'services' => [ 'TitleParser', ], ], 'renameuser/renameuser' => [ 'class' => 'MediaWiki\\Logging\\RenameuserLogFormatter', 'services' => [ 'TitleParser', ], ], 'rights/autopromote' => 'MediaWiki\\Logging\\RightsLogFormatter', 'rights/rights' => 'MediaWiki\\Logging\\RightsLogFormatter', 'suppress/block' => [ 'class' => 'MediaWiki\\Logging\\BlockLogFormatter', 'services' => [ 'TitleParser', 'NamespaceInfo', ], ], 'suppress/delete' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'suppress/event' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'suppress/reblock' => [ 'class' => 'MediaWiki\\Logging\\BlockLogFormatter', 'services' => [ 'TitleParser', 'NamespaceInfo', ], ], 'suppress/revision' => 'MediaWiki\\Logging\\DeleteLogFormatter', 'tag/update' => 'MediaWiki\\Logging\\TagLogFormatter', 'upload/overwrite' => 'MediaWiki\\Logging\\UploadLogFormatter', 'upload/revert' => 'MediaWiki\\Logging\\UploadLogFormatter', 'upload/upload' => 'MediaWiki\\Logging\\UploadLogFormatter', ], 'ActionFilteredLogs' => [ 'block' => [ 'block' => [ 'block', ], 'reblock' => [ 'reblock', ], 'unblock' => [ 'unblock', ], ], 'contentmodel' => [ 'change' => [ 'change', ], 'new' => [ 'new', ], ], 'delete' => [ 'delete' => [ 'delete', ], 'delete_redir' => [ 'delete_redir', 'delete_redir2', ], 'restore' => [ 'restore', ], 'event' => [ 'event', ], 'revision' => [ 'revision', ], ], 'import' => [ 'interwiki' => [ 'interwiki', ], 'upload' => [ 'upload', ], ], 'managetags' => [ 'create' => [ 'create', ], 'delete' => [ 'delete', ], 'activate' => [ 'activate', ], 'deactivate' => [ 'deactivate', ], ], 'move' => [ 'move' => [ 'move', ], 'move_redir' => [ 'move_redir', ], ], 'newusers' => [ 'create' => [ 'create', 'newusers', ], 'create2' => [ 'create2', ], 'autocreate' => [ 'autocreate', ], 'byemail' => [ 'byemail', ], ], 'protect' => [ 'protect' => [ 'protect', ], 'modify' => [ 'modify', ], 'unprotect' => [ 'unprotect', ], 'move_prot' => [ 'move_prot', ], ], 'rights' => [ 'rights' => [ 'rights', ], 'autopromote' => [ 'autopromote', ], ], 'suppress' => [ 'event' => [ 'event', ], 'revision' => [ 'revision', ], 'delete' => [ 'delete', ], 'block' => [ 'block', ], 'reblock' => [ 'reblock', ], ], 'upload' => [ 'upload' => [ 'upload', ], 'overwrite' => [ 'overwrite', ], 'revert' => [ 'revert', ], ], ], 'NewUserLog' => true, 'PageCreationLog' => true, 'AllowSpecialInclusion' => true, 'DisableQueryPageUpdate' => false, 'CountCategorizedImagesAsUsed' => false, 'MaxRedirectLinksRetrieved' => 500, 'RangeContributionsCIDRLimit' => [ 'IPv4' => 16, 'IPv6' => 32, ], 'Actions' => [ ], 'DefaultRobotPolicy' => 'index,follow', 'NamespaceRobotPolicies' => [ ], 'ArticleRobotPolicies' => [ ], 'ExemptFromUserRobotsControl' => null, 'DebugAPI' => false, 'APIModules' => [ ], 'APIFormatModules' => [ ], 'APIMetaModules' => [ ], 'APIPropModules' => [ ], 'APIListModules' => [ ], 'APIMaxDBRows' => 5000, 'APIMaxResultSize' => 8388608, 'APIMaxUncachedDiffs' => 1, 'APIMaxLagThreshold' => 7, 'APICacheHelpTimeout' => 3600, 'APIUselessQueryPages' => [ 'MIMEsearch', 'LinkSearch', ], 'AjaxLicensePreview' => true, 'CrossSiteAJAXdomains' => [ ], 'CrossSiteAJAXdomainExceptions' => [ ], 'AllowedCorsHeaders' => [ 'Accept', 'Accept-Language', 'Content-Language', 'Content-Type', 'Accept-Encoding', 'DNT', 'Origin', 'User-Agent', 'Api-User-Agent', 'Access-Control-Max-Age', 'Authorization', ], 'RestAPIAdditionalRouteFiles' => [ ], 'RestSandboxSpecs' => [ ], 'MaxShellMemory' => 307200, 'MaxShellFileSize' => 102400, 'MaxShellTime' => 180, 'MaxShellWallClockTime' => 180, 'ShellCgroup' => false, 'PhpCli' => '/usr/bin/php', 'ShellRestrictionMethod' => 'autodetect', 'ShellboxUrls' => [ 'default' => null, ], 'ShellboxSecretKey' => null, 'ShellboxShell' => '/bin/sh', 'HTTPTimeout' => 25, 'HTTPConnectTimeout' => 5.0, 'HTTPMaxTimeout' => 0, 'HTTPMaxConnectTimeout' => 0, 'HTTPImportTimeout' => 25, 'AsyncHTTPTimeout' => 25, 'HTTPProxy' => '', 'LocalVirtualHosts' => [ ], 'LocalHTTPProxy' => false, 'AllowExternalReqID' => false, 'GenerateReqIDFormat' => 'rand24', 'JobRunRate' => 1, 'RunJobsAsync' => false, 'UpdateRowsPerJob' => 300, 'UpdateRowsPerQuery' => 100, 'RedirectOnLogin' => null, 'VirtualRestConfig' => [ 'paths' => [ ], 'modules' => [ ], 'global' => [ 'timeout' => 360, 'forwardCookies' => false, 'HTTPProxy' => null, ], ], 'EventRelayerConfig' => [ 'default' => [ 'class' => 'Wikimedia\\EventRelayer\\EventRelayerNull', ], ], 'Pingback' => false, 'OriginTrials' => [ ], 'ReportToExpiry' => 86400, 'ReportToEndpoints' => [ ], 'FeaturePolicyReportOnly' => [ ], 'SkinsPreferred' => [ 'vector-2022', 'vector', ], 'SpecialContributeSkinsEnabled' => [ ], 'SpecialContributeNewPageTarget' => null, 'EnableEditRecovery' => false, 'EditRecoveryExpiry' => 2592000, 'UseCodexSpecialBlock' => false, 'ShowLogoutConfirmation' => false, 'EnableProtectionIndicators' => true, 'OutputPipelineStages' => [ ], 'FeatureShutdown' => [ ], 'CloneArticleParserOutput' => true, 'UseLeximorph' => false, 'UsePostprocCacheLegacy' => false, 'UsePostprocCacheParsoid' => true, 'ParserOptionsLogUnsafeSampleRate' => 0, ], 'type' => [ 'ConfigRegistry' => 'object', 'AssumeProxiesUseDefaultProtocolPorts' => 'boolean', 'ForceHTTPS' => 'boolean', 'ExtensionDirectory' => [ 'string', 'null', ], 'StyleDirectory' => [ 'string', 'null', ], 'UploadDirectory' => [ 'string', 'boolean', 'null', ], 'Logos' => [ 'object', 'boolean', ], 'ReferrerPolicy' => [ 'array', 'string', 'boolean', ], 'ActionPaths' => 'object', 'MainPageIsDomainRoot' => 'boolean', 'ImgAuthUrlPathMap' => 'object', 'LocalFileRepo' => 'object', 'ForeignFileRepos' => 'array', 'UseSharedUploads' => 'boolean', 'SharedUploadDirectory' => [ 'string', 'null', ], 'SharedUploadPath' => [ 'string', 'null', ], 'HashedSharedUploadDirectory' => 'boolean', 'FetchCommonsDescriptions' => 'boolean', 'SharedUploadDBname' => [ 'boolean', 'string', ], 'SharedUploadDBprefix' => 'string', 'CacheSharedUploads' => 'boolean', 'ForeignUploadTargets' => 'array', 'UploadDialog' => 'object', 'FileBackends' => 'object', 'LockManagers' => 'array', 'CopyUploadsDomains' => 'array', 'CopyUploadTimeout' => [ 'boolean', 'integer', ], 'SharedThumbnailScriptPath' => [ 'string', 'boolean', ], 'HashedUploadDirectory' => 'boolean', 'CSPUploadEntryPoint' => 'boolean', 'FileExtensions' => 'array', 'ProhibitedFileExtensions' => 'array', 'MimeTypeExclusions' => 'array', 'TrustedMediaFormats' => 'array', 'MediaHandlers' => 'object', 'NativeImageLazyLoading' => 'boolean', 'ParserTestMediaHandlers' => 'object', 'MaxInterlacingAreas' => 'object', 'SVGConverters' => 'object', 'SVGNativeRendering' => [ 'string', 'boolean', ], 'MaxImageArea' => [ 'string', 'integer', 'boolean', ], 'TiffThumbnailType' => 'array', 'GenerateThumbnailOnParse' => 'boolean', 'EnableAutoRotation' => [ 'boolean', 'null', ], 'Antivirus' => [ 'string', 'null', ], 'AntivirusSetup' => 'object', 'MimeDetectorCommand' => [ 'string', 'null', ], 'XMLMimeTypes' => 'object', 'ImageLimits' => 'array', 'ThumbLimits' => 'array', 'ThumbnailNamespaces' => 'array', 'ThumbnailSteps' => [ 'array', 'null', ], 'ThumbnailStepsRatio' => [ 'number', 'null', ], 'ThumbnailBuckets' => [ 'array', 'null', ], 'UploadThumbnailRenderMap' => 'object', 'GalleryOptions' => 'object', 'DjvuDump' => [ 'string', 'null', ], 'DjvuRenderer' => [ 'string', 'null', ], 'DjvuTxt' => [ 'string', 'null', ], 'DjvuPostProcessor' => [ 'string', 'null', ], 'SMTP' => [ 'boolean', 'object', ], 'EnotifFromEditor' => 'boolean', 'EmailConfirmationBanner' => 'boolean', 'EnotifRevealEditorAddress' => 'boolean', 'UsersNotifiedOnAllChanges' => 'object', 'DBmwschema' => [ 'string', 'null', ], 'SharedTables' => 'array', 'DBservers' => [ 'boolean', 'array', ], 'LBFactoryConf' => 'object', 'LocalDatabases' => 'array', 'VirtualDomainsMapping' => 'object', 'FileSchemaMigrationStage' => 'integer', 'ExternalLinksDomainGaps' => 'object', 'ContentHandlers' => 'object', 'NamespaceContentModels' => 'object', 'TextModelsToParse' => 'array', 'ExternalStores' => 'array', 'ExternalServers' => 'object', 'DefaultExternalStore' => [ 'array', 'boolean', ], 'RevisionCacheExpiry' => 'integer', 'PageLanguageUseDB' => 'boolean', 'DiffEngine' => [ 'string', 'null', ], 'ExternalDiffEngine' => [ 'string', 'boolean', ], 'Wikidiff2Options' => 'object', 'RequestTimeLimit' => [ 'integer', 'null', ], 'CriticalSectionTimeLimit' => 'number', 'PoolCounterConf' => [ 'object', 'null', ], 'PoolCountClientConf' => 'object', 'MaxUserDBWriteDuration' => [ 'integer', 'boolean', ], 'MaxJobDBWriteDuration' => [ 'integer', 'boolean', ], 'MultiShardSiteStats' => 'boolean', 'ObjectCaches' => 'object', 'WANObjectCache' => 'object', 'MicroStashType' => [ 'string', 'integer', ], 'ParsoidCacheConfig' => 'object', 'ParsoidSelectiveUpdateSampleRate' => 'integer', 'ParserCacheFilterConfig' => 'object', 'ChronologyProtectorSecret' => 'string', 'PHPSessionHandling' => 'string', 'SuspiciousIpExpiry' => [ 'integer', 'boolean', ], 'MemCachedServers' => 'array', 'LocalisationCacheConf' => 'object', 'ExtensionInfoMTime' => [ 'integer', 'boolean', ], 'CdnServers' => 'object', 'CdnServersNoPurge' => 'object', 'HTCPRouting' => 'object', 'GrammarForms' => 'object', 'ExtraInterlanguageLinkPrefixes' => 'array', 'InterlanguageLinkCodeMap' => 'object', 'ExtraLanguageNames' => 'object', 'ExtraLanguageCodes' => 'object', 'DummyLanguageCodes' => 'object', 'DisabledVariants' => 'object', 'ForceUIMsgAsContentMsg' => 'object', 'RawHtmlMessages' => 'array', 'OverrideUcfirstCharacters' => 'object', 'XhtmlNamespaces' => 'object', 'BrowserFormatDetection' => 'string', 'SkinMetaTags' => 'object', 'SkipSkins' => 'object', 'FragmentMode' => 'array', 'FooterIcons' => 'object', 'InterwikiLogoOverride' => 'array', 'ResourceModules' => 'object', 'ResourceModuleSkinStyles' => 'object', 'ResourceLoaderSources' => 'object', 'ResourceLoaderMaxage' => 'object', 'ResourceLoaderMaxQueryLength' => [ 'integer', 'boolean', ], 'CanonicalNamespaceNames' => 'object', 'ExtraNamespaces' => 'object', 'ExtraGenderNamespaces' => 'object', 'NamespaceAliases' => 'object', 'CapitalLinkOverrides' => 'object', 'NamespacesWithSubpages' => 'object', 'ContentNamespaces' => 'array', 'ShortPagesNamespaceExclusions' => 'array', 'ExtraSignatureNamespaces' => 'array', 'InvalidRedirectTargets' => 'array', 'LocalInterwikis' => 'array', 'InterwikiCache' => [ 'boolean', 'object', ], 'SiteTypes' => 'object', 'UrlProtocols' => 'array', 'TidyConfig' => 'object', 'ParsoidSettings' => 'object', 'ParsoidExperimentalParserFunctionOutput' => 'boolean', 'NoFollowNsExceptions' => 'array', 'NoFollowDomainExceptions' => 'array', 'ExternalLinksIgnoreDomains' => 'array', 'EnableMagicLinks' => 'object', 'ManualRevertSearchRadius' => 'integer', 'RevertedTagMaxDepth' => 'integer', 'CentralIdLookupProviders' => 'object', 'CentralIdLookupProvider' => 'string', 'UserRegistrationProviders' => 'object', 'PasswordPolicy' => 'object', 'AuthManagerConfig' => [ 'object', 'null', ], 'AuthManagerAutoConfig' => 'object', 'RememberMe' => 'string', 'ReauthenticateTime' => 'object', 'AllowSecuritySensitiveOperationIfCannotReauthenticate' => 'object', 'ChangeCredentialsBlacklist' => 'array', 'RemoveCredentialsBlacklist' => 'array', 'PasswordConfig' => 'object', 'PasswordResetRoutes' => 'object', 'SignatureAllowedLintErrors' => 'array', 'ReservedUsernames' => 'array', 'DefaultUserOptions' => 'object', 'ConditionalUserOptions' => 'object', 'HiddenPrefs' => 'array', 'UserJsPrefLimit' => 'integer', 'AuthenticationTokenVersion' => [ 'string', 'null', ], 'SessionProviders' => 'object', 'AutoCreateTempUser' => 'object', 'AutoblockExemptions' => 'array', 'BlockCIDRLimit' => 'object', 'EnableMultiBlocks' => 'boolean', 'GroupPermissions' => 'object', 'PrivilegedGroups' => 'array', 'RevokePermissions' => 'object', 'GroupInheritsPermissions' => 'object', 'ImplicitGroups' => 'array', 'GroupsAddToSelf' => 'object', 'GroupsRemoveFromSelf' => 'object', 'RestrictedGroups' => 'object', 'UserRequirementsPrivateConditions' => 'array', 'RestrictionTypes' => 'array', 'RestrictionLevels' => 'array', 'CascadingRestrictionLevels' => 'array', 'SemiprotectedRestrictionLevels' => 'array', 'NamespaceProtection' => 'object', 'NonincludableNamespaces' => 'object', 'Autopromote' => 'object', 'AutopromoteOnce' => 'object', 'AutopromoteOnceRCExcludedGroups' => 'array', 'AddGroups' => 'object', 'RemoveGroups' => 'object', 'AvailableRights' => 'array', 'ImplicitRights' => 'array', 'AccountCreationThrottle' => [ 'integer', 'array', ], 'TempAccountCreationThrottle' => 'array', 'TempAccountNameAcquisitionThrottle' => 'array', 'SpamRegex' => 'array', 'SummarySpamRegex' => 'array', 'DnsBlacklistUrls' => 'array', 'ProxyList' => [ 'string', 'array', ], 'ProxyWhitelist' => 'array', 'SoftBlockRanges' => 'array', 'RateLimits' => 'object', 'RateLimitsExcludedIPs' => 'array', 'ExternalQuerySources' => 'object', 'PasswordAttemptThrottle' => 'array', 'GrantPermissions' => 'object', 'GrantPermissionGroups' => 'object', 'GrantRiskGroups' => 'object', 'EnableBotPasswords' => 'boolean', 'BotPasswordsCluster' => [ 'string', 'boolean', ], 'BotPasswordsDatabase' => [ 'string', 'boolean', ], 'BotPasswordsLimit' => 'integer', 'CSPHeader' => [ 'boolean', 'object', ], 'CSPReportOnlyHeader' => [ 'boolean', 'object', ], 'CSPFalsePositiveUrls' => 'object', 'AllowCrossOrigin' => 'boolean', 'RestAllowCrossOriginCookieAuth' => 'boolean', 'CookieSameSite' => [ 'string', 'null', ], 'CacheVaryCookies' => 'array', 'TrxProfilerLimits' => 'object', 'DebugLogGroups' => 'object', 'MWLoggerDefaultSpi' => 'object', 'Profiler' => 'object', 'StatsTarget' => [ 'string', 'null', ], 'StatsFormat' => [ 'string', 'null', ], 'StatsPrefix' => 'string', 'OpenTelemetryConfig' => [ 'object', 'null', ], 'OpenSearchTemplates' => 'object', 'NamespacesToBeSearchedDefault' => 'object', 'SitemapNamespaces' => [ 'boolean', 'array', ], 'SitemapNamespacesPriorities' => [ 'boolean', 'object', ], 'SitemapApiConfig' => 'object', 'SpecialSearchFormOptions' => 'object', 'SearchMatchRedirectPreference' => 'boolean', 'SearchRunSuggestedQuery' => 'boolean', 'PreviewOnOpenNamespaces' => 'object', 'ReadOnlyWatchedItemStore' => 'boolean', 'GitRepositoryViewers' => 'object', 'InstallerInitialPages' => 'array', 'RCLinkLimits' => 'array', 'RCLinkDays' => 'array', 'RCFeeds' => 'object', 'OverrideSiteFeed' => 'object', 'FeedClasses' => 'object', 'AdvertisedFeedTypes' => 'array', 'SoftwareTags' => 'object', 'RecentChangesFlags' => 'object', 'WatchlistExpiry' => 'boolean', 'EnableWatchlistLabels' => 'boolean', 'WatchlistLabelsMaxPerUser' => 'integer', 'WatchlistPurgeRate' => 'number', 'WatchlistExpiryMaxDuration' => [ 'string', 'null', ], 'EnableChangesListQueryPartitioning' => 'boolean', 'ImportSources' => 'object', 'ExtensionFunctions' => 'array', 'ExtensionMessagesFiles' => 'object', 'MessagesDirs' => 'object', 'TranslationAliasesDirs' => 'object', 'ExtensionEntryPointListFiles' => 'object', 'ValidSkinNames' => 'object', 'SpecialPages' => 'object', 'ExtensionCredits' => 'object', 'Hooks' => 'object', 'ServiceWiringFiles' => 'array', 'JobClasses' => 'object', 'JobTypesExcludedFromDefaultQueue' => 'array', 'JobBackoffThrottling' => 'object', 'JobTypeConf' => 'object', 'SpecialPageCacheUpdates' => 'object', 'PagePropLinkInvalidations' => 'object', 'TempCategoryCollations' => 'array', 'SortedCategories' => 'boolean', 'TrackingCategories' => 'array', 'LogTypes' => 'array', 'LogRestrictions' => 'object', 'FilterLogTypes' => 'object', 'LogNames' => 'object', 'LogHeaders' => 'object', 'LogActions' => 'object', 'LogActionsHandlers' => 'object', 'ActionFilteredLogs' => 'object', 'RangeContributionsCIDRLimit' => 'object', 'Actions' => 'object', 'NamespaceRobotPolicies' => 'object', 'ArticleRobotPolicies' => 'object', 'ExemptFromUserRobotsControl' => [ 'array', 'null', ], 'APIModules' => 'object', 'APIFormatModules' => 'object', 'APIMetaModules' => 'object', 'APIPropModules' => 'object', 'APIListModules' => 'object', 'APIUselessQueryPages' => 'array', 'CrossSiteAJAXdomains' => 'object', 'CrossSiteAJAXdomainExceptions' => 'object', 'AllowedCorsHeaders' => 'array', 'RestAPIAdditionalRouteFiles' => 'array', 'RestSandboxSpecs' => 'object', 'ShellRestrictionMethod' => [ 'string', 'boolean', ], 'ShellboxUrls' => 'object', 'ShellboxSecretKey' => [ 'string', 'null', ], 'ShellboxShell' => [ 'string', 'null', ], 'HTTPTimeout' => 'number', 'HTTPConnectTimeout' => 'number', 'HTTPMaxTimeout' => 'number', 'HTTPMaxConnectTimeout' => 'number', 'LocalVirtualHosts' => 'object', 'LocalHTTPProxy' => [ 'string', 'boolean', ], 'GenerateReqIDFormat' => 'string', 'VirtualRestConfig' => 'object', 'EventRelayerConfig' => 'object', 'Pingback' => 'boolean', 'OriginTrials' => 'array', 'ReportToExpiry' => 'integer', 'ReportToEndpoints' => 'array', 'FeaturePolicyReportOnly' => 'array', 'SkinsPreferred' => 'array', 'SpecialContributeSkinsEnabled' => 'array', 'SpecialContributeNewPageTarget' => [ 'string', 'null', ], 'EnableEditRecovery' => 'boolean', 'EditRecoveryExpiry' => 'integer', 'UseCodexSpecialBlock' => 'boolean', 'ShowLogoutConfirmation' => 'boolean', 'EnableProtectionIndicators' => 'boolean', 'OutputPipelineStages' => 'object', 'FeatureShutdown' => 'array', 'CloneArticleParserOutput' => 'boolean', 'UseLeximorph' => 'boolean', 'UsePostprocCacheLegacy' => 'boolean', 'UsePostprocCacheParsoid' => 'boolean', 'ParserOptionsLogUnsafeSampleRate' => 'integer', ], 'mergeStrategy' => [ 'TiffThumbnailType' => 'replace', 'LBFactoryConf' => 'replace', 'InterwikiCache' => 'replace', 'PasswordPolicy' => 'array_replace_recursive', 'AuthManagerAutoConfig' => 'array_plus_2d', 'GroupPermissions' => 'array_plus_2d', 'RevokePermissions' => 'array_plus_2d', 'AddGroups' => 'array_merge_recursive', 'RemoveGroups' => 'array_merge_recursive', 'RateLimits' => 'array_plus_2d', 'GrantPermissions' => 'array_plus_2d', 'MWLoggerDefaultSpi' => 'replace', 'Profiler' => 'replace', 'Hooks' => 'array_merge_recursive', 'VirtualRestConfig' => 'array_plus_2d', ], 'dynamicDefault' => [ 'UsePathInfo' => [ 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultUsePathInfo', ], ], 'Script' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultScript', ], ], 'LoadScript' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultLoadScript', ], ], 'RestPath' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultRestPath', ], ], 'StylePath' => [ 'use' => [ 'ResourceBasePath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultStylePath', ], ], 'LocalStylePath' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultLocalStylePath', ], ], 'ExtensionAssetsPath' => [ 'use' => [ 'ResourceBasePath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultExtensionAssetsPath', ], ], 'ArticlePath' => [ 'use' => [ 'Script', 'UsePathInfo', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultArticlePath', ], ], 'UploadPath' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultUploadPath', ], ], 'FileCacheDirectory' => [ 'use' => [ 'UploadDirectory', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultFileCacheDirectory', ], ], 'Logo' => [ 'use' => [ 'ResourceBasePath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultLogo', ], ], 'DeletedDirectory' => [ 'use' => [ 'UploadDirectory', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultDeletedDirectory', ], ], 'ShowEXIF' => [ 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultShowEXIF', ], ], 'SharedPrefix' => [ 'use' => [ 'DBprefix', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultSharedPrefix', ], ], 'SharedSchema' => [ 'use' => [ 'DBmwschema', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultSharedSchema', ], ], 'DBerrorLogTZ' => [ 'use' => [ 'Localtimezone', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultDBerrorLogTZ', ], ], 'Localtimezone' => [ 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultLocaltimezone', ], ], 'LocalTZoffset' => [ 'use' => [ 'Localtimezone', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultLocalTZoffset', ], ], 'ResourceBasePath' => [ 'use' => [ 'ScriptPath', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultResourceBasePath', ], ], 'MetaNamespace' => [ 'use' => [ 'Sitename', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultMetaNamespace', ], ], 'CookieSecure' => [ 'use' => [ 'ForceHTTPS', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultCookieSecure', ], ], 'CookiePrefix' => [ 'use' => [ 'SharedDB', 'SharedPrefix', 'SharedTables', 'DBname', 'DBprefix', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultCookiePrefix', ], ], 'ReadOnlyFile' => [ 'use' => [ 'UploadDirectory', ], 'callback' => [ 'MediaWiki\\MainConfigSchema', 'getDefaultReadOnlyFile', ], ], ], ], 'config-schema' => [ 'UploadStashScalerBaseUrl' => [ 'deprecated' => 'since 1.36 Use thumbProxyUrl in $wgLocalFileRepo', ], 'IllegalFileChars' => [ 'deprecated' => 'since 1.41; no longer customizable', ], 'ThumbnailNamespaces' => [ 'items' => [ 'type' => 'integer', ], ], 'LocalDatabases' => [ 'items' => [ 'type' => 'string', ], ], 'ParserCacheFilterConfig' => [ 'additionalProperties' => [ 'type' => 'object', 'description' => 'A map of namespace IDs to filter definitions.', 'additionalProperties' => [ 'type' => 'object', 'description' => 'A map of filter names to values.', 'properties' => [ 'minCpuTime' => [ 'type' => 'number', ], ], ], ], ], 'PHPSessionHandling' => [ 'deprecated' => 'since 1.45 Integration with PHP session handling will be removed in the future', ], 'RawHtmlMessages' => [ 'items' => [ 'type' => 'string', ], ], 'InterwikiLogoOverride' => [ 'items' => [ 'type' => 'string', ], ], 'LegalTitleChars' => [ 'deprecated' => 'since 1.41; use Extension:TitleBlacklist to customize', ], 'ReauthenticateTime' => [ 'additionalProperties' => [ 'type' => 'integer', ], ], 'AllowSecuritySensitiveOperationIfCannotReauthenticate' => [ 'additionalProperties' => [ 'type' => 'boolean', ], ], 'ChangeCredentialsBlacklist' => [ 'items' => [ 'type' => 'string', ], ], 'RemoveCredentialsBlacklist' => [ 'items' => [ 'type' => 'string', ], ], 'GroupPermissions' => [ 'additionalProperties' => [ 'type' => 'object', 'additionalProperties' => [ 'type' => 'boolean', ], ], ], 'GroupInheritsPermissions' => [ 'additionalProperties' => [ 'type' => 'string', ], ], 'AvailableRights' => [ 'items' => [ 'type' => 'string', ], ], 'ImplicitRights' => [ 'items' => [ 'type' => 'string', ], ], 'SoftBlockRanges' => [ 'items' => [ 'type' => 'string', ], ], 'ExternalQuerySources' => [ 'additionalProperties' => [ 'type' => 'object', 'properties' => [ 'enabled' => [ 'type' => 'boolean', 'default' => false, ], 'url' => [ 'type' => 'string', 'format' => 'uri', ], 'timeout' => [ 'type' => 'integer', 'default' => 10, ], ], 'required' => [ 'enabled', 'url', ], 'additionalProperties' => false, ], ], 'GrantPermissions' => [ 'additionalProperties' => [ 'type' => 'object', 'additionalProperties' => [ 'type' => 'boolean', ], ], ], 'GrantPermissionGroups' => [ 'additionalProperties' => [ 'type' => 'string', ], ], 'SitemapNamespacesPriorities' => [ 'deprecated' => 'since 1.45 and ignored', ], 'SitemapApiConfig' => [ 'additionalProperties' => [ 'enabled' => [ 'type' => 'bool', ], 'sitemapsPerIndex' => [ 'type' => 'int', ], 'pagesPerSitemap' => [ 'type' => 'int', ], 'expiry' => [ 'type' => 'int', ], ], ], 'SoftwareTags' => [ 'additionalProperties' => [ 'type' => 'boolean', ], ], 'JobBackoffThrottling' => [ 'additionalProperties' => [ 'type' => 'number', ], ], 'JobTypeConf' => [ 'additionalProperties' => [ 'type' => 'object', 'properties' => [ 'class' => [ 'type' => 'string', ], 'order' => [ 'type' => 'string', ], 'claimTTL' => [ 'type' => 'integer', ], ], ], ], 'TrackingCategories' => [ 'deprecated' => 'since 1.25 Extensions should now register tracking categories using the new extension registration system.', ], 'RangeContributionsCIDRLimit' => [ 'additionalProperties' => [ 'type' => 'integer', ], ], 'RestSandboxSpecs' => [ 'additionalProperties' => [ 'type' => 'object', 'properties' => [ 'url' => [ 'type' => 'string', 'format' => 'url', ], 'name' => [ 'type' => 'string', ], 'file' => [ 'type' => 'string', ], 'msg' => [ 'type' => 'string', 'description' => 'a message key', ], ], ], ], 'ShellboxUrls' => [ 'additionalProperties' => [ 'type' => [ 'string', 'boolean', 'null', ], ], ], ], 'obsolete-config' => [ 'MangleFlashPolicy' => 'Since 1.39; no longer has any effect.', 'EnableOpenSearchSuggest' => 'Since 1.35, no longer used', 'AutoloadAttemptLowercase' => 'Since 1.40; no longer has any effect.', ],]
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
Interface for objects which can provide a MediaWiki context on request.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
Definition GetIPHook.php:12
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
Represents the target of a wiki link.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
Interface for objects (potentially) representing an editable wiki page.
Interface for a page that is (or could be, or used to be) an editable wiki page.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This interface represents the authority associated with the current execution context,...
Definition Authority.php:23
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md Use the hook name "PermissionStatusAudit" to regi...
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, see docs/Hooks.md.
Interface for objects representing user identity.