MediaWiki master
HookRunner.php
Go to the documentation of this file.
1<?php
2
4
38use StatusValue;
40use Wikimedia\Parsoid\Core\LinkTarget as ParsoidLinkTarget;
42
56class HookRunner implements
600{
601
602 public function __construct(
603 private readonly HookContainer $container,
604 ) {
605 }
606
608 public function onAbortAutoblock( $autoblockip, $block ) {
609 return $this->container->run(
610 'AbortAutoblock',
611 [ $autoblockip, $block ]
612 );
613 }
614
616 public function onAbortDiffCache( $diffEngine ) {
617 return $this->container->run(
618 'AbortDiffCache',
619 [ $diffEngine ]
620 );
621 }
622
624 public function onActionBeforeFormDisplay( $name, $form, $article ) {
625 return $this->container->run(
626 'ActionBeforeFormDisplay',
627 [ $name, $form, $article ]
628 );
629 }
630
632 public function onActionModifyFormFields( $name, &$fields, $article ) {
633 return $this->container->run(
634 'ActionModifyFormFields',
635 [ $name, &$fields, $article ]
636 );
637 }
638
640 public function onAfterBuildFeedLinks( &$feedLinks ) {
641 return $this->container->run(
642 'AfterBuildFeedLinks',
643 [ &$feedLinks ]
644 );
645 }
646
648 public function onAfterFinalPageOutput( $output ): void {
649 $this->container->run(
650 'AfterFinalPageOutput',
651 [ $output ],
652 [ 'abortable' => false ]
653 );
654 }
655
657 public function onAfterImportPage( $title, $foreignTitle, $revCount,
658 $sRevCount, $pageInfo
659 ) {
660 return $this->container->run(
661 'AfterImportPage',
662 [ $title, $foreignTitle, $revCount, $sRevCount, $pageInfo ]
663 );
664 }
665
667 public function onAfterParserFetchFileAndTitle( $parser, $ig, &$html ) {
668 return $this->container->run(
669 'AfterParserFetchFileAndTitle',
670 [ $parser, $ig, &$html ]
671 );
672 }
673
675 public function onAlternateEdit( $editPage ) {
676 return $this->container->run(
677 'AlternateEdit',
678 [ $editPage ]
679 );
680 }
681
683 public function onAlternateEditPreview( $editPage, &$content, &$previewHTML,
684 &$parserOutput
685 ) {
686 return $this->container->run(
687 'AlternateEditPreview',
688 [ $editPage, &$content, &$previewHTML, &$parserOutput ]
689 );
690 }
691
693 public function onAlternateUserMailer( $headers, $to, $from, $subject, $body ) {
694 return $this->container->run(
695 'AlternateUserMailer',
696 [ $headers, $to, $from, $subject, $body ]
697 );
698 }
699
701 public function onAncientPagesQuery( &$tables, &$conds, &$joinConds ) {
702 return $this->container->run(
703 'AncientPagesQuery',
704 [ &$tables, &$conds, &$joinConds ]
705 );
706 }
707
709 public function onApiBeforeMain( &$main ) {
710 return $this->container->run(
711 'ApiBeforeMain',
712 [ &$main ]
713 );
714 }
715
717 public function onArticleConfirmDelete( $article, $output, &$reason ) {
718 return $this->container->run(
719 'ArticleConfirmDelete',
720 [ $article, $output, &$reason ]
721 );
722 }
723
725 public function onArticleContentOnDiff( $diffEngine, $output ) {
726 return $this->container->run(
727 'ArticleContentOnDiff',
728 [ $diffEngine, $output ]
729 );
730 }
731
733 public function onArticleDelete( $wikiPage, $user, &$reason, &$error, &$status,
734 $suppress
735 ) {
736 return $this->container->run(
737 'ArticleDelete',
738 [ $wikiPage, $user, &$reason, &$error, &$status, $suppress ]
739 );
740 }
741
743 public function onArticleDeleteAfterSuccess( $title, $outputPage ) {
744 return $this->container->run(
745 'ArticleDeleteAfterSuccess',
746 [ $title, $outputPage ]
747 );
748 }
749
751 public function onArticleDeleteComplete( $wikiPage, $user, $reason, $id,
752 $content, $logEntry, $archivedRevisionCount
753 ) {
754 return $this->container->run(
755 'ArticleDeleteComplete',
756 [ $wikiPage, $user, $reason, $id, $content, $logEntry,
757 $archivedRevisionCount ]
758 );
759 }
760
762 public function onArticleEditUpdateNewTalk( $wikiPage, $recipient ) {
763 return $this->container->run(
764 'ArticleEditUpdateNewTalk',
765 [ $wikiPage, $recipient ]
766 );
767 }
768
770 public function onArticleFromTitle( $title, &$article, $context ) {
771 return $this->container->run(
772 'ArticleFromTitle',
773 [ $title, &$article, $context ]
774 );
775 }
776
778 public function onArticleMergeComplete( $targetTitle, $destTitle ) {
779 return $this->container->run(
780 'ArticleMergeComplete',
781 [ $targetTitle, $destTitle ]
782 );
783 }
784
786 public function onArticlePageDataAfter( $wikiPage, &$row ) {
787 return $this->container->run(
788 'ArticlePageDataAfter',
789 [ $wikiPage, &$row ]
790 );
791 }
792
794 public function onArticlePageDataBefore( $wikiPage, &$fields, &$tables,
795 &$joinConds
796 ) {
797 return $this->container->run(
798 'ArticlePageDataBefore',
799 [ $wikiPage, &$fields, &$tables, &$joinConds ]
800 );
801 }
802
804 public function onArticleParserOptions( Article $article, ParserOptions $popts ) {
805 return $this->container->run(
806 'ArticleParserOptions',
807 [ $article, $popts ]
808 );
809 }
810
812 public function onArticlePrepareTextForEdit( $wikiPage, $popts ) {
813 return $this->container->run(
814 'ArticlePrepareTextForEdit',
815 [ $wikiPage, $popts ]
816 );
817 }
818
820 public function onArticleProtect( $wikiPage, $user, $protect, $reason ) {
821 return $this->container->run(
822 'ArticleProtect',
823 [ $wikiPage, $user, $protect, $reason ]
824 );
825 }
826
828 public function onArticleProtectComplete( $wikiPage, $user, $protect, $reason ) {
829 return $this->container->run(
830 'ArticleProtectComplete',
831 [ $wikiPage, $user, $protect, $reason ]
832 );
833 }
834
836 public function onArticlePurge( $wikiPage ) {
837 return $this->container->run(
838 'ArticlePurge',
839 [ $wikiPage ]
840 );
841 }
842
844 public function onArticleRevisionViewCustom( $revision, $title, $oldid,
845 $output
846 ) {
847 return $this->container->run(
848 'ArticleRevisionViewCustom',
849 [ $revision, $title, $oldid, $output ]
850 );
851 }
852
854 public function onArticleRevisionVisibilitySet( $title, $ids,
855 $visibilityChangeMap
856 ) {
857 return $this->container->run(
858 'ArticleRevisionVisibilitySet',
859 [ $title, $ids, $visibilityChangeMap ]
860 );
861 }
862
864 public function onArticleShowPatrolFooter( $article ) {
865 return $this->container->run(
866 'ArticleShowPatrolFooter',
867 [ $article ]
868 );
869 }
870
872 public function onArticleUndelete( $title, $create, $comment, $oldPageId,
873 $restoredPages
874 ) {
875 return $this->container->run(
876 'ArticleUndelete',
877 [ $title, $create, $comment, $oldPageId, $restoredPages ]
878 );
879 }
880
882 public function onArticleUpdateBeforeRedirect( $article, &$sectionanchor,
883 &$extraq
884 ) {
885 return $this->container->run(
886 'ArticleUpdateBeforeRedirect',
887 [ $article, &$sectionanchor, &$extraq ]
888 );
889 }
890
892 public function onArticleViewFooter( $article, $patrolFooterShown ) {
893 return $this->container->run(
894 'ArticleViewFooter',
895 [ $article, $patrolFooterShown ]
896 );
897 }
898
900 public function onArticleViewHeader( $article, &$outputDone, &$pcache ) {
901 return $this->container->run(
902 'ArticleViewHeader',
903 [ $article, &$outputDone, &$pcache ]
904 );
905 }
906
908 public function onArticleViewRedirect( $article ) {
909 return $this->container->run(
910 'ArticleViewRedirect',
911 [ $article ]
912 );
913 }
914
916 public function onArticle__MissingArticleConditions( &$conds, $logTypes ) {
917 return $this->container->run(
918 'Article::MissingArticleConditions',
919 [ &$conds, $logTypes ]
920 );
921 }
922
924 public function onAuthChangeFormFields( $requests, $fieldInfo,
925 &$formDescriptor, $action
926 ) {
927 return $this->container->run(
928 'AuthChangeFormFields',
929 [ $requests, $fieldInfo, &$formDescriptor, $action ]
930 );
931 }
932
934 public function onAuthManagerFilterProviders( array &$providers ): void {
935 $this->container->run(
936 'AuthManagerFilterProviders',
937 [ &$providers ],
938 [ 'abortable' => false ]
939 );
940 }
941
943 public function onAuthManagerLoginAuthenticateAudit( $response, $user,
944 $username, $extraData
945 ) {
946 return $this->container->run(
947 'AuthManagerLoginAuthenticateAudit',
948 [ $response, $user, $username, $extraData ]
949 );
950 }
951
954 ?UserIdentity $user,
955 AuthenticationResponse &$response,
956 AuthManager $authManager,
957 array $info
958 ): bool {
959 return $this->container->run(
960 'AuthManagerVerifyAuthentication',
961 [ $user, &$response, $authManager, $info ],
962 );
963 }
964
966 public function onAuthPreserveQueryParams( &$params, $options ) {
967 return $this->container->run(
968 'AuthPreserveQueryParams', [ &$params, $options ]
969 );
970 }
971
973 public function onAuthenticationAttemptThrottled( string $type, ?string $username, ?string $ip ) {
974 return $this->container->run(
975 'AuthenticationAttemptThrottled', [ $type, $username, $ip ]
976 );
977 }
978
980 public function onAutopromoteCondition( $type, $args, $user, &$result ) {
981 return $this->container->run(
982 'AutopromoteCondition',
983 [ $type, $args, $user, &$result ]
984 );
985 }
986
988 public function onBacklinkCacheGetConditions( $table, $title, &$conds ) {
989 return $this->container->run(
990 'BacklinkCacheGetConditions',
991 [ $table, $title, &$conds ]
992 );
993 }
994
996 public function onBacklinkCacheGetPrefix( $table, &$prefix ) {
997 return $this->container->run(
998 'BacklinkCacheGetPrefix',
999 [ $table, &$prefix ]
1000 );
1001 }
1002
1004 public function onBadImage( $name, &$bad ) {
1005 return $this->container->run(
1006 'BadImage',
1007 [ $name, &$bad ]
1008 );
1009 }
1010
1012 public function onBeforeDisplayNoArticleText( $article ) {
1013 return $this->container->run(
1014 'BeforeDisplayNoArticleText',
1015 [ $article ]
1016 );
1017 }
1018
1020 public function onBeforeInitialize( $title, $unused, $output, $user, $request,
1021 $mediaWiki
1022 ) {
1023 return $this->container->run(
1024 'BeforeInitialize',
1025 [ $title, $unused, $output, $user, $request, $mediaWiki ]
1026 );
1027 }
1028
1030 public function onBeforePageDisplay( $out, $skin ): void {
1031 $this->container->run(
1032 'BeforePageDisplay',
1033 [ $out, $skin ],
1034 [ 'abortable' => false ]
1035 );
1036 }
1037
1039 public function onBeforePageRedirect( $out, &$redirect, &$code ) {
1040 return $this->container->run(
1041 'BeforePageRedirect',
1042 [ $out, &$redirect, &$code ]
1043 );
1044 }
1045
1047 public function onBeforeParserFetchFileAndTitle( $parser, $nt, &$options,
1048 &$descQuery
1049 ) {
1050 return $this->container->run(
1051 'BeforeParserFetchFileAndTitle',
1052 [ $parser, $nt, &$options, &$descQuery ]
1053 );
1054 }
1055
1058 ?LinkTarget $contextTitle, LinkTarget $title,
1059 bool &$skip, ?RevisionRecord &$revRecord
1060 ) {
1061 return $this->container->run(
1062 'BeforeParserFetchTemplateRevisionRecord',
1063 [ $contextTitle, $title, &$skip, &$revRecord ]
1064 );
1065 }
1066
1068 public function onBeforeRevertedTagUpdate( $wikiPage, $user,
1069 $summary, $flags, $revisionRecord, $editResult, &$approved
1070 ): void {
1071 $this->container->run(
1072 'BeforeRevertedTagUpdate',
1073 [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult,
1074 &$approved ],
1075 [ 'abortable' => false ]
1076 );
1077 }
1078
1080 public function onBeforeWelcomeCreation( &$welcome_creation_msg,
1081 &$injected_html
1082 ) {
1083 return $this->container->run(
1084 'BeforeWelcomeCreation',
1085 [ &$welcome_creation_msg, &$injected_html ]
1086 );
1087 }
1088
1090 public function onBitmapHandlerCheckImageArea( $image, &$params,
1091 &$checkImageAreaHookResult
1092 ) {
1093 return $this->container->run(
1094 'BitmapHandlerCheckImageArea',
1095 [ $image, &$params, &$checkImageAreaHookResult ]
1096 );
1097 }
1098
1100 public function onBitmapHandlerTransform( $handler, $image, &$scalerParams,
1101 &$mto
1102 ) {
1103 return $this->container->run(
1104 'BitmapHandlerTransform',
1105 [ $handler, $image, &$scalerParams, &$mto ]
1106 );
1107 }
1108
1110 public function onBlockIp( $block, $user, &$reason ) {
1111 return $this->container->run(
1112 'BlockIp',
1113 [ $block, $user, &$reason ]
1114 );
1115 }
1116
1118 public function onBlockIpComplete( $block, $user, $priorBlock ) {
1119 return $this->container->run(
1120 'BlockIpComplete',
1121 [ $block, $user, $priorBlock ]
1122 );
1123 }
1124
1126 public function onBookInformation( $isbn, $output ) {
1127 return $this->container->run(
1128 'BookInformation',
1129 [ $isbn, $output ]
1130 );
1131 }
1132
1134 public function onCanonicalNamespaces( &$namespaces ) {
1135 return $this->container->run(
1136 'CanonicalNamespaces',
1137 [ &$namespaces ]
1138 );
1139 }
1140
1142 public function onCategoryAfterPageAdded( $category, $wikiPage ) {
1143 return $this->container->run(
1144 'CategoryAfterPageAdded',
1145 [ $category, $wikiPage ]
1146 );
1147 }
1148
1150 public function onCategoryAfterPageRemoved( $category, $wikiPage, $id ) {
1151 return $this->container->run(
1152 'CategoryAfterPageRemoved',
1153 [ $category, $wikiPage, $id ]
1154 );
1155 }
1156
1158 public function onCategoryPageView( $catpage ) {
1159 return $this->container->run(
1160 'CategoryPageView',
1161 [ $catpage ]
1162 );
1163 }
1164
1166 public function onCategoryViewer__doCategoryQuery( $type, $res ) {
1167 return $this->container->run(
1168 'CategoryViewer::doCategoryQuery',
1169 [ $type, $res ]
1170 );
1171 }
1172
1174 public function onCategoryViewer__generateLink( $type, $title, $html, &$link ) {
1175 return $this->container->run(
1176 'CategoryViewer::generateLink',
1177 [ $type, $title, $html, &$link ]
1178 );
1179 }
1180
1182 public function onChangeAuthenticationDataAudit( $req, $status ) {
1183 return $this->container->run(
1184 'ChangeAuthenticationDataAudit',
1185 [ $req, $status ]
1186 );
1187 }
1188
1190 public function onChangesListInitRows( $changesList, $rows ) {
1191 return $this->container->run(
1192 'ChangesListInitRows',
1193 [ $changesList, $rows ]
1194 );
1195 }
1196
1198 public function onChangesListInsertArticleLink( $changesList, &$articlelink,
1199 &$s, $rc, $unpatrolled, $watched
1200 ) {
1201 return $this->container->run(
1202 'ChangesListInsertArticleLink',
1203 [ $changesList, &$articlelink, &$s, $rc, $unpatrolled, $watched ]
1204 );
1205 }
1206
1208 public function onChangesListInsertLogEntry( $entry, $context, &$html, &$classes, &$attribs ) {
1209 return $this->container->run(
1210 'ChangesListInsertLogEntry',
1211 [ $entry, $context, &$html, &$classes, &$attribs ]
1212 );
1213 }
1214
1216 public function onChangesListSpecialPageQuery( $name, &$tables, &$fields,
1217 &$conds, &$query_options, &$join_conds, $opts
1218 ) {
1219 return $this->container->run(
1220 'ChangesListSpecialPageQuery',
1221 [ $name, &$tables, &$fields, &$conds, &$query_options,
1222 &$join_conds, $opts ]
1223 );
1224 }
1225
1227 public function onChangesListSpecialPageStructuredFilters( $special ) {
1228 return $this->container->run(
1229 'ChangesListSpecialPageStructuredFilters',
1230 [ $special ]
1231 );
1232 }
1233
1235 public function onChangeTagAfterDelete( $tag, &$status ) {
1236 return $this->container->run(
1237 'ChangeTagAfterDelete',
1238 [ $tag, &$status ]
1239 );
1240 }
1241
1243 public function onChangeTagCanCreate( $tag, $user, &$status ) {
1244 return $this->container->run(
1245 'ChangeTagCanCreate',
1246 [ $tag, $user, &$status ]
1247 );
1248 }
1249
1251 public function onChangeTagCanDelete( $tag, $user, &$status ) {
1252 return $this->container->run(
1253 'ChangeTagCanDelete',
1254 [ $tag, $user, &$status ]
1255 );
1256 }
1257
1259 public function onChangeTagsAfterUpdateTags( $addedTags, $removedTags,
1260 $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $user
1261 ) {
1262 return $this->container->run(
1263 'ChangeTagsAfterUpdateTags',
1264 [ $addedTags, $removedTags, $prevTags, $rc_id, $rev_id, $log_id,
1265 $params, $rc, $user ]
1266 );
1267 }
1268
1270 public function onChangeTagsAllowedAdd( &$allowedTags, $addTags, $user ) {
1271 return $this->container->run(
1272 'ChangeTagsAllowedAdd',
1273 [ &$allowedTags, $addTags, $user ]
1274 );
1275 }
1276
1278 public function onChangeTagsListActive( &$tags ) {
1279 return $this->container->run(
1280 'ChangeTagsListActive',
1281 [ &$tags ]
1282 );
1283 }
1284
1286 public function onChangeUserGroups( $performer, $user, &$add, &$remove ) {
1287 return $this->container->run(
1288 'ChangeUserGroups',
1289 [ $performer, $user, &$add, &$remove ]
1290 );
1291 }
1292
1294 public function onCollation__factory( $collationName, &$collationObject ) {
1295 return $this->container->run(
1296 'Collation::factory',
1297 [ $collationName, &$collationObject ]
1298 );
1299 }
1300
1302 public function onConfirmEmailComplete( $user ) {
1303 return $this->container->run(
1304 'ConfirmEmailComplete',
1305 [ $user ]
1306 );
1307 }
1308
1310 public function onContentAlterParserOutput( $content, $title, $parserOutput ) {
1311 return $this->container->run(
1312 'ContentAlterParserOutput',
1313 [ $content, $title, $parserOutput ]
1314 );
1315 }
1316
1318 public function onContentGetParserOutput( $content, $title, $revId, $options,
1319 $generateHtml, &$parserOutput
1320 ) {
1321 return $this->container->run(
1322 'ContentGetParserOutput',
1323 [ $content, $title, $revId, $options, $generateHtml, &$parserOutput ]
1324 );
1325 }
1326
1328 public function onContentHandlerDefaultModelFor( $title, &$model ) {
1329 return $this->container->run(
1330 'ContentHandlerDefaultModelFor',
1331 [ $title, &$model ]
1332 );
1333 }
1334
1336 public function onContentHandlerForModelID( $modelName, &$handler ) {
1337 return $this->container->run(
1338 'ContentHandlerForModelID',
1339 [ $modelName, &$handler ]
1340 );
1341 }
1342
1344 public function onContentModelCanBeUsedOn( $contentModel, $title, &$ok ) {
1345 return $this->container->run(
1346 'ContentModelCanBeUsedOn',
1347 [ $contentModel, $title, &$ok ]
1348 );
1349 }
1350
1352 public function onContentSecurityPolicyDefaultSource( &$defaultSrc,
1353 $policyConfig, $mode
1354 ) {
1355 return $this->container->run(
1356 'ContentSecurityPolicyDefaultSource',
1357 [ &$defaultSrc, $policyConfig, $mode ]
1358 );
1359 }
1360
1362 public function onContentSecurityPolicyDirectives( &$directives, $policyConfig,
1363 $mode
1364 ) {
1365 return $this->container->run(
1366 'ContentSecurityPolicyDirectives',
1367 [ &$directives, $policyConfig, $mode ]
1368 );
1369 }
1370
1372 public function onContentSecurityPolicyScriptSource( &$scriptSrc,
1373 $policyConfig, $mode
1374 ) {
1375 return $this->container->run(
1376 'ContentSecurityPolicyScriptSource',
1377 [ &$scriptSrc, $policyConfig, $mode ]
1378 );
1379 }
1380
1382 public function onContribsPager__getQueryInfo( $pager, &$queryInfo ) {
1383 return $this->container->run(
1384 'ContribsPager::getQueryInfo',
1385 [ $pager, &$queryInfo ]
1386 );
1387 }
1388
1390 public function onContribsPager__reallyDoQuery( &$data, $pager, $offset,
1391 $limit, $descending
1392 ) {
1393 return $this->container->run(
1394 'ContribsPager::reallyDoQuery',
1395 [ &$data, $pager, $offset, $limit, $descending ]
1396 );
1397 }
1398
1400 public function onContributeCards( &$cards ): void {
1401 $this->container->run(
1402 'ContributeCards',
1403 [ &$cards ]
1404 );
1405 }
1406
1408 public function onContributionsLineEnding( $page, &$ret, $row, &$classes,
1409 &$attribs
1410 ) {
1411 return $this->container->run(
1412 'ContributionsLineEnding',
1413 [ $page, &$ret, $row, &$classes, &$attribs ]
1414 );
1415 }
1416
1418 public function onContributionsToolLinks( $id, Title $title, array &$tools, SpecialPage $specialPage ) {
1419 return $this->container->run(
1420 'ContributionsToolLinks',
1421 [ $id, $title, &$tools, $specialPage ]
1422 );
1423 }
1424
1426 public function onConvertContent( $content, $toModel, $lossy, &$result ) {
1427 return $this->container->run(
1428 'ConvertContent',
1429 [ $content, $toModel, $lossy, &$result ]
1430 );
1431 }
1432
1434 public function onCustomEditor( $article, $user ) {
1435 return $this->container->run(
1436 'CustomEditor',
1437 [ $article, $user ]
1438 );
1439 }
1440
1442 public function onDeletedContribsPager__reallyDoQuery( &$data, $pager, $offset,
1443 $limit, $descending
1444 ) {
1445 return $this->container->run(
1446 'DeletedContribsPager::reallyDoQuery',
1447 [ &$data, $pager, $offset, $limit, $descending ]
1448 );
1449 }
1450
1452 public function onDeletedContributionsLineEnding( $page, &$ret, $row,
1453 &$classes, &$attribs
1454 ) {
1455 return $this->container->run(
1456 'DeletedContributionsLineEnding',
1457 [ $page, &$ret, $row, &$classes, &$attribs ]
1458 );
1459 }
1460
1462 public function onDeleteUnknownPreferences( &$where, $db ) {
1463 return $this->container->run(
1464 'DeleteUnknownPreferences',
1465 [ &$where, $db ]
1466 );
1467 }
1468
1470 public function onDifferenceEngineAfterLoadNewText( $differenceEngine ) {
1471 return $this->container->run(
1472 'DifferenceEngineAfterLoadNewText',
1473 [ $differenceEngine ]
1474 );
1475 }
1476
1479 TextSlotDiffRenderer $textSlotDiffRenderer,
1480 IContextSource $context,
1481 array &$parts
1482 ) {
1483 return $this->container->run(
1484 'TextSlotDiffRendererTablePrefix',
1485 [ $textSlotDiffRenderer, $context, &$parts ]
1486 );
1487 }
1488
1491 $differenceEngine
1492 ) {
1493 return $this->container->run(
1494 'DifferenceEngineLoadTextAfterNewContentIsLoaded',
1495 [ $differenceEngine ]
1496 );
1497 }
1498
1500 public function onDifferenceEngineMarkPatrolledLink( $differenceEngine,
1501 &$markAsPatrolledLink, $rcid
1502 ) {
1503 return $this->container->run(
1504 'DifferenceEngineMarkPatrolledLink',
1505 [ $differenceEngine, &$markAsPatrolledLink, $rcid ]
1506 );
1507 }
1508
1510 public function onDifferenceEngineMarkPatrolledRCID( &$rcid, $differenceEngine,
1511 $change, $user
1512 ) {
1513 return $this->container->run(
1514 'DifferenceEngineMarkPatrolledRCID',
1515 [ &$rcid, $differenceEngine, $change, $user ]
1516 );
1517 }
1518
1520 public function onDifferenceEngineNewHeader( $differenceEngine, &$newHeader,
1521 $formattedRevisionTools, $nextlink, $rollback, $newminor, $diffOnly, $rdel,
1522 $unhide
1523 ) {
1524 return $this->container->run(
1525 'DifferenceEngineNewHeader',
1526 [ $differenceEngine, &$newHeader, $formattedRevisionTools,
1527 $nextlink, $rollback, $newminor, $diffOnly, $rdel, $unhide ]
1528 );
1529 }
1530
1532 public function onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader,
1533 $prevlink, $oldminor, $diffOnly, $ldel, $unhide
1534 ) {
1535 return $this->container->run(
1536 'DifferenceEngineOldHeader',
1537 [ $differenceEngine, &$oldHeader, $prevlink, $oldminor, $diffOnly,
1538 $ldel, $unhide ]
1539 );
1540 }
1541
1543 public function onDifferenceEngineOldHeaderNoOldRev( &$oldHeader ) {
1544 return $this->container->run(
1545 'DifferenceEngineOldHeaderNoOldRev',
1546 [ &$oldHeader ]
1547 );
1548 }
1549
1552 $differenceEngine, $out, $parserOutput, $wikiPage
1553 ) {
1554 return $this->container->run(
1555 'DifferenceEngineRenderRevisionAddParserOutput',
1556 [ $differenceEngine, $out, $parserOutput, $wikiPage ]
1557 );
1558 }
1559
1562 return $this->container->run(
1563 'DifferenceEngineRenderRevisionShowFinalPatrolLink',
1564 []
1565 );
1566 }
1567
1569 public function onDifferenceEngineShowDiff( $differenceEngine ) {
1570 return $this->container->run(
1571 'DifferenceEngineShowDiff',
1572 [ $differenceEngine ]
1573 );
1574 }
1575
1577 public function onDifferenceEngineShowDiffPage( $out ) {
1578 return $this->container->run(
1579 'DifferenceEngineShowDiffPage',
1580 [ $out ]
1581 );
1582 }
1583
1586 $differenceEngine
1587 ) {
1588 return $this->container->run(
1589 'DifferenceEngineShowDiffPageMaybeShowMissingRevision',
1590 [ $differenceEngine ]
1591 );
1592 }
1593
1595 public function onDifferenceEngineShowEmptyOldContent( $differenceEngine ) {
1596 return $this->container->run(
1597 'DifferenceEngineShowEmptyOldContent',
1598 [ $differenceEngine ]
1599 );
1600 }
1601
1603 public function onDifferenceEngineViewHeader( $differenceEngine ) {
1604 return $this->container->run(
1605 'DifferenceEngineViewHeader',
1606 [ $differenceEngine ]
1607 );
1608 }
1609
1611 public function onDiffTools( $newRevRecord, &$links, $oldRevRecord, $userIdentity ) {
1612 return $this->container->run(
1613 'DiffTools',
1614 [ $newRevRecord, &$links, $oldRevRecord, $userIdentity ]
1615 );
1616 }
1617
1619 public function onDisplayOldSubtitle( $article, &$oldid ) {
1620 return $this->container->run(
1621 'DisplayOldSubtitle',
1622 [ $article, &$oldid ]
1623 );
1624 }
1625
1627 public function onEditFilterMergedContent( $context, $content, $status,
1628 $summary, $user, $minoredit
1629 ) {
1630 return $this->container->run(
1631 'EditFilterMergedContent',
1632 [ $context, $content, $status, $summary, $user, $minoredit ]
1633 );
1634 }
1635
1637 public function onEditFormInitialText( $editPage ) {
1638 return $this->container->run(
1639 'EditFormInitialText',
1640 [ $editPage ]
1641 );
1642 }
1643
1645 public function onEditFormPreloadText( &$text, $title ) {
1646 return $this->container->run(
1647 'EditFormPreloadText',
1648 [ &$text, $title ]
1649 );
1650 }
1651
1653 public function onEditPageBeforeConflictDiff( $editor, $out ) {
1654 return $this->container->run(
1655 'EditPageBeforeConflictDiff',
1656 [ $editor, $out ]
1657 );
1658 }
1659
1661 public function onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex ) {
1662 return $this->container->run(
1663 'EditPageBeforeEditButtons',
1664 [ $editpage, &$buttons, &$tabindex ]
1665 );
1666 }
1667
1669 public function onEditPageBeforeEditToolbar( &$toolbar ) {
1670 return $this->container->run(
1671 'EditPageBeforeEditToolbar',
1672 [ &$toolbar ]
1673 );
1674 }
1675
1677 public function onEditPageCopyrightWarning( $title, &$msg ) {
1678 return $this->container->run(
1679 'EditPageCopyrightWarning',
1680 [ $title, &$msg ]
1681 );
1682 }
1683
1685 public function onEditPageGetCheckboxesDefinition( $editpage, &$checkboxes ) {
1686 return $this->container->run(
1687 'EditPageGetCheckboxesDefinition',
1688 [ $editpage, &$checkboxes ]
1689 );
1690 }
1691
1693 public function onEditPageGetDiffContent( $editPage, &$newtext ) {
1694 return $this->container->run(
1695 'EditPageGetDiffContent',
1696 [ $editPage, &$newtext ]
1697 );
1698 }
1699
1701 public function onEditPageGetPreviewContent( $editPage, &$content ) {
1702 return $this->container->run(
1703 'EditPageGetPreviewContent',
1704 [ $editPage, &$content ]
1705 );
1706 }
1707
1709 public function onEditPageNoSuchSection( $editpage, &$res ) {
1710 return $this->container->run(
1711 'EditPageNoSuchSection',
1712 [ $editpage, &$res ]
1713 );
1714 }
1715
1717 public function onEditPageTosSummary( $title, &$msg ) {
1718 return $this->container->run(
1719 'EditPageTosSummary',
1720 [ $title, &$msg ]
1721 );
1722 }
1723
1725 public function onEditPage__attemptSave( $editpage_Obj ) {
1726 return $this->container->run(
1727 'EditPage::attemptSave',
1728 [ $editpage_Obj ]
1729 );
1730 }
1731
1733 public function onEditPage__attemptSave_after( $editpage_Obj, $status,
1734 $resultDetails
1735 ) {
1736 return $this->container->run(
1737 'EditPage::attemptSave:after',
1738 [ $editpage_Obj, $status, $resultDetails ]
1739 );
1740 }
1741
1743 public function onEditPage__importFormData( $editpage, $request ) {
1744 return $this->container->run(
1745 'EditPage::importFormData',
1746 [ $editpage, $request ]
1747 );
1748 }
1749
1751 public function onEditPage__showEditForm_fields( $editor, $out ) {
1752 return $this->container->run(
1753 'EditPage::showEditForm:fields',
1754 [ $editor, $out ]
1755 );
1756 }
1757
1759 public function onEditPage__showEditForm_initial( $editor, $out ) {
1760 return $this->container->run(
1761 'EditPage::showEditForm:initial',
1762 [ $editor, $out ]
1763 );
1764 }
1765
1767 public function onEditPage__showReadOnlyForm_initial( $editor, $out ) {
1768 return $this->container->run(
1769 'EditPage::showReadOnlyForm:initial',
1770 [ $editor, $out ]
1771 );
1772 }
1773
1775 public function onEditPage__showStandardInputs_options( $editor, $out,
1776 &$tabindex
1777 ) {
1778 return $this->container->run(
1779 'EditPage::showStandardInputs:options',
1780 [ $editor, $out, &$tabindex ]
1781 );
1782 }
1783
1785 public function onEmailConfirmed( $user, &$confirmed ) {
1786 return $this->container->run(
1787 'EmailConfirmed',
1788 [ $user, &$confirmed ]
1789 );
1790 }
1791
1793 public function onEmailUser( &$to, &$from, &$subject, &$text, &$error ) {
1794 return $this->container->run(
1795 'EmailUser',
1796 [ &$to, &$from, &$subject, &$text, &$error ]
1797 );
1798 }
1799
1801 public function onEmailUserCC( &$to, &$from, &$subject, &$text ) {
1802 return $this->container->run(
1803 'EmailUserCC',
1804 [ &$to, &$from, &$subject, &$text ]
1805 );
1806 }
1807
1809 public function onEmailUserComplete( $to, $from, $subject, $text ) {
1810 return $this->container->run(
1811 'EmailUserComplete',
1812 [ $to, $from, $subject, $text ]
1813 );
1814 }
1815
1817 public function onEmailUserForm( &$form ) {
1818 return $this->container->run(
1819 'EmailUserForm',
1820 [ &$form ]
1821 );
1822 }
1823
1825 public function onEmailUserPermissionsErrors( $user, $editToken, &$hookErr ) {
1826 return $this->container->run(
1827 'EmailUserPermissionsErrors',
1828 [ $user, $editToken, &$hookErr ]
1829 );
1830 }
1831
1833 public function onEmailUserAuthorizeSend( Authority $sender, StatusValue $status ) {
1834 return $this->container->run(
1835 'EmailUserAuthorizeSend',
1836 [ $sender, $status ]
1837 );
1838 }
1839
1841 public function onEmailUserSendEmail(
1842 Authority $from,
1843 MailAddress $fromAddress,
1844 UserEmailContact $to,
1845 MailAddress $toAddress,
1846 string $subject,
1847 string $text,
1848 StatusValue $status
1849 ) {
1850 return $this->container->run(
1851 'EmailUserSendEmail',
1852 [ $from, $fromAddress, $to, $toAddress, $subject, $text, $status ]
1853 );
1854 }
1855
1857 public function onEnhancedChangesListModifyBlockLineData( $changesList, &$data,
1858 $rc
1859 ) {
1860 return $this->container->run(
1861 'EnhancedChangesListModifyBlockLineData',
1862 [ $changesList, &$data, $rc ]
1863 );
1864 }
1865
1867 public function onEnhancedChangesListModifyLineData( $changesList, &$data,
1868 $block, $rc, &$classes, &$attribs
1869 ) {
1870 return $this->container->run(
1871 'EnhancedChangesListModifyLineData',
1872 [ $changesList, &$data, $block, $rc, &$classes, &$attribs ]
1873 );
1874 }
1875
1877 public function onEnhancedChangesList__getLogText( $changesList, &$links,
1878 $block
1879 ) {
1880 return $this->container->run(
1881 'EnhancedChangesList::getLogText',
1882 [ $changesList, &$links, $block ]
1883 );
1884 }
1885
1888 return $this->container->run(
1889 'ExemptFromAccountCreationThrottle',
1890 [ $ip ]
1891 );
1892 }
1893
1895 public function onExtensionTypes( &$extTypes ) {
1896 return $this->container->run(
1897 'ExtensionTypes',
1898 [ &$extTypes ]
1899 );
1900 }
1901
1903 public function onFetchChangesList( $user, $skin, &$list, $groups ) {
1904 return $this->container->run(
1905 'FetchChangesList',
1906 [ $user, $skin, &$list, $groups ]
1907 );
1908 }
1909
1911 public function onFileDeleteComplete( $file, $oldimage, $article, $user,
1912 $reason
1913 ) {
1914 return $this->container->run(
1915 'FileDeleteComplete',
1916 [ $file, $oldimage, $article, $user, $reason ]
1917 );
1918 }
1919
1921 public function onFileTransformed( $file, $thumb, $tmpThumbPath, $thumbPath ) {
1922 return $this->container->run(
1923 'FileTransformed',
1924 [ $file, $thumb, $tmpThumbPath, $thumbPath ]
1925 );
1926 }
1927
1929 public function onFileUndeleteComplete( $title, $fileVersions, $user, $reason ) {
1930 return $this->container->run(
1931 'FileUndeleteComplete',
1932 [ $title, $fileVersions, $user, $reason ]
1933 );
1934 }
1935
1937 public function onFileUpload( $file, $reupload, $hasDescription ) {
1938 return $this->container->run(
1939 'FileUpload',
1940 [ $file, $reupload, $hasDescription ]
1941 );
1942 }
1943
1945 public function onFormatAutocomments( &$comment, $pre, $extractedText, $post, $title,
1946 $local, $wikiId
1947 ) {
1948 return $this->container->run(
1949 'FormatAutocomments',
1950 [ &$comment, $pre, $extractedText, $post, $title, $local, $wikiId ]
1951 );
1952 }
1953
1955 public function onGalleryGetModes( &$modeArray ) {
1956 return $this->container->run(
1957 'GalleryGetModes',
1958 [ &$modeArray ]
1959 );
1960 }
1961
1963 public function onGetAllBlockActions( &$actions ) {
1964 return $this->container->run(
1965 'GetAllBlockActions',
1966 [ &$actions ],
1967 [ 'abortable' => false ]
1968 );
1969 }
1970
1972 public function onGetAutoPromoteGroups( $user, &$promote ) {
1973 return $this->container->run(
1974 'GetAutoPromoteGroups',
1975 [ $user, &$promote ]
1976 );
1977 }
1978
1980 public function onGetActionName( IContextSource $context, string &$action ): void {
1981 $this->container->run(
1982 'GetActionName',
1983 [ $context, &$action ],
1984 [ 'abortable' => false ]
1985 );
1986 }
1987
1989 public function onGetCacheVaryCookies( $out, &$cookies ) {
1990 return $this->container->run(
1991 'GetCacheVaryCookies',
1992 [ $out, &$cookies ]
1993 );
1994 }
1995
1997 public function onGetCanonicalURL( $title, &$url, $query ) {
1998 return $this->container->run(
1999 'GetCanonicalURL',
2000 [ $title, &$url, $query ]
2001 );
2002 }
2003
2005 public function onGetContentModels( &$models ) {
2006 return $this->container->run(
2007 'GetContentModels',
2008 [ &$models ]
2009 );
2010 }
2011
2013 public function onGetDefaultSortkey( $title, &$sortkey ) {
2014 return $this->container->run(
2015 'GetDefaultSortkey',
2016 [ $title, &$sortkey ]
2017 );
2018 }
2019
2021 public function onGetDifferenceEngine( $context, $old, $new, $refreshCache,
2022 $unhide, &$differenceEngine
2023 ) {
2024 return $this->container->run(
2025 'GetDifferenceEngine',
2026 [ $context, $old, $new, $refreshCache, $unhide,
2027 &$differenceEngine ]
2028 );
2029 }
2030
2032 public function onGetDoubleUnderscoreIDs( &$doubleUnderscoreIDs ) {
2033 return $this->container->run(
2034 'GetDoubleUnderscoreIDs',
2035 [ &$doubleUnderscoreIDs ]
2036 );
2037 }
2038
2040 public function onGetExtendedMetadata( &$combinedMeta, $file, $context,
2041 $single, &$maxCacheTime
2042 ) {
2043 return $this->container->run(
2044 'GetExtendedMetadata',
2045 [ &$combinedMeta, $file, $context, $single, &$maxCacheTime ]
2046 );
2047 }
2048
2050 public function onGetFullURL( $title, &$url, $query ) {
2051 return $this->container->run(
2052 'GetFullURL',
2053 [ $title, &$url, $query ]
2054 );
2055 }
2056
2058 public function onGetHumanTimestamp( &$output, $timestamp, $relativeTo, $user,
2059 $lang
2060 ) {
2061 return $this->container->run(
2062 'GetHumanTimestamp',
2063 [ &$output, $timestamp, $relativeTo, $user, $lang ]
2064 );
2065 }
2066
2068 public function onGetInternalURL( $title, &$url, $query ) {
2069 return $this->container->run(
2070 'GetInternalURL',
2071 [ $title, &$url, $query ]
2072 );
2073 }
2074
2076 public function onGetIP( &$ip ) {
2077 return $this->container->run(
2078 'GetIP',
2079 [ &$ip ]
2080 );
2081 }
2082
2084 public function onGetLangPreferredVariant( &$req ) {
2085 return $this->container->run(
2086 'GetLangPreferredVariant',
2087 [ &$req ]
2088 );
2089 }
2090
2092 public function onGetLinkColours( $linkcolour_ids, &$colours, $title ) {
2093 return $this->container->run(
2094 'GetLinkColours',
2095 [ $linkcolour_ids, &$colours, $title ]
2096 );
2097 }
2098
2100 public function onGetLocalURL( $title, &$url, $query ) {
2101 return $this->container->run(
2102 'GetLocalURL',
2103 [ $title, &$url, $query ]
2104 );
2105 }
2106
2108 public function onGetLocalURL__Article( $title, &$url ) {
2109 return $this->container->run(
2110 'GetLocalURL::Article',
2111 [ $title, &$url ]
2112 );
2113 }
2114
2116 public function onGetLocalURL__Internal( $title, &$url, $query ) {
2117 return $this->container->run(
2118 'GetLocalURL::Internal',
2119 [ $title, &$url, $query ]
2120 );
2121 }
2122
2124 public function onGetLogTypesOnUser( &$types ) {
2125 return $this->container->run(
2126 'GetLogTypesOnUser',
2127 [ &$types ]
2128 );
2129 }
2130
2132 public function onGetMagicVariableIDs( &$variableIDs ) {
2133 return $this->container->run(
2134 'GetMagicVariableIDs',
2135 [ &$variableIDs ]
2136 );
2137 }
2138
2140 public function onGetMetadataVersion( &$version ) {
2141 return $this->container->run(
2142 'GetMetadataVersion',
2143 [ &$version ]
2144 );
2145 }
2146
2148 public function onGetNewMessagesAlert( &$newMessagesAlert, $newtalks, $user,
2149 $out
2150 ) {
2151 return $this->container->run(
2152 'GetNewMessagesAlert',
2153 [ &$newMessagesAlert, $newtalks, $user, $out ]
2154 );
2155 }
2156
2158 public function onGetPreferences( $user, &$preferences ) {
2159 return $this->container->run(
2160 'GetPreferences',
2161 [ $user, &$preferences ]
2162 );
2163 }
2164
2166 public function onGetRelativeTimestamp( &$output, &$diff, $timestamp,
2167 $relativeTo, $user, $lang
2168 ) {
2169 return $this->container->run(
2170 'GetRelativeTimestamp',
2171 [ &$output, &$diff, $timestamp, $relativeTo, $user, $lang ]
2172 );
2173 }
2174
2176 public function onGetSlotDiffRenderer( $contentHandler, &$slotDiffRenderer,
2177 $context
2178 ) {
2179 return $this->container->run(
2180 'GetSlotDiffRenderer',
2181 [ $contentHandler, &$slotDiffRenderer, $context ]
2182 );
2183 }
2184
2186 public function onGetUserBlock( $user, $ip, &$block ) {
2187 return $this->container->run(
2188 'GetUserBlock',
2189 [ $user, $ip, &$block ]
2190 );
2191 }
2192
2195 LinkTarget $title,
2196 UserIdentity $user,
2197 string $action,
2198 string $rigor,
2199 PermissionStatus $status
2200 ): void {
2201 $this->container->run(
2202 'PermissionStatusAudit',
2203 [ $title, $user, $action, $rigor, $status ],
2204 [ 'abortable' => false ]
2205 );
2206 }
2207
2209 public function onGetSecurityLogContext( array $info, array &$context ): void {
2210 $this->container->run(
2211 'GetSecurityLogContext',
2212 [ $info, &$context ],
2213 [ 'abortable' => false ]
2214 );
2215 }
2216
2218 public function onGetSessionJwtData( ?UserIdentity $user, array &$jwtData ): void {
2219 $this->container->run(
2220 'GetSessionJwtData',
2221 [ $user, &$jwtData ],
2222 [ 'abortable' => false ]
2223 );
2224 }
2225
2227 public function onGetUserPermissionsErrors( $title, $user, $action, &$result ) {
2228 return $this->container->run(
2229 'getUserPermissionsErrors',
2230 [ $title, $user, $action, &$result ]
2231 );
2232 }
2233
2235 public function onGetUserPermissionsErrorsExpensive( $title, $user, $action,
2236 &$result
2237 ) {
2238 return $this->container->run(
2239 'getUserPermissionsErrorsExpensive',
2240 [ $title, $user, $action, &$result ]
2241 );
2242 }
2243
2245 public function onGitViewers( &$extTypes ) {
2246 return $this->container->run(
2247 'GitViewers',
2248 [ &$extTypes ]
2249 );
2250 }
2251
2253 public function onHistoryPageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
2254 return $this->container->run(
2255 'HistoryPageToolLinks',
2256 [ $context, $linkRenderer, &$links ]
2257 );
2258 }
2259
2261 public function onHistoryTools( $revRecord, &$links, $prevRevRecord, $userIdentity ) {
2262 return $this->container->run(
2263 'HistoryTools',
2264 [ $revRecord, &$links, $prevRevRecord, $userIdentity ]
2265 );
2266 }
2267
2269 public function onHtmlCacheUpdaterAppendUrls( $title, $mode, &$append ) {
2270 return $this->container->run(
2271 'HtmlCacheUpdaterAppendUrls',
2272 [ $title, $mode, &$append ]
2273 );
2274 }
2275
2277 public function onHtmlCacheUpdaterVaryUrls( $urls, &$append ) {
2278 return $this->container->run(
2279 'HtmlCacheUpdaterVaryUrls',
2280 [ $urls, &$append ]
2281 );
2282 }
2283
2285 public function onHTMLFileCache__useFileCache( $context ) {
2286 return $this->container->run(
2287 'HTMLFileCache::useFileCache',
2288 [ $context ]
2289 );
2290 }
2291
2293 public function onHtmlPageLinkRendererBegin( $linkRenderer, $target, &$text,
2294 &$customAttribs, &$query, &$ret
2295 ) {
2296 return $this->container->run(
2297 'HtmlPageLinkRendererBegin',
2298 [ $linkRenderer, $target, &$text, &$customAttribs, &$query, &$ret ]
2299 );
2300 }
2301
2303 public function onHtmlPageLinkRendererEnd( $linkRenderer, $target, $isKnown,
2304 &$text, &$attribs, &$ret
2305 ) {
2306 return $this->container->run(
2307 'HtmlPageLinkRendererEnd',
2308 [ $linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret ]
2309 );
2310 }
2311
2313 public function onImageBeforeProduceHTML( $linker, &$title, &$file,
2314 &$frameParams, &$handlerParams, &$time, &$res, $parser, &$query, &$widthOption
2315 ) {
2316 return $this->container->run(
2317 'ImageBeforeProduceHTML',
2318 [ $linker, &$title, &$file, &$frameParams, &$handlerParams, &$time,
2319 &$res, $parser, &$query, &$widthOption ]
2320 );
2321 }
2322
2324 public function onImageOpenShowImageInlineBefore( $imagePage, $output ) {
2325 return $this->container->run(
2326 'ImageOpenShowImageInlineBefore',
2327 [ $imagePage, $output ]
2328 );
2329 }
2330
2332 public function onImagePageAfterImageLinks( $imagePage, &$html ) {
2333 return $this->container->run(
2334 'ImagePageAfterImageLinks',
2335 [ $imagePage, &$html ]
2336 );
2337 }
2338
2340 public function onImagePageFileHistoryLine( $imageHistoryList, $file, &$line, &$css ) {
2341 return $this->container->run(
2342 'ImagePageFileHistoryLine',
2343 [ $imageHistoryList, $file, &$line, &$css ]
2344 );
2345 }
2346
2348 public function onImagePageFindFile( $page, &$file, &$displayFile ) {
2349 return $this->container->run(
2350 'ImagePageFindFile',
2351 [ $page, &$file, &$displayFile ]
2352 );
2353 }
2354
2356 public function onImagePageShowTOC( $page, &$toc ) {
2357 return $this->container->run(
2358 'ImagePageShowTOC',
2359 [ $page, &$toc ]
2360 );
2361 }
2362
2364 public function onImgAuthBeforeStream( &$title, &$path, &$name, &$result ) {
2365 return $this->container->run(
2366 'ImgAuthBeforeStream',
2367 [ &$title, &$path, &$name, &$result ]
2368 );
2369 }
2370
2372 public function onImgAuthModifyHeaders( $title, &$headers ) {
2373 return $this->container->run(
2374 'ImgAuthModifyHeaders',
2375 [ $title, &$headers ]
2376 );
2377 }
2378
2380 public function onImportHandleLogItemXMLTag( $reader, $logInfo ) {
2381 return $this->container->run(
2382 'ImportHandleLogItemXMLTag',
2383 [ $reader, $logInfo ]
2384 );
2385 }
2386
2388 public function onImportHandlePageXMLTag( $reader, &$pageInfo ) {
2389 return $this->container->run(
2390 'ImportHandlePageXMLTag',
2391 [ $reader, &$pageInfo ]
2392 );
2393 }
2394
2396 public function onImportHandleRevisionXMLTag( $reader, $pageInfo,
2397 $revisionInfo
2398 ) {
2399 return $this->container->run(
2400 'ImportHandleRevisionXMLTag',
2401 [ $reader, $pageInfo, $revisionInfo ]
2402 );
2403 }
2404
2406 public function onImportHandleContentXMLTag( $reader, $contentInfo ) {
2407 return $this->container->run(
2408 'ImportHandleContentXMLTag',
2409 [ $reader, $contentInfo ] );
2410 }
2411
2413 public function onImportHandleToplevelXMLTag( $reader ) {
2414 return $this->container->run(
2415 'ImportHandleToplevelXMLTag',
2416 [ $reader ]
2417 );
2418 }
2419
2421 public function onImportHandleUnknownUser( $name ) {
2422 return $this->container->run(
2423 'ImportHandleUnknownUser',
2424 [ $name ]
2425 );
2426 }
2427
2429 public function onImportHandleUploadXMLTag( $reader, $revisionInfo ) {
2430 return $this->container->run(
2431 'ImportHandleUploadXMLTag',
2432 [ $reader, $revisionInfo ]
2433 );
2434 }
2435
2437 public function onImportLogInterwikiLink( &$fullInterwikiPrefix, &$pageTitle ) {
2438 return $this->container->run(
2439 'ImportLogInterwikiLink',
2440 [ &$fullInterwikiPrefix, &$pageTitle ]
2441 );
2442 }
2443
2445 public function onImportSources( &$importSources ) {
2446 return $this->container->run(
2447 'ImportSources',
2448 [ &$importSources ]
2449 );
2450 }
2451
2453 public function onInfoAction( $context, &$pageInfo ) {
2454 return $this->container->run(
2455 'InfoAction',
2456 [ $context, &$pageInfo ]
2457 );
2458 }
2459
2462 &$ignoreRedirect, &$target, &$article
2463 ) {
2464 return $this->container->run(
2465 'InitializeArticleMaybeRedirect',
2466 [ $title, $request, &$ignoreRedirect, &$target, &$article ]
2467 );
2468 }
2469
2471 public function onInternalParseBeforeLinks( $parser, &$text, $stripState ) {
2472 return $this->container->run(
2473 'InternalParseBeforeLinks',
2474 [ $parser, &$text, $stripState ]
2475 );
2476 }
2477
2479 public function onInterwikiLoadPrefix( $prefix, &$iwData ) {
2480 return $this->container->run(
2481 'InterwikiLoadPrefix',
2482 [ $prefix, &$iwData ]
2483 );
2484 }
2485
2487 public function onInvalidateEmailComplete( $user ) {
2488 return $this->container->run(
2489 'InvalidateEmailComplete',
2490 [ $user ]
2491 );
2492 }
2493
2495 public function onIRCLineURL( &$url, &$query, $rc ) {
2496 return $this->container->run(
2497 'IRCLineURL',
2498 [ &$url, &$query, $rc ]
2499 );
2500 }
2501
2503 public function onIsFileCacheable( $article ) {
2504 return $this->container->run(
2505 'IsFileCacheable',
2506 [ $article ]
2507 );
2508 }
2509
2511 public function onIsTrustedProxy( $ip, &$result ) {
2512 return $this->container->run(
2513 'IsTrustedProxy',
2514 [ $ip, &$result ]
2515 );
2516 }
2517
2519 public function onIsUploadAllowedFromUrl( $url, &$allowed ) {
2520 return $this->container->run(
2521 'IsUploadAllowedFromUrl',
2522 [ $url, &$allowed ]
2523 );
2524 }
2525
2527 public function onIsValidEmailAddr( $addr, &$result ) {
2528 return $this->container->run(
2529 'isValidEmailAddr',
2530 [ $addr, &$result ]
2531 );
2532 }
2533
2535 public function onIsValidPassword( $password, &$result, $user ) {
2536 return $this->container->run(
2537 'isValidPassword',
2538 [ $password, &$result, $user ]
2539 );
2540 }
2541
2543 public function onJsonValidateSave( JsonContent $content, PageIdentity $pageIdentity, StatusValue $status ) {
2544 return $this->container->run(
2545 'JsonValidateSave',
2546 [ $content, $pageIdentity, &$status ]
2547 );
2548 }
2549
2551 public function onLanguageGetNamespaces( &$namespaces ) {
2552 return $this->container->run(
2553 'LanguageGetNamespaces',
2554 [ &$namespaces ]
2555 );
2556 }
2557
2559 public function onLanguageGetTranslatedLanguageNames( &$names, $code ) {
2560 return $this->container->run(
2561 'LanguageGetTranslatedLanguageNames',
2562 [ &$names, $code ]
2563 );
2564 }
2565
2567 public function onLanguageLinks( $title, &$links, &$linkFlags ) {
2568 return $this->container->run(
2569 'LanguageLinks',
2570 [ $title, &$links, &$linkFlags ]
2571 );
2572 }
2573
2575 public function onLanguageSelector( $out, $cssClassName ) {
2576 return $this->container->run(
2577 'LanguageSelector',
2578 [ $out, $cssClassName ]
2579 );
2580 }
2581
2583 public function onLanguage__getMessagesFileName( $code, &$file ) {
2584 return $this->container->run(
2585 'Language::getMessagesFileName',
2586 [ $code, &$file ]
2587 );
2588 }
2589
2591 public function onLinkerGenerateRollbackLink( $revRecord, $context, $options, &$inner ) {
2592 return $this->container->run(
2593 'LinkerGenerateRollbackLink',
2594 [ $revRecord, $context, $options, &$inner ]
2595 );
2596 }
2597
2599 public function onLinkerMakeExternalImage( &$url, &$alt, &$img ) {
2600 return $this->container->run(
2601 'LinkerMakeExternalImage',
2602 [ &$url, &$alt, &$img ]
2603 );
2604 }
2605
2607 public function onLinkerMakeExternalLink( &$url, &$text, &$link, &$attribs,
2608 $linkType
2609 ) {
2610 return $this->container->run(
2611 'LinkerMakeExternalLink',
2612 [ &$url, &$text, &$link, &$attribs, $linkType ]
2613 );
2614 }
2615
2618 ?string &$url, string &$text, array &$attribs,
2619 string $linkType, ParsoidLinkTarget $contextTitle
2620 ) {
2621 return $this->container->run(
2622 'LinkerMakeExternalLinkWithContext',
2623 [ &$url, &$text, &$attribs, $linkType, $contextTitle ]
2624 );
2625 }
2626
2628 public function onLinkerMakeMediaLinkFile( $title, $file, &$html, &$attribs,
2629 &$ret
2630 ) {
2631 return $this->container->run(
2632 'LinkerMakeMediaLinkFile',
2633 [ $title, $file, &$html, &$attribs, &$ret ]
2634 );
2635 }
2636
2638 public function onLinksUpdate( $linksUpdate ) {
2639 return $this->container->run(
2640 'LinksUpdate',
2641 [ $linksUpdate ]
2642 );
2643 }
2644
2646 public function onLinksUpdateComplete( $linksUpdate, $ticket ) {
2647 return $this->container->run(
2648 'LinksUpdateComplete',
2649 [ $linksUpdate, $ticket ]
2650 );
2651 }
2652
2654 public function onLinkTargetIsAlwaysKnownBatch( array $links, array &$isAlwaysKnown ) {
2655 return $this->container->run(
2656 'LinkTargetIsAlwaysKnownBatch',
2657 [ $links, &$isAlwaysKnown ]
2658 );
2659 }
2660
2662 public function onListDefinedTags( &$tags ) {
2663 return $this->container->run(
2664 'ListDefinedTags',
2665 [ &$tags ]
2666 );
2667 }
2668
2670 public function onListRestrictedTags( array &$restrictedTags ): void {
2671 $this->container->run(
2672 'ListRestrictedTags',
2673 [ &$restrictedTags ],
2674 [ 'abortable' => false ]
2675 );
2676 }
2677
2679 public function onLoadExtensionSchemaUpdates( $updater ) {
2680 return $this->container->run(
2681 'LoadExtensionSchemaUpdates',
2682 [ $updater ],
2683 [ 'noServices' => true ]
2684 );
2685 }
2686
2688 public function onLocalFilePurgeThumbnails( $file, $archiveName, $urls ) {
2689 return $this->container->run(
2690 'LocalFilePurgeThumbnails',
2691 [ $file, $archiveName, $urls ]
2692 );
2693 }
2694
2696 public function onLocalFile__getHistory( $file, &$tables, &$fields, &$conds,
2697 &$opts, &$join_conds
2698 ) {
2699 return $this->container->run(
2700 'LocalFile::getHistory',
2701 [ $file, &$tables, &$fields, &$conds, &$opts, &$join_conds ]
2702 );
2703 }
2704
2706 public function onLocalisationCacheRecache( $cache, $code, &$alldata, $unused ) {
2707 return $this->container->run(
2708 'LocalisationCacheRecache',
2709 [ $cache, $code, &$alldata, $unused ]
2710 );
2711 }
2712
2714 public function onLocalisationCacheRecacheFallback( $cache, $code, &$alldata ) {
2715 return $this->container->run(
2716 'LocalisationCacheRecacheFallback',
2717 [ $cache, $code, &$alldata ]
2718 );
2719 }
2720
2722 public function onLocalUserCreated( $user, $autocreated ) {
2723 return $this->container->run(
2724 'LocalUserCreated',
2725 [ $user, $autocreated ]
2726 );
2727 }
2728
2730 public function onLogEventsListGetExtraInputs( $type, $logEventsList, &$input,
2731 &$formDescriptor
2732 ) {
2733 return $this->container->run(
2734 'LogEventsListGetExtraInputs',
2735 [ $type, $logEventsList, &$input, &$formDescriptor ]
2736 );
2737 }
2738
2740 public function onLogEventsListLineEnding( $page, &$ret, $entry, &$classes,
2741 &$attribs
2742 ) {
2743 return $this->container->run(
2744 'LogEventsListLineEnding',
2745 [ $page, &$ret, $entry, &$classes, &$attribs ]
2746 );
2747 }
2748
2750 public function onLogEventsListShowLogExtract( &$s, $types, $page, $user,
2751 $param
2752 ) {
2753 return $this->container->run(
2754 'LogEventsListShowLogExtract',
2755 [ &$s, $types, $page, $user, $param ]
2756 );
2757 }
2758
2760 public function onLogException( $e, $suppressed ) {
2761 return $this->container->run(
2762 'LogException',
2763 [ $e, $suppressed ]
2764 );
2765 }
2766
2768 public function onLoginFormValidErrorMessages( array &$messages ) {
2769 return $this->container->run(
2770 'LoginFormValidErrorMessages',
2771 [ &$messages ]
2772 );
2773 }
2774
2776 public function onLogLine( $log_type, $log_action, $title, $paramArray,
2777 &$comment, &$revert, $time
2778 ) {
2779 return $this->container->run(
2780 'LogLine',
2781 [ $log_type, $log_action, $title, $paramArray, &$comment,
2782 &$revert, $time ]
2783 );
2784 }
2785
2787 public function onLonelyPagesQuery( &$tables, &$conds, &$joinConds ) {
2788 return $this->container->run(
2789 'LonelyPagesQuery',
2790 [ &$tables, &$conds, &$joinConds ]
2791 );
2792 }
2793
2795 public function onMaintenanceRefreshLinksInit( $refreshLinks ) {
2796 return $this->container->run(
2797 'MaintenanceRefreshLinksInit',
2798 [ $refreshLinks ]
2799 );
2800 }
2801
2803 public function onMaintenanceShellStart(): void {
2804 $this->container->run(
2805 'MaintenanceShellStart',
2806 [],
2807 [ 'abortable' => false ]
2808 );
2809 }
2810
2812 public function onMaintenanceUpdateAddParams( &$params ) {
2813 return $this->container->run(
2814 'MaintenanceUpdateAddParams',
2815 [ &$params ]
2816 );
2817 }
2818
2820 public function onMakeGlobalVariablesScript( &$vars, $out ): void {
2821 $this->container->run(
2822 'MakeGlobalVariablesScript',
2823 [ &$vars, $out ],
2824 [ 'abortable' => false ]
2825 );
2826 }
2827
2829 public function onManualLogEntryBeforePublish( $logEntry ): void {
2830 $this->container->run(
2831 'ManualLogEntryBeforePublish',
2832 [ $logEntry ],
2833 [ 'abortable' => false ]
2834 );
2835 }
2836
2838 public function onMarkPatrolled( $rcid, $user, $wcOnlySysopsCanPatrol, $auto,
2839 &$tags
2840 ) {
2841 return $this->container->run(
2842 'MarkPatrolled',
2843 [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto, &$tags ]
2844 );
2845 }
2846
2848 public function onMarkPatrolledComplete( $rcid, $user, $wcOnlySysopsCanPatrol,
2849 $auto
2850 ) {
2851 return $this->container->run(
2852 'MarkPatrolledComplete',
2853 [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto ]
2854 );
2855 }
2856
2858 public function onMarkPatrolledAudit( $recentChange, $userIdentity, int $logId ): void {
2859 $this->container->run(
2860 'MarkPatrolledAudit',
2861 [ $recentChange, $userIdentity, $logId ],
2862 [ 'abortable' => false ]
2863 );
2864 }
2865
2867 public function onMediaWikiPerformAction( $output, $article, $title, $user,
2868 $request, $mediaWiki
2869 ) {
2870 return $this->container->run(
2871 'MediaWikiPerformAction',
2872 [ $output, $article, $title, $user, $request, $mediaWiki ]
2873 );
2874 }
2875
2877 public function onMediaWikiServices( $services ) {
2878 return $this->container->run(
2879 'MediaWikiServices',
2880 [ $services ],
2881 [ 'noServices' => true ]
2882 );
2883 }
2884
2886 public function onMessageCacheFetchOverrides( array &$messages ): void {
2887 $this->container->run(
2888 'MessageCacheFetchOverrides',
2889 [ &$messages ],
2890 [ 'abortable' => false ]
2891 );
2892 }
2893
2895 public function onMessageCacheReplace( $title, $text ) {
2896 return $this->container->run(
2897 'MessageCacheReplace',
2898 [ $title, $text ]
2899 );
2900 }
2901
2903 public function onMessageCache__get( &$key ) {
2904 return $this->container->run(
2905 'MessageCache::get',
2906 [ &$key ]
2907 );
2908 }
2909
2911 public function onMessagePostProcessHtml( &$value, $format, $key ): void {
2912 $this->container->run(
2913 'MessagePostProcessHtml',
2914 [ &$value, $format, $key ],
2915 [ 'abortable' => false ]
2916 );
2917 }
2918
2920 public function onMessagePostProcessText( &$value, $format, $key ): void {
2921 $this->container->run(
2922 'MessagePostProcessText',
2923 [ &$value, $format, $key ],
2924 [ 'abortable' => false ]
2925 );
2926 }
2927
2929 public function onMessagesPreLoad( $title, &$message, $code ) {
2930 return $this->container->run(
2931 'MessagesPreLoad',
2932 [ $title, &$message, $code ]
2933 );
2934 }
2935
2937 public function onMimeMagicGuessFromContent( $mimeMagic, &$head, &$tail, $file,
2938 &$mime
2939 ) {
2940 return $this->container->run(
2941 'MimeMagicGuessFromContent',
2942 [ $mimeMagic, &$head, &$tail, $file, &$mime ]
2943 );
2944 }
2945
2947 public function onMimeMagicImproveFromExtension( $mimeMagic, $ext, &$mime ) {
2948 return $this->container->run(
2949 'MimeMagicImproveFromExtension',
2950 [ $mimeMagic, $ext, &$mime ]
2951 );
2952 }
2953
2955 public function onMimeMagicInit( $mimeMagic ) {
2956 return $this->container->run(
2957 'MimeMagicInit',
2958 [ $mimeMagic ]
2959 );
2960 }
2961
2963 public function onGetBlockErrorMessageKey( $block, &$key ) {
2964 return $this->container->run(
2965 'GetBlockErrorMessageKey',
2966 [ $block, &$key ]
2967 );
2968 }
2969
2971 public function onModifyExportQuery( $db, &$tables, $cond, &$opts,
2972 &$join_conds, &$conds
2973 ) {
2974 return $this->container->run(
2975 'ModifyExportQuery',
2976 [ $db, &$tables, $cond, &$opts, &$join_conds, &$conds ]
2977 );
2978 }
2979
2981 public function onMovePageCheckPermissions( $oldTitle, $newTitle, $user,
2982 $reason, $status
2983 ) {
2984 return $this->container->run(
2985 'MovePageCheckPermissions',
2986 [ $oldTitle, $newTitle, $user, $reason, $status ]
2987 );
2988 }
2989
2991 public function onMovePageIsValidMove( $oldTitle, $newTitle, $status ) {
2992 return $this->container->run(
2993 'MovePageIsValidMove',
2994 [ $oldTitle, $newTitle, $status ]
2995 );
2996 }
2997
2999 public function onMultiContentSave( $renderedRevision, $user, $summary, $flags,
3000 $status
3001 ) {
3002 return $this->container->run(
3003 'MultiContentSave',
3004 [ $renderedRevision, $user, $summary, $flags, $status ]
3005 );
3006 }
3007
3009 public function onNamespaceIsMovable( $index, &$result ) {
3010 return $this->container->run(
3011 'NamespaceIsMovable',
3012 [ $index, &$result ]
3013 );
3014 }
3015
3017 public function onNewDifferenceEngine( $title, &$oldId, &$newId, $old, $new ) {
3018 return $this->container->run(
3019 'NewDifferenceEngine',
3020 [ $title, &$oldId, &$newId, $old, $new ]
3021 );
3022 }
3023
3025 public function onNewPagesLineEnding( $page, &$ret, $row, &$classes, &$attribs ) {
3026 return $this->container->run(
3027 'NewPagesLineEnding',
3028 [ $page, &$ret, $row, &$classes, &$attribs ]
3029 );
3030 }
3031
3033 public function onOldChangesListRecentChangesLine( $changeslist, &$s, $rc,
3034 &$classes, &$attribs
3035 ) {
3036 return $this->container->run(
3037 'OldChangesListRecentChangesLine',
3038 [ $changeslist, &$s, $rc, &$classes, &$attribs ]
3039 );
3040 }
3041
3043 public function onOpenSearchUrls( &$urls ) {
3044 return $this->container->run(
3045 'OpenSearchUrls',
3046 [ &$urls ]
3047 );
3048 }
3049
3051 public function onOpportunisticLinksUpdate( $page, $title, $parserOutput ) {
3052 return $this->container->run(
3053 'OpportunisticLinksUpdate',
3054 [ $page, $title, $parserOutput ]
3055 );
3056 }
3057
3059 public function onOtherAutoblockLogLink( &$otherBlockLink ) {
3060 return $this->container->run(
3061 'OtherAutoblockLogLink',
3062 [ &$otherBlockLink ]
3063 );
3064 }
3065
3067 public function onOtherBlockLogLink( &$otherBlockLink, $ip ) {
3068 return $this->container->run(
3069 'OtherBlockLogLink',
3070 [ &$otherBlockLink, $ip ]
3071 );
3072 }
3073
3075 public function onOutputPageAfterGetHeadLinksArray( &$tags, $out ) {
3076 return $this->container->run(
3077 'OutputPageAfterGetHeadLinksArray',
3078 [ &$tags, $out ]
3079 );
3080 }
3081
3083 public function onOutputPageBeforeHTML( $out, &$text ) {
3084 return $this->container->run(
3085 'OutputPageBeforeHTML',
3086 [ $out, &$text ]
3087 );
3088 }
3089
3091 public function onOutputPageBodyAttributes( $out, $sk, &$bodyAttrs ): void {
3092 $this->container->run(
3093 'OutputPageBodyAttributes',
3094 [ $out, $sk, &$bodyAttrs ],
3095 [ 'abortable' => false ]
3096 );
3097 }
3098
3100 public function onOutputPageCheckLastModified( &$modifiedTimes, $out ) {
3101 return $this->container->run(
3102 'OutputPageCheckLastModified',
3103 [ &$modifiedTimes, $out ]
3104 );
3105 }
3106
3108 public function onOutputPageParserOutput( $outputPage, $parserOutput ): void {
3109 $this->container->run(
3110 'OutputPageParserOutput',
3111 [ $outputPage, $parserOutput ],
3112 [ 'abortable' => false ]
3113 );
3114 }
3115
3118 OutputPage $outputPage,
3119 ProperPageIdentity $categoryTitle,
3120 string $text,
3121 ?string &$link
3122 ): void {
3123 $this->container->run(
3124 'OutputPageRenderCategoryLink',
3125 [ $outputPage, $categoryTitle, $text, &$link ],
3126 [ 'abortable' => false ]
3127 );
3128 }
3129
3132 ParserOutput &$parserOutput, ParserOptions $parserOptions
3133 ): void {
3134 $this->container->run(
3135 'OutputTransformFirstStage',
3136 [ &$parserOutput, $parserOptions ],
3137 [ 'abortable' => false ]
3138 );
3139 }
3140
3143 ParserOutput &$parserOutput, ParserOptions $parserOptions
3144 ): void {
3145 $this->container->run(
3146 'OutputTransformLastStage',
3147 [ &$parserOutput, $parserOptions ],
3148 [ 'abortable' => false ]
3149 );
3150 }
3151
3153 public function onPageContentLanguage( $title, &$pageLang, $userLang ) {
3154 return $this->container->run(
3155 'PageContentLanguage',
3156 [ $title, &$pageLang, $userLang ]
3157 );
3158 }
3159
3161 public function onPageDelete(
3162 ProperPageIdentity $page,
3163 Authority $deleter,
3164 string $reason,
3165 StatusValue $status,
3166 bool $suppress
3167 ) {
3168 return $this->container->run(
3169 'PageDelete',
3170 [ $page, $deleter, $reason, $status, $suppress ]
3171 );
3172 }
3173
3175 public function onPageDeleteComplete(
3176 ProperPageIdentity $page,
3177 Authority $deleter,
3178 string $reason,
3179 int $pageID,
3180 RevisionRecord $deletedRev,
3181 ManualLogEntry $logEntry,
3182 int $archivedRevisionCount
3183 ) {
3184 return $this->container->run(
3185 'PageDeleteComplete',
3186 [ $page, $deleter, $reason, $pageID, $deletedRev, $logEntry, $archivedRevisionCount ]
3187 );
3188 }
3189
3191 public function onPageDeletionDataUpdates( $title, $revision, &$updates ) {
3192 return $this->container->run(
3193 'PageDeletionDataUpdates',
3194 [ $title, $revision, &$updates ]
3195 );
3196 }
3197
3199 public function onPageUndelete(
3200 ProperPageIdentity $page,
3201 Authority $performer,
3202 string $reason,
3203 bool $unsuppress,
3204 array $timestamps,
3205 array $fileVersions,
3206 StatusValue $status
3207 ) {
3208 return $this->container->run(
3209 'PageUndelete',
3210 [ $page, $performer, $reason, $unsuppress, $timestamps, $fileVersions, $status ]
3211 );
3212 }
3213
3215 public function onPageUndeleteComplete(
3216 ProperPageIdentity $page,
3217 Authority $restorer,
3218 string $reason,
3219 RevisionRecord $restoredRev,
3220 ManualLogEntry $logEntry,
3221 int $restoredRevisionCount,
3222 bool $created,
3223 array $restoredPageIds
3224 ): void {
3225 $this->container->run(
3226 'PageUndeleteComplete',
3227 [
3228 $page,
3229 $restorer,
3230 $reason,
3231 $restoredRev,
3232 $logEntry,
3233 $restoredRevisionCount,
3234 $created,
3235 $restoredPageIds
3236 ],
3237 [ 'abortable' => false ]
3238 );
3239 }
3240
3242 public function onPageHistoryBeforeList( $article, $context ) {
3243 return $this->container->run(
3244 'PageHistoryBeforeList',
3245 [ $article, $context ]
3246 );
3247 }
3248
3250 public function onPageHistoryLineEnding( $historyAction, &$row, &$s, &$classes,
3251 &$attribs
3252 ) {
3253 return $this->container->run(
3254 'PageHistoryLineEnding',
3255 [ $historyAction, &$row, &$s, &$classes, &$attribs ]
3256 );
3257 }
3258
3260 public function onPageHistoryPager__doBatchLookups( $pager, $result ) {
3261 return $this->container->run(
3262 'PageHistoryPager::doBatchLookups',
3263 [ $pager, $result ]
3264 );
3265 }
3266
3268 public function onPageHistoryPager__getQueryInfo( $pager, &$queryInfo ) {
3269 return $this->container->run(
3270 'PageHistoryPager::getQueryInfo',
3271 [ $pager, &$queryInfo ]
3272 );
3273 }
3274
3276 public function onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
3277 return $this->container->run(
3278 'PageMoveComplete',
3279 [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
3280 );
3281 }
3282
3284 public function onPageMoveCompleting( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
3285 return $this->container->run(
3286 'PageMoveCompleting',
3287 [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
3288 );
3289 }
3290
3292 public function onPageRenderingHash( &$confstr, $user, &$forOptions ) {
3293 return $this->container->run(
3294 'PageRenderingHash',
3295 [ &$confstr, $user, &$forOptions ]
3296 );
3297 }
3298
3300 public function onPageSaveComplete( $wikiPage, $user, $summary, $flags,
3301 $revisionRecord, $editResult
3302 ) {
3303 return $this->container->run(
3304 'PageSaveComplete',
3305 [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult ]
3306 );
3307 }
3308
3310 public function onPageViewUpdates( $wikipage, $user ) {
3311 return $this->container->run(
3312 'PageViewUpdates',
3313 [ $wikipage, $user ]
3314 );
3315 }
3316
3318 public function onParserAfterParse( $parser, &$text, $stripState ) {
3319 return $this->container->run(
3320 'ParserAfterParse',
3321 [ $parser, &$text, $stripState ]
3322 );
3323 }
3324
3326 public function onParserAfterTidy( $parser, &$text ) {
3327 return $this->container->run(
3328 'ParserAfterTidy',
3329 [ $parser, &$text ]
3330 );
3331 }
3332
3334 public function onParserBeforeInternalParse( $parser, &$text, $stripState ) {
3335 return $this->container->run(
3336 'ParserBeforeInternalParse',
3337 [ $parser, &$text, $stripState ]
3338 );
3339 }
3340
3342 public function onParserBeforePreprocess( $parser, &$text, $stripState ) {
3343 return $this->container->run(
3344 'ParserBeforePreprocess',
3345 [ $parser, &$text, $stripState ]
3346 );
3347 }
3348
3350 public function onParserCacheSaveComplete( $parserCache, $parserOutput, $title,
3351 $popts, $revId
3352 ) {
3353 return $this->container->run(
3354 'ParserCacheSaveComplete',
3355 [ $parserCache, $parserOutput, $title, $popts, $revId ]
3356 );
3357 }
3358
3360 public function onParserClearState( $parser ) {
3361 return $this->container->run(
3362 'ParserClearState',
3363 [ $parser ]
3364 );
3365 }
3366
3368 public function onParserCloned( $parser ) {
3369 return $this->container->run(
3370 'ParserCloned',
3371 [ $parser ]
3372 );
3373 }
3374
3376 public function onParserFetchTemplateData( array $titles, array &$tplData ): bool {
3377 return $this->container->run(
3378 'ParserFetchTemplateData',
3379 [ $titles, &$tplData ]
3380 );
3381 }
3382
3384 public function onParserFirstCallInit( $parser ) {
3385 return $this->container->run(
3386 'ParserFirstCallInit',
3387 [ $parser ]
3388 );
3389 }
3390
3392 public function onParserGetVariableValueSwitch( $parser, &$variableCache,
3393 $magicWordId, &$ret, $frame
3394 ) {
3395 return $this->container->run(
3396 'ParserGetVariableValueSwitch',
3397 [ $parser, &$variableCache, $magicWordId, &$ret, $frame ]
3398 );
3399 }
3400
3402 public function onParserGetVariableValueTs( $parser, &$time ) {
3403 return $this->container->run(
3404 'ParserGetVariableValueTs',
3405 [ $parser, &$time ]
3406 );
3407 }
3408
3410 public function onParserLimitReportFormat( $key, &$value, &$report, $isHTML,
3411 $localize
3412 ) {
3413 return $this->container->run(
3414 'ParserLimitReportFormat',
3415 [ $key, &$value, &$report, $isHTML, $localize ]
3416 );
3417 }
3418
3420 public function onParserLimitReportPrepare( $parser, $output ) {
3421 return $this->container->run(
3422 'ParserLimitReportPrepare',
3423 [ $parser, $output ]
3424 );
3425 }
3426
3428 public function onParserLogLinterData( string $title, int $revId, array $lints ): bool {
3429 return $this->container->run(
3430 'ParserLogLinterData',
3431 [ $title, $revId, $lints ]
3432 );
3433 }
3434
3436 public function onParserMakeImageParams( $title, $file, &$params, $parser ) {
3437 return $this->container->run(
3438 'ParserMakeImageParams',
3439 [ $title, $file, &$params, $parser ]
3440 );
3441 }
3442
3444 public function onParserModifyImageHTML( Parser $parser, File $file,
3445 array $params, string &$html
3446 ): void {
3447 $this->container->run(
3448 'ParserModifyImageHTML',
3449 [ $parser, $file, $params, &$html ],
3450 [ 'abortable' => false ]
3451 );
3452 }
3453
3455 public function onParserOptionsDefaults( &$defaults, &$inCacheKey, &$lazyLoad, &$postprocOpts = [] ) {
3456 return $this->container->run(
3457 'ParserOptionsDefaults',
3458 [ &$defaults, &$inCacheKey, &$lazyLoad, &$postprocOpts ]
3459 );
3460 }
3461
3463 public function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyLoad ) {
3464 return $this->container->run(
3465 'ParserOptionsRegister',
3466 [ &$defaults, &$inCacheKey, &$lazyLoad ]
3467 );
3468 }
3469
3471 public function onParserOutputPostCacheTransform( $parserOutput, &$text,
3472 &$options
3473 ): void {
3474 $this->container->run(
3475 'ParserOutputPostCacheTransform',
3476 [ $parserOutput, &$text, &$options ],
3477 [ 'abortable' => false ]
3478 );
3479 }
3480
3482 public function onParserOutputStashForEdit( $page, $content, $output, $summary,
3483 $user
3484 ) {
3485 return $this->container->run(
3486 'ParserOutputStashForEdit',
3487 [ $page, $content, $output, $summary, $user ]
3488 );
3489 }
3490
3492 public function onParserPreSaveTransformComplete( $parser, &$text ) {
3493 return $this->container->run(
3494 'ParserPreSaveTransformComplete',
3495 [ $parser, &$text ]
3496 );
3497 }
3498
3500 public function onParserTestGlobals( &$globals ) {
3501 return $this->container->run(
3502 'ParserTestGlobals',
3503 [ &$globals ]
3504 );
3505 }
3506
3508 public function onPasswordPoliciesForUser( $user, &$effectivePolicy ) {
3509 return $this->container->run(
3510 'PasswordPoliciesForUser',
3511 [ $user, &$effectivePolicy ]
3512 );
3513 }
3514
3516 public function onPerformRetroactiveAutoblock( $block, &$blockIds ) {
3517 return $this->container->run(
3518 'PerformRetroactiveAutoblock',
3519 [ $block, &$blockIds ]
3520 );
3521 }
3522
3524 public function onPingLimiter( $user, $action, &$result, $incrBy ) {
3525 return $this->container->run(
3526 'PingLimiter',
3527 [ $user, $action, &$result, $incrBy ]
3528 );
3529 }
3530
3532 public function onPlaceNewSection( $content, $oldtext, $subject, &$text ) {
3533 return $this->container->run(
3534 'PlaceNewSection',
3535 [ $content, $oldtext, $subject, &$text ]
3536 );
3537 }
3538
3540 public function onPostLoginRedirect( &$returnTo, &$returnToQuery, &$type ) {
3541 return $this->container->run(
3542 'PostLoginRedirect',
3543 [ &$returnTo, &$returnToQuery, &$type ]
3544 );
3545 }
3546
3548 public function onPreferencesFormPreSave( $formData, $form, $user, &$result,
3549 $oldUserOptions
3550 ) {
3551 return $this->container->run(
3552 'PreferencesFormPreSave',
3553 [ $formData, $form, $user, &$result, $oldUserOptions ]
3554 );
3555 }
3556
3558 public function onPreferencesGetIcon( &$iconNames ) {
3559 return $this->container->run(
3560 'PreferencesGetIcon',
3561 [ &$iconNames ]
3562 );
3563 }
3564
3566 public function onPreferencesGetLayout( &$useMobileLayout, $skinName,
3567 $skinProperties = []
3568 ) {
3569 return $this->container->run(
3570 'PreferencesGetLayout',
3571 [ &$useMobileLayout, $skinName, $skinProperties ]
3572 );
3573 }
3574
3576 public function onPreferencesGetLegend( $form, $key, &$legend ) {
3577 return $this->container->run(
3578 'PreferencesGetLegend',
3579 [ $form, $key, &$legend ]
3580 );
3581 }
3582
3584 public function onPrefixSearchExtractNamespace( &$namespaces, &$search ) {
3585 return $this->container->run(
3586 'PrefixSearchExtractNamespace',
3587 [ &$namespaces, &$search ]
3588 );
3589 }
3590
3592 public function onPrefsEmailAudit( $user, $oldaddr, $newaddr ) {
3593 return $this->container->run(
3594 'PrefsEmailAudit',
3595 [ $user, $oldaddr, $newaddr ]
3596 );
3597 }
3598
3600 public function onProtectionForm__buildForm( $article, &$output ) {
3601 return $this->container->run(
3602 'ProtectionForm::buildForm',
3603 [ $article, &$output ]
3604 );
3605 }
3606
3608 public function onProtectionFormAddFormFields( $article, &$hookFormOptions ) {
3609 return $this->container->run(
3610 'ProtectionFormAddFormFields',
3611 [ $article, &$hookFormOptions ]
3612 );
3613 }
3614
3616 public function onProtectionForm__save( $article, &$errorMsg, $reasonstr ) {
3617 return $this->container->run(
3618 'ProtectionForm::save',
3619 [ $article, &$errorMsg, $reasonstr ]
3620 );
3621 }
3622
3624 public function onProtectionForm__showLogExtract( $article, $out ) {
3625 return $this->container->run(
3626 'ProtectionForm::showLogExtract',
3627 [ $article, $out ]
3628 );
3629 }
3630
3632 public function onRandomPageQuery( &$tables, &$conds, &$joinConds ) {
3633 return $this->container->run(
3634 'RandomPageQuery',
3635 [ &$tables, &$conds, &$joinConds ]
3636 );
3637 }
3638
3640 public function onRawPageViewBeforeOutput( $obj, &$text ) {
3641 return $this->container->run(
3642 'RawPageViewBeforeOutput',
3643 [ $obj, &$text ]
3644 );
3645 }
3646
3649 UserIdentity $performer,
3650 UserIdentity $target,
3651 array $conditions
3652 ): void {
3653 $this->container->run(
3654 'ReadPrivateUserRequirementsCondition',
3655 [ $performer, $target, $conditions ],
3656 [ 'abortable' => false ]
3657 );
3658 }
3659
3661 public function onRecentChangesPurgeRows( $rows ): void {
3662 $this->container->run(
3663 'RecentChangesPurgeRows',
3664 [ $rows ]
3665 );
3666 }
3667
3669 public function onRecentChangesPurgeQuery( $query, &$callbacks ): void {
3670 $this->container->run(
3671 'RecentChangesPurgeQuery',
3672 [ $query, &$callbacks ]
3673 );
3674 }
3675
3677 public function onRecentChange_save( $recentChange ) {
3678 return $this->container->run(
3679 'RecentChange_save',
3680 [ $recentChange ]
3681 );
3682 }
3683
3685 public function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
3686 return $this->container->run(
3687 'RedirectSpecialArticleRedirectParams',
3688 [ &$redirectParams ]
3689 );
3690 }
3691
3693 public function onRejectParserCacheValue( $parserOutput, $wikiPage,
3694 $parserOptions
3695 ) {
3696 return $this->container->run(
3697 'RejectParserCacheValue',
3698 [ $parserOutput, $wikiPage, $parserOptions ]
3699 );
3700 }
3701
3703 public function onRenameUserAbort( int $uid, string $old, string $new ) {
3704 return $this->container->run(
3705 'RenameUserAbort',
3706 [ $uid, $old, $new ]
3707 );
3708 }
3709
3711 public function onRenameUserComplete( int $uid, string $old, string $new ): void {
3712 $this->container->run(
3713 'RenameUserComplete',
3714 [ $uid, $old, $new ],
3715 [ 'abortable' => false ]
3716 );
3717 }
3718
3720 public function onRenameUserPreRename( int $uid, string $old, string $new ): void {
3721 $this->container->run(
3722 'RenameUserPreRename',
3723 [ $uid, $old, $new ],
3724 [ 'abortable' => false ]
3725 );
3726 }
3727
3729 public function onRenameUserSQL( RenameuserSQL $renameUserSql ): void {
3730 $this->container->run(
3731 'RenameUserSQL',
3732 [ $renameUserSql ],
3733 [ 'abortable' => false ]
3734 );
3735 }
3736
3738 public function onRenameUserWarning( string $oldUsername, string $newUsername, array &$warnings ): void {
3739 $this->container->run(
3740 'RenameUserWarning',
3741 [ $oldUsername, $newUsername, &$warnings ],
3742 [ 'abortable' => false ]
3743 );
3744 }
3745
3747 public function onRequestContextCreateSkin( $context, &$skin ) {
3748 return $this->container->run(
3749 'RequestContextCreateSkin',
3750 [ $context, &$skin ]
3751 );
3752 }
3753
3755 public function onResetPasswordExpiration( $user, &$newExpire ) {
3756 return $this->container->run(
3757 'ResetPasswordExpiration',
3758 [ $user, &$newExpire ]
3759 );
3760 }
3761
3763 public function onRevisionDataUpdates( $title, $renderedRevision, &$updates ) {
3764 return $this->container->run(
3765 'RevisionDataUpdates',
3766 [ $title, $renderedRevision, &$updates ]
3767 );
3768 }
3769
3771 public function onRevisionFromEditComplete( $wikiPage, $rev, $originalRevId, $user, &$tags ) {
3772 return $this->container->run(
3773 'RevisionFromEditComplete',
3774 [ $wikiPage, $rev, $originalRevId, $user, &$tags ]
3775 );
3776 }
3777
3779 public function onRevisionRecordInserted( $revisionRecord ) {
3780 return $this->container->run(
3781 'RevisionRecordInserted',
3782 [ $revisionRecord ]
3783 );
3784 }
3785
3787 public function onRevisionUndeleted( $revisionRecord, $oldPageID ) {
3788 return $this->container->run(
3789 'RevisionUndeleted',
3790 [ $revisionRecord, $oldPageID ]
3791 );
3792 }
3793
3795 public function onRollbackComplete( $wikiPage, $user, $revision, $current ) {
3796 return $this->container->run(
3797 'RollbackComplete',
3798 [ $wikiPage, $user, $revision, $current ]
3799 );
3800 }
3801
3803 public function onSearchableNamespaces( &$arr ) {
3804 return $this->container->run(
3805 'SearchableNamespaces',
3806 [ &$arr ]
3807 );
3808 }
3809
3811 public function onSearchAfterNoDirectMatch( $term, &$title ) {
3812 return $this->container->run(
3813 'SearchAfterNoDirectMatch',
3814 [ $term, &$title ]
3815 );
3816 }
3817
3819 public function onSearchDataForIndex( &$fields, $handler, $page, $output, $engine ) {
3820 return $this->container->run(
3821 'SearchDataForIndex',
3822 [ &$fields, $handler, $page, $output, $engine ]
3823 );
3824 }
3825
3827 public function onSearchDataForIndex2( array &$fields, ContentHandler $handler,
3828 WikiPage $page, ParserOutput $output, SearchEngine $engine, RevisionRecord $revision
3829 ) {
3830 return $this->container->run(
3831 'SearchDataForIndex2',
3832 [ &$fields, $handler, $page, $output, $engine, $revision ]
3833 );
3834 }
3835
3837 public function onSearchGetNearMatch( $term, &$title ) {
3838 return $this->container->run(
3839 'SearchGetNearMatch',
3840 [ $term, &$title ]
3841 );
3842 }
3843
3845 public function onSearchGetNearMatchBefore( $allSearchTerms, &$titleResult ) {
3846 return $this->container->run(
3847 'SearchGetNearMatchBefore',
3848 [ $allSearchTerms, &$titleResult ]
3849 );
3850 }
3851
3853 public function onSearchGetNearMatchComplete( $term, &$title ) {
3854 return $this->container->run(
3855 'SearchGetNearMatchComplete',
3856 [ $term, &$title ]
3857 );
3858 }
3859
3861 public function onSearchIndexFields( &$fields, $engine ) {
3862 return $this->container->run(
3863 'SearchIndexFields',
3864 [ &$fields, $engine ]
3865 );
3866 }
3867
3869 public function onSearchResultInitFromTitle( $title, &$id ) {
3870 return $this->container->run(
3871 'SearchResultInitFromTitle',
3872 [ $title, &$id ]
3873 );
3874 }
3875
3877 public function onSearchResultProvideDescription( array $pageIdentities, &$descriptions ) {
3878 return $this->container->run(
3879 'SearchResultProvideDescription',
3880 [ $pageIdentities, &$descriptions ]
3881 );
3882 }
3883
3885 public function onSearchResultProvideThumbnail( array $pageIdentities, &$thumbnails, ?int $size = null ) {
3886 return $this->container->run(
3887 'SearchResultProvideThumbnail',
3888 [ $pageIdentities, &$thumbnails, $size ]
3889 );
3890 }
3891
3893 public function onSearchResultsAugment( &$setAugmentors, &$rowAugmentors ) {
3894 return $this->container->run(
3895 'SearchResultsAugment',
3896 [ &$setAugmentors, &$rowAugmentors ]
3897 );
3898 }
3899
3901 public function onSecuritySensitiveOperationStatus( &$status, $operation,
3902 $session, $timeSinceAuth
3903 ) {
3904 return $this->container->run(
3905 'SecuritySensitiveOperationStatus',
3906 [ &$status, $operation, $session, $timeSinceAuth ]
3907 );
3908 }
3909
3911 public function onSelfLinkBegin( $nt, &$html, &$trail, &$prefix, &$ret ) {
3912 return $this->container->run(
3913 'SelfLinkBegin',
3914 [ $nt, &$html, &$trail, &$prefix, &$ret ]
3915 );
3916 }
3917
3919 public function onSessionCheckInfo( &$reason, $info, $request, $metadata,
3920 $data
3921 ) {
3922 return $this->container->run(
3923 'SessionCheckInfo',
3924 [ &$reason, $info, $request, $metadata, $data ]
3925 );
3926 }
3927
3929 public function onSessionMetadata( $backend, &$metadata, $requests ) {
3930 return $this->container->run(
3931 'SessionMetadata',
3932 [ $backend, &$metadata, $requests ]
3933 );
3934 }
3935
3937 public function onSetupAfterCache() {
3938 return $this->container->run(
3939 'SetupAfterCache',
3940 []
3941 );
3942 }
3943
3945 public function onShortPagesQuery( &$tables, &$conds, &$joinConds, &$options ) {
3946 return $this->container->run(
3947 'ShortPagesQuery',
3948 [ &$tables, &$conds, &$joinConds, &$options ]
3949 );
3950 }
3951
3953 public function onShowMissingArticle( $article ) {
3954 return $this->container->run(
3955 'ShowMissingArticle',
3956 [ $article ]
3957 );
3958 }
3959
3961 public function onShowSearchHit( $searchPage, $result, $terms, &$link,
3962 &$redirect, &$section, &$extract, &$score, &$size, &$date, &$related, &$html
3963 ) {
3964 return $this->container->run(
3965 'ShowSearchHit',
3966 [ $searchPage, $result, $terms, &$link, &$redirect, &$section,
3967 &$extract, &$score, &$size, &$date, &$related, &$html ]
3968 );
3969 }
3970
3972 public function onShowSearchHitTitle( &$title, &$titleSnippet, $result, $terms,
3973 $specialSearch, &$query, &$attributes
3974 ) {
3975 return $this->container->run(
3976 'ShowSearchHitTitle',
3977 [ &$title, &$titleSnippet, $result, $terms, $specialSearch,
3978 &$query, &$attributes ]
3979 );
3980 }
3981
3983 public function onSidebarBeforeOutput( $skin, &$sidebar ): void {
3984 $this->container->run(
3985 'SidebarBeforeOutput',
3986 [ $skin, &$sidebar ],
3987 [ 'abortable' => false ]
3988 );
3989 }
3990
3992 public function onSiteNoticeAfter( &$siteNotice, $skin ) {
3993 return $this->container->run(
3994 'SiteNoticeAfter',
3995 [ &$siteNotice, $skin ]
3996 );
3997 }
3998
4000 public function onSiteNoticeBefore( &$siteNotice, $skin ) {
4001 return $this->container->run(
4002 'SiteNoticeBefore',
4003 [ &$siteNotice, $skin ]
4004 );
4005 }
4006
4008 public function onSkinPageReadyConfig( RL\Context $context,
4009 array &$config
4010 ) {
4011 $this->container->run(
4012 'SkinPageReadyConfig',
4013 [ $context, &$config ],
4014 [ 'abortable' => true ]
4015 );
4016 }
4017
4019 public function onSkinAddFooterLinks( Skin $skin, string $key, array &$footerItems ) {
4020 $this->container->run(
4021 'SkinAddFooterLinks',
4022 [ $skin, $key, &$footerItems ]
4023 );
4024 }
4025
4027 public function onSkinAfterBottomScripts( $skin, &$text ) {
4028 return $this->container->run(
4029 'SkinAfterBottomScripts',
4030 [ $skin, &$text ]
4031 );
4032 }
4033
4035 public function onSkinAfterContent( &$data, $skin ) {
4036 return $this->container->run(
4037 'SkinAfterContent',
4038 [ &$data, $skin ]
4039 );
4040 }
4041
4043 public function onSkinAfterPortlet( $skin, $portlet, &$html ) {
4044 return $this->container->run(
4045 'SkinAfterPortlet',
4046 [ $skin, $portlet, &$html ]
4047 );
4048 }
4049
4051 public function onSkinBuildSidebar( $skin, &$bar ) {
4052 return $this->container->run(
4053 'SkinBuildSidebar',
4054 [ $skin, &$bar ]
4055 );
4056 }
4057
4059 public function onSkinCopyrightFooterMessage( $title, $type, &$msg ) {
4060 return $this->container->run(
4061 'SkinCopyrightFooterMessage',
4062 [ $title, $type, &$msg ]
4063 );
4064 }
4065
4067 public function onSkinEditSectionLinks( $skin, $title, $section, $tooltip,
4068 &$result, $lang
4069 ) {
4070 return $this->container->run(
4071 'SkinEditSectionLinks',
4072 [ $skin, $title, $section, $tooltip, &$result, $lang ]
4073 );
4074 }
4075
4077 public function onSkinPreloadExistence( &$titles, $skin ) {
4078 return $this->container->run(
4079 'SkinPreloadExistence',
4080 [ &$titles, $skin ]
4081 );
4082 }
4083
4085 public function onSkinSubPageSubtitle( &$subpages, $skin, $out ) {
4086 return $this->container->run(
4087 'SkinSubPageSubtitle',
4088 [ &$subpages, $skin, $out ]
4089 );
4090 }
4091
4093 public function onSkinTemplateGetLanguageLink( &$languageLink,
4094 $languageLinkTitle, $title, $outputPage
4095 ) {
4096 return $this->container->run(
4097 'SkinTemplateGetLanguageLink',
4098 [ &$languageLink, $languageLinkTitle, $title, $outputPage ]
4099 );
4100 }
4101
4103 public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
4104 $this->container->run(
4105 'SkinTemplateNavigation::Universal',
4106 [ $sktemplate, &$links ],
4107 [ 'abortable' => false ]
4108 );
4109 }
4110
4112 public function onSoftwareInfo( &$software ) {
4113 return $this->container->run(
4114 'SoftwareInfo',
4115 [ &$software ]
4116 );
4117 }
4118
4120 public function onSpecialBlockModifyFormFields( $sp, &$fields ) {
4121 return $this->container->run(
4122 'SpecialBlockModifyFormFields',
4123 [ $sp, &$fields ]
4124 );
4125 }
4126
4128 public function onSpecialContributionsBeforeMainOutput( $id, $user, $sp ) {
4129 return $this->container->run(
4130 'SpecialContributionsBeforeMainOutput',
4131 [ $id, $user, $sp ]
4132 );
4133 }
4134
4136 public function onSpecialContributions__formatRow__flags( $context, $row,
4137 &$flags
4138 ) {
4139 return $this->container->run(
4140 'SpecialContributions::formatRow::flags',
4141 [ $context, $row, &$flags ]
4142 );
4143 }
4144
4146 public function onSpecialContributions__getForm__filters( $sp, &$filters ) {
4147 return $this->container->run(
4148 'SpecialContributions::getForm::filters',
4149 [ $sp, &$filters ]
4150 );
4151 }
4152
4154 public function onSpecialCreateAccountBenefits( ?string &$html, array $info, array &$options ) {
4155 return $this->container->run(
4156 'SpecialCreateAccountBenefits',
4157 [ &$html, $info, &$options ]
4158 );
4159 }
4160
4162 public function onSpecialExportGetExtraPages( $inputPages, &$extraPages ) {
4163 return $this->container->run(
4164 'SpecialExportGetExtraPages',
4165 [ $inputPages, &$extraPages ]
4166 );
4167 }
4168
4170 public function onSpecialListusersDefaultQuery( $pager, &$query ) {
4171 return $this->container->run(
4172 'SpecialListusersDefaultQuery',
4173 [ $pager, &$query ]
4174 );
4175 }
4176
4178 public function onSpecialListusersFormatRow( &$item, $row ) {
4179 return $this->container->run(
4180 'SpecialListusersFormatRow',
4181 [ &$item, $row ]
4182 );
4183 }
4184
4186 public function onSpecialListusersHeader( $pager, &$out ) {
4187 return $this->container->run(
4188 'SpecialListusersHeader',
4189 [ $pager, &$out ]
4190 );
4191 }
4192
4194 public function onSpecialListusersHeaderForm( $pager, &$out ) {
4195 return $this->container->run(
4196 'SpecialListusersHeaderForm',
4197 [ $pager, &$out ]
4198 );
4199 }
4200
4202 public function onSpecialListusersQueryInfo( $pager, &$query ) {
4203 return $this->container->run(
4204 'SpecialListusersQueryInfo',
4205 [ $pager, &$query ]
4206 );
4207 }
4208
4210 public function onSpecialLogAddLogSearchRelations( $type, $request, &$qc ) {
4211 return $this->container->run(
4212 'SpecialLogAddLogSearchRelations',
4213 [ $type, $request, &$qc ]
4214 );
4215 }
4216
4219 array $params,
4220 string &$type
4221 ): void {
4222 $this->container->run(
4223 'SpecialLogResolveLogType',
4224 [ $params, &$type ],
4225 [ 'abortable' => false ]
4226 );
4227 }
4228
4231 IContextSource $context,
4232 array &$subpages
4233 ): void {
4234 $this->container->run(
4235 'SpecialLogGetSubpagesForPrefixSearch',
4236 [ $context, &$subpages ],
4237 [ 'abortable' => false ]
4238 );
4239 }
4240
4242 public function onSpecialMovepageAfterMove( $movePage, $oldTitle, $newTitle ) {
4243 return $this->container->run(
4244 'SpecialMovepageAfterMove',
4245 [ $movePage, $oldTitle, $newTitle ]
4246 );
4247 }
4248
4250 public function onSpecialMuteModifyFormFields( $target, $user, &$fields ) {
4251 return $this->container->run(
4252 'SpecialMuteModifyFormFields',
4253 [ $target, $user, &$fields ]
4254 );
4255 }
4256
4258 public function onSpecialNewpagesConditions( $special, $opts, &$conds,
4259 &$tables, &$fields, &$join_conds
4260 ) {
4261 return $this->container->run(
4262 'SpecialNewpagesConditions',
4263 [ $special, $opts, &$conds, &$tables, &$fields, &$join_conds ]
4264 );
4265 }
4266
4268 public function onSpecialNewPagesFilters( $special, &$filters ) {
4269 return $this->container->run(
4270 'SpecialNewPagesFilters',
4271 [ $special, &$filters ]
4272 );
4273 }
4274
4276 public function onSpecialPageAfterExecute( $special, $subPage ) {
4277 return $this->container->run(
4278 'SpecialPageAfterExecute',
4279 [ $special, $subPage ]
4280 );
4281 }
4282
4284 public function onSpecialPageBeforeExecute( $special, $subPage ) {
4285 return $this->container->run(
4286 'SpecialPageBeforeExecute',
4287 [ $special, $subPage ]
4288 );
4289 }
4290
4292 public function onSpecialPageBeforeFormDisplay( $name, $form ) {
4293 return $this->container->run(
4294 'SpecialPageBeforeFormDisplay',
4295 [ $name, $form ]
4296 );
4297 }
4298
4300 public function onSpecialPage_initList( &$list ) {
4301 return $this->container->run(
4302 'SpecialPage_initList',
4303 [ &$list ]
4304 );
4305 }
4306
4308 public function onSpecialPasswordResetOnSubmit( &$users, $data, &$error ) {
4309 return $this->container->run(
4310 'SpecialPasswordResetOnSubmit',
4311 [ &$users, $data, &$error ]
4312 );
4313 }
4314
4316 public function onSpecialPrefixIndexGetFormFilters( IContextSource $contextSource, array &$filters ) {
4317 $this->container->run(
4318 'SpecialPrefixIndexGetFormFilters',
4319 [ $contextSource, &$filters ],
4320 [ 'abortable' => false ]
4321 );
4322 }
4323
4325 public function onSpecialPrefixIndexQuery( array $fieldData, SelectQueryBuilder $queryBuilder ) {
4326 $this->container->run(
4327 'SpecialPrefixIndexQuery',
4328 [ $fieldData, $queryBuilder ],
4329 [ 'abortable' => false ]
4330 );
4331 }
4332
4334 public function onSpecialRandomGetRandomTitle( &$randstr, &$isRedir,
4335 &$namespaces, &$extra, &$title
4336 ) {
4337 return $this->container->run(
4338 'SpecialRandomGetRandomTitle',
4339 [ &$randstr, &$isRedir, &$namespaces, &$extra, &$title ]
4340 );
4341 }
4342
4344 public function onSpecialRecentChangesPanel( &$extraOpts, $opts ) {
4345 return $this->container->run(
4346 'SpecialRecentChangesPanel',
4347 [ &$extraOpts, $opts ]
4348 );
4349 }
4350
4352 public function onSpecialResetTokensTokens( &$tokens ) {
4353 return $this->container->run(
4354 'SpecialResetTokensTokens',
4355 [ &$tokens ]
4356 );
4357 }
4358
4360 public function onSpecialSearchCreateLink( $t, &$params ) {
4361 return $this->container->run(
4362 'SpecialSearchCreateLink',
4363 [ $t, &$params ]
4364 );
4365 }
4366
4368 public function onSpecialSearchGoResult( $term, $title, &$url ) {
4369 return $this->container->run(
4370 'SpecialSearchGoResult',
4371 [ $term, $title, &$url ]
4372 );
4373 }
4374
4376 public function onSpecialSearchNogomatch( &$title ) {
4377 return $this->container->run(
4378 'SpecialSearchNogomatch',
4379 [ &$title ]
4380 );
4381 }
4382
4384 public function onSpecialSearchPowerBox( &$showSections, $term, &$opts ) {
4385 return $this->container->run(
4386 'SpecialSearchPowerBox',
4387 [ &$showSections, $term, &$opts ]
4388 );
4389 }
4390
4392 public function onSpecialSearchProfileForm( $search, &$form, $profile, $term,
4393 $opts
4394 ) {
4395 return $this->container->run(
4396 'SpecialSearchProfileForm',
4397 [ $search, &$form, $profile, $term, $opts ]
4398 );
4399 }
4400
4402 public function onSpecialSearchProfiles( &$profiles ) {
4403 return $this->container->run(
4404 'SpecialSearchProfiles',
4405 [ &$profiles ]
4406 );
4407 }
4408
4410 public function onSpecialSearchResults( $term, &$titleMatches, &$textMatches ) {
4411 return $this->container->run(
4412 'SpecialSearchResults',
4413 [ $term, &$titleMatches, &$textMatches ]
4414 );
4415 }
4416
4418 public function onSpecialSearchResultsAppend( $specialSearch, $output, $term ) {
4419 return $this->container->run(
4420 'SpecialSearchResultsAppend',
4421 [ $specialSearch, $output, $term ]
4422 );
4423 }
4424
4426 public function onSpecialSearchResultsPrepend( $specialSearch, $output, $term ) {
4427 return $this->container->run(
4428 'SpecialSearchResultsPrepend',
4429 [ $specialSearch, $output, $term ]
4430 );
4431 }
4432
4434 public function onSpecialSearchSetupEngine( $search, $profile, $engine ) {
4435 return $this->container->run(
4436 'SpecialSearchSetupEngine',
4437 [ $search, $profile, $engine ]
4438 );
4439 }
4440
4442 public function onSpecialStatsAddExtra( &$extraStats, $context ) {
4443 return $this->container->run(
4444 'SpecialStatsAddExtra',
4445 [ &$extraStats, $context ]
4446 );
4447 }
4448
4451 $catTitle, &$html
4452 ) {
4453 return $this->container->run(
4454 'SpecialTrackingCategories::generateCatLink',
4455 [ $specialPage, $catTitle, &$html ]
4456 );
4457 }
4458
4460 public function onSpecialTrackingCategories__preprocess( $specialPage,
4461 $trackingCategories
4462 ) {
4463 return $this->container->run(
4464 'SpecialTrackingCategories::preprocess',
4465 [ $specialPage, $trackingCategories ]
4466 );
4467 }
4468
4470 public function onSpecialUploadComplete( $form ) {
4471 return $this->container->run(
4472 'SpecialUploadComplete',
4473 [ $form ]
4474 );
4475 }
4476
4478 public function onSpecialVersionVersionUrl( $version, &$versionUrl ) {
4479 return $this->container->run(
4480 'SpecialVersionVersionUrl',
4481 [ $version, &$versionUrl ]
4482 );
4483 }
4484
4486 public function onSpreadAnyEditBlock( $user, bool &$blockWasSpread ) {
4487 return $this->container->run(
4488 'SpreadAnyEditBlock',
4489 [ $user, &$blockWasSpread ]
4490 );
4491 }
4492
4494 public function onSpecialWhatLinksHereQuery( $table, $data, $queryBuilder ): void {
4495 $this->container->run(
4496 'SpecialWhatLinksHereQuery',
4497 [ $table, $data, $queryBuilder ],
4498 [ 'abortable' => false ]
4499 );
4500 }
4501
4504 Session $session,
4505 UserIdentity $user,
4506 string $returnTo,
4507 string $returnToQuery,
4508 string $returnToAnchor,
4509 &$redirectUrl
4510 ) {
4511 return $this->container->run(
4512 'TempUserCreatedRedirect',
4513 [ $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ]
4514 );
4515 }
4516
4518 public function onTestCanonicalRedirect( $request, $title, $output ) {
4519 return $this->container->run(
4520 'TestCanonicalRedirect',
4521 [ $request, $title, $output ]
4522 );
4523 }
4524
4526 public function onThumbnailBeforeProduceHTML( $thumbnail, &$attribs,
4527 &$linkAttribs
4528 ) {
4529 return $this->container->run(
4530 'ThumbnailBeforeProduceHTML',
4531 [ $thumbnail, &$attribs, &$linkAttribs ]
4532 );
4533 }
4534
4536 public function onTitleExists( $title, &$exists ) {
4537 return $this->container->run(
4538 'TitleExists',
4539 [ $title, &$exists ]
4540 );
4541 }
4542
4544 public function onTitleGetEditNotices( $title, $oldid, &$notices ) {
4545 return $this->container->run(
4546 'TitleGetEditNotices',
4547 [ $title, $oldid, &$notices ]
4548 );
4549 }
4550
4552 public function onTitleGetRestrictionTypes( $title, &$types ) {
4553 return $this->container->run(
4554 'TitleGetRestrictionTypes',
4555 [ $title, &$types ]
4556 );
4557 }
4558
4560 public function onTitleIsAlwaysKnown( $title, &$isKnown ) {
4561 return $this->container->run(
4562 'TitleIsAlwaysKnown',
4563 [ $title, &$isKnown ]
4564 );
4565 }
4566
4568 public function onTitleIsMovable( $title, &$result ) {
4569 return $this->container->run(
4570 'TitleIsMovable',
4571 [ $title, &$result ]
4572 );
4573 }
4574
4576 public function onTitleMove( $old, $nt, $user, $reason, &$status ) {
4577 return $this->container->run(
4578 'TitleMove',
4579 [ $old, $nt, $user, $reason, &$status ]
4580 );
4581 }
4582
4584 public function onTitleMoveStarting( $old, $nt, $user ) {
4585 return $this->container->run(
4586 'TitleMoveStarting',
4587 [ $old, $nt, $user ]
4588 );
4589 }
4590
4592 public function onTitleQuickPermissions( $title, $user, $action, &$errors,
4593 $doExpensiveQueries, $short
4594 ) {
4595 return $this->container->run(
4596 'TitleQuickPermissions',
4597 [ $title, $user, $action, &$errors, $doExpensiveQueries, $short ]
4598 );
4599 }
4600
4602 public function onTitleReadWhitelist( $title, $user, &$allowed ) {
4603 return $this->container->run(
4604 'TitleReadWhitelist',
4605 [ $title, $user, &$allowed ]
4606 );
4607 }
4608
4610 public function onTitleSquidURLs( $title, &$urls ) {
4611 return $this->container->run(
4612 'TitleSquidURLs',
4613 [ $title, &$urls ]
4614 );
4615 }
4616
4618 public function onUnblockUser( $block, $user, &$reason ) {
4619 return $this->container->run(
4620 'UnblockUser',
4621 [ $block, $user, &$reason ]
4622 );
4623 }
4624
4626 public function onUnblockUserComplete( $block, $user ) {
4627 return $this->container->run(
4628 'UnblockUserComplete',
4629 [ $block, $user ]
4630 );
4631 }
4632
4634 public function onUndeleteForm__showHistory( &$archive, $title ) {
4635 return $this->container->run(
4636 'UndeleteForm::showHistory',
4637 [ &$archive, $title ]
4638 );
4639 }
4640
4642 public function onUndeleteForm__showRevision( &$archive, $title ) {
4643 return $this->container->run(
4644 'UndeleteForm::showRevision',
4645 [ &$archive, $title ]
4646 );
4647 }
4648
4650 public function onUndeletePageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
4651 return $this->container->run(
4652 'UndeletePageToolLinks',
4653 [ $context, $linkRenderer, &$links ]
4654 );
4655 }
4656
4658 public function onUnitTestsAfterDatabaseSetup( $database, $prefix ) {
4659 return $this->container->run(
4660 'UnitTestsAfterDatabaseSetup',
4661 [ $database, $prefix ]
4662 );
4663 }
4664
4667 return $this->container->run(
4668 'UnitTestsBeforeDatabaseTeardown',
4669 []
4670 );
4671 }
4672
4674 public function onUnitTestsList( &$paths ) {
4675 return $this->container->run(
4676 'UnitTestsList',
4677 [ &$paths ]
4678 );
4679 }
4680
4682 public function onUnwatchArticle( $user, $page, &$status ) {
4683 return $this->container->run(
4684 'UnwatchArticle',
4685 [ $user, $page, &$status ]
4686 );
4687 }
4688
4690 public function onUnwatchArticleComplete( $user, $page ) {
4691 return $this->container->run(
4692 'UnwatchArticleComplete',
4693 [ $user, $page ]
4694 );
4695 }
4696
4698 public function onUploadComplete( $uploadBase ) {
4699 return $this->container->run(
4700 'UploadComplete',
4701 [ $uploadBase ]
4702 );
4703 }
4704
4706 public function onUploadCreateFromRequest( $type, &$className ) {
4707 return $this->container->run(
4708 'UploadCreateFromRequest',
4709 [ $type, &$className ]
4710 );
4711 }
4712
4714 public function onUploadFormInitDescriptor( &$descriptor ) {
4715 return $this->container->run(
4716 'UploadFormInitDescriptor',
4717 [ &$descriptor ]
4718 );
4719 }
4720
4722 public function onUploadFormSourceDescriptors( &$descriptor, &$radio,
4723 $selectedSourceType
4724 ) {
4725 return $this->container->run(
4726 'UploadFormSourceDescriptors',
4727 [ &$descriptor, &$radio, $selectedSourceType ]
4728 );
4729 }
4730
4732 public function onUploadForm_BeforeProcessing( $upload ) {
4733 return $this->container->run(
4734 'UploadForm:BeforeProcessing',
4735 [ $upload ]
4736 );
4737 }
4738
4740 public function onUploadForm_getInitialPageText( &$pageText, $msg, $config ) {
4741 return $this->container->run(
4742 'UploadForm:getInitialPageText',
4743 [ &$pageText, $msg, $config ]
4744 );
4745 }
4746
4748 public function onUploadForm_initial( $upload ) {
4749 return $this->container->run(
4750 'UploadForm:initial',
4751 [ $upload ]
4752 );
4753 }
4754
4756 public function onUploadStashFile( $upload, $user, $props, &$error ) {
4757 return $this->container->run(
4758 'UploadStashFile',
4759 [ $upload, $user, $props, &$error ]
4760 );
4761 }
4762
4764 public function onUploadVerifyFile( $upload, $mime, &$error ) {
4765 return $this->container->run(
4766 'UploadVerifyFile',
4767 [ $upload, $mime, &$error ]
4768 );
4769 }
4770
4772 public function onUploadVerifyUpload( $upload, $user, $props, $comment,
4773 $pageText, &$error
4774 ) {
4775 return $this->container->run(
4776 'UploadVerifyUpload',
4777 [ $upload, $user, $props, $comment, $pageText, &$error ]
4778 );
4779 }
4780
4782 public function onUserAddGroup( $user, &$group, &$expiry ) {
4783 return $this->container->run(
4784 'UserAddGroup',
4785 [ $user, &$group, &$expiry ]
4786 );
4787 }
4788
4790 public function onUserArrayFromResult( &$userArray, $res ) {
4791 return $this->container->run(
4792 'UserArrayFromResult',
4793 [ &$userArray, $res ]
4794 );
4795 }
4796
4798 public function onUserCan( $title, $user, $action, &$result ) {
4799 return $this->container->run(
4800 'userCan',
4801 [ $title, $user, $action, &$result ]
4802 );
4803 }
4804
4806 public function onUserCanChangeEmail( $user, $oldaddr, $newaddr, &$status ) {
4807 return $this->container->run(
4808 'UserCanChangeEmail',
4809 [ $user, $oldaddr, $newaddr, &$status ]
4810 );
4811 }
4812
4814 public function onUserCanSendEmail( $user, &$hookErr ) {
4815 return $this->container->run(
4816 'UserCanSendEmail',
4817 [ $user, &$hookErr ]
4818 );
4819 }
4820
4822 public function onUserClearNewTalkNotification( $userIdentity, $oldid ) {
4823 return $this->container->run(
4824 'UserClearNewTalkNotification',
4825 [ $userIdentity, $oldid ]
4826 );
4827 }
4828
4830 public function onUserEditCountUpdate( $infos ): void {
4831 $this->container->run(
4832 'UserEditCountUpdate',
4833 [ $infos ],
4834 [ 'abortable' => false ]
4835 );
4836 }
4837
4839 public function onUserEffectiveGroups( $user, &$groups ) {
4840 return $this->container->run(
4841 'UserEffectiveGroups',
4842 [ $user, &$groups ]
4843 );
4844 }
4845
4847 public function onUserGetAllRights( &$rights ) {
4848 return $this->container->run(
4849 'UserGetAllRights',
4850 [ &$rights ]
4851 );
4852 }
4853
4855 public function onUserGetDefaultOptions( &$defaultOptions ) {
4856 return $this->container->run(
4857 'UserGetDefaultOptions',
4858 [ &$defaultOptions ]
4859 );
4860 }
4861
4863 public function onUserGetEmail( $user, &$email ) {
4864 return $this->container->run(
4865 'UserGetEmail',
4866 [ $user, &$email ]
4867 );
4868 }
4869
4871 public function onUserGetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4872 return $this->container->run(
4873 'UserGetEmailAuthenticationTimestamp',
4874 [ $user, &$timestamp ]
4875 );
4876 }
4877
4879 public function onUserGetLanguageObject( $user, &$code, $context ) {
4880 return $this->container->run(
4881 'UserGetLanguageObject',
4882 [ $user, &$code, $context ]
4883 );
4884 }
4885
4887 public function onUserPrivilegedGroups( $userIdentity, &$groups ) {
4888 return $this->container->run(
4889 'UserPrivilegedGroups',
4890 [ $userIdentity, &$groups ]
4891 );
4892 }
4893
4895 public function onUserGetReservedNames( &$reservedUsernames ) {
4896 return $this->container->run(
4897 'UserGetReservedNames',
4898 [ &$reservedUsernames ]
4899 );
4900 }
4901
4903 public function onUserGetRights( $user, &$rights ) {
4904 return $this->container->run(
4905 'UserGetRights',
4906 [ $user, &$rights ]
4907 );
4908 }
4909
4911 public function onUserGetRightsRemove( $user, &$rights ) {
4912 return $this->container->run(
4913 'UserGetRightsRemove',
4914 [ $user, &$rights ]
4915 );
4916 }
4917
4919 public function onUserGroupsChanged( $user, $added, $removed, $performer,
4920 $reason, $oldUGMs, $newUGMs
4921 ) {
4922 return $this->container->run(
4923 'UserGroupsChanged',
4924 [ $user, $added, $removed, $performer, $reason, $oldUGMs,
4925 $newUGMs ]
4926 );
4927 }
4928
4930 public function onUserIsBlockedFrom( $user, $title, &$blocked, &$allowUsertalk ) {
4931 return $this->container->run(
4932 'UserIsBlockedFrom',
4933 [ $user, $title, &$blocked, &$allowUsertalk ]
4934 );
4935 }
4936
4938 public function onUserIsBot( $user, &$isBot ) {
4939 return $this->container->run(
4940 'UserIsBot',
4941 [ $user, &$isBot ]
4942 );
4943 }
4944
4946 public function onUserIsEveryoneAllowed( $right ) {
4947 return $this->container->run(
4948 'UserIsEveryoneAllowed',
4949 [ $right ]
4950 );
4951 }
4952
4954 public function onUserIsLocked( $user, &$locked ) {
4955 return $this->container->run(
4956 'UserIsLocked',
4957 [ $user, &$locked ]
4958 );
4959 }
4960
4963 UserIdentity $targetUser, IContextSource $context, &$html, &$prefix, &$postfix
4964 ) {
4965 return $this->container->run(
4966 'UserLinkRendererUserLinkPostRender',
4967 [ $targetUser, $context, &$html, &$prefix, &$postfix ]
4968 );
4969 }
4970
4972 public function onUserLoadAfterLoadFromSession( $user ) {
4973 return $this->container->run(
4974 'UserLoadAfterLoadFromSession',
4975 [ $user ]
4976 );
4977 }
4978
4980 public function onUserLoadDefaults( $user, $name ) {
4981 return $this->container->run(
4982 'UserLoadDefaults',
4983 [ $user, $name ]
4984 );
4985 }
4986
4988 public function onLoadUserOptions( UserIdentity $user, array &$options ): void {
4989 $this->container->run(
4990 'LoadUserOptions',
4991 [ $user, &$options ],
4992 [ 'abortable' => false ]
4993 );
4994 }
4995
4997 public function onUserLoggedIn( $user ) {
4998 return $this->container->run(
4999 'UserLoggedIn',
5000 [ $user ]
5001 );
5002 }
5003
5005 public function onUserLoginComplete( $user, &$inject_html, $direct ) {
5006 return $this->container->run(
5007 'UserLoginComplete',
5008 [ $user, &$inject_html, $direct ]
5009 );
5010 }
5011
5013 public function onUserLogout( $user ) {
5014 return $this->container->run(
5015 'UserLogout',
5016 [ $user ]
5017 );
5018 }
5019
5021 User $user, User $performer, Message &$subject, Message &$body
5022 ): void {
5023 $this->container->run(
5024 'UserModifyCreateAccountEmail',
5025 [ $user, $performer, &$subject, &$body ],
5026 [ 'abortable' => false ]
5027 );
5028 }
5029
5031 public function onUserLogoutComplete( $user, &$inject_html, $oldName ) {
5032 return $this->container->run(
5033 'UserLogoutComplete',
5034 [ $user, &$inject_html, $oldName ]
5035 );
5036 }
5037
5039 public function onUserMailerChangeReturnPath( $to, &$returnPath ) {
5040 return $this->container->run(
5041 'UserMailerChangeReturnPath',
5042 [ $to, &$returnPath ]
5043 );
5044 }
5045
5047 public function onUserMailerSplitTo( &$to ) {
5048 return $this->container->run(
5049 'UserMailerSplitTo',
5050 [ &$to ]
5051 );
5052 }
5053
5055 public function onUserMailerTransformContent( $to, $from, &$body, &$error ) {
5056 return $this->container->run(
5057 'UserMailerTransformContent',
5058 [ $to, $from, &$body, &$error ]
5059 );
5060 }
5061
5063 public function onUserMailerTransformMessage( $to, $from, &$subject, &$headers,
5064 &$body, &$error
5065 ) {
5066 return $this->container->run(
5067 'UserMailerTransformMessage',
5068 [ $to, $from, &$subject, &$headers, &$body, &$error ]
5069 );
5070 }
5071
5073 public function onUserRemoveGroup( $user, &$group ) {
5074 return $this->container->run(
5075 'UserRemoveGroup',
5076 [ $user, &$group ]
5077 );
5078 }
5079
5081 public function onUserRequirementsCondition( string|int $type, array $args, UserIdentity $user,
5082 bool $isPerformingRequest, ?bool &$result
5083 ): void {
5084 $this->container->run(
5085 'UserRequirementsCondition',
5086 [ $type, $args, $user, $isPerformingRequest, &$result ],
5087 [ 'abortable' => false ]
5088 );
5089 }
5090
5092 public function onUserRequirementsConditionDisplay( string|int $type, array $args, IContextSource $context,
5093 ?MessageSpecifier &$messageSpec
5094 ): void {
5095 $this->container->run(
5096 'UserRequirementsConditionDisplay',
5097 [ $type, $args, $context, &$messageSpec ],
5098 [ 'abortable' => false ]
5099 );
5100 }
5101
5103 public function onSaveUserOptions( UserIdentity $user, array &$modifiedOptions, array $originalOptions ) {
5104 return $this->container->run(
5105 'SaveUserOptions',
5106 [ $user, &$modifiedOptions, $originalOptions ]
5107 );
5108 }
5109
5111 public function onLocalUserOptionsStoreSave( UserIdentity $user, array $oldOptions, array $newOptions ): void {
5112 $this->container->run(
5113 'LocalUserOptionsStoreSave',
5114 [ $user, $oldOptions, $newOptions ],
5115 [ 'abortable' => false ]
5116 );
5117 }
5118
5120 public function onUserSaveSettings( $user ) {
5121 return $this->container->run(
5122 'UserSaveSettings',
5123 [ $user ]
5124 );
5125 }
5126
5128 public function onUserSendConfirmationMail( $user, &$mail, $info ) {
5129 return $this->container->run(
5130 'UserSendConfirmationMail',
5131 [ $user, &$mail, $info ]
5132 );
5133 }
5134
5136 public function onUserSetEmail( $user, &$email ) {
5137 return $this->container->run(
5138 'UserSetEmail',
5139 [ $user, &$email ]
5140 );
5141 }
5142
5144 public function onUserSetEmailAuthenticationTimestamp( $user, &$timestamp ) {
5145 return $this->container->run(
5146 'UserSetEmailAuthenticationTimestamp',
5147 [ $user, &$timestamp ]
5148 );
5149 }
5150
5152 public function onUsersPagerDoBatchLookups( $dbr, $userIds, &$cache, &$groups ) {
5153 return $this->container->run(
5154 'UsersPagerDoBatchLookups',
5155 [ $dbr, $userIds, &$cache, &$groups ]
5156 );
5157 }
5158
5160 public function onUserToolLinksEdit( $userId, $userText, &$items ) {
5161 return $this->container->run(
5162 'UserToolLinksEdit',
5163 [ $userId, $userText, &$items ]
5164 );
5165 }
5166
5168 public function onUser__mailPasswordInternal( $user, $ip, $u ) {
5169 return $this->container->run(
5170 'User::mailPasswordInternal',
5171 [ $user, $ip, $u ]
5172 );
5173 }
5174
5176 public function onValidateExtendedMetadataCache( $timestamp, $file ) {
5177 return $this->container->run(
5178 'ValidateExtendedMetadataCache',
5179 [ $timestamp, $file ]
5180 );
5181 }
5182
5184 public function onWantedPages__getQueryInfo( $wantedPages, &$query ) {
5185 return $this->container->run(
5186 'WantedPages::getQueryInfo',
5187 [ $wantedPages, &$query ]
5188 );
5189 }
5190
5192 public function onWatchArticle( $user, $page, &$status, $expiry ) {
5193 return $this->container->run(
5194 'WatchArticle',
5195 [ $user, $page, &$status, $expiry ]
5196 );
5197 }
5198
5200 public function onWatchArticleComplete( $user, $page ) {
5201 return $this->container->run(
5202 'WatchArticleComplete',
5203 [ $user, $page ]
5204 );
5205 }
5206
5208 public function onWatchedItemQueryServiceExtensions( &$extensions,
5209 $watchedItemQueryService
5210 ) {
5211 return $this->container->run(
5212 'WatchedItemQueryServiceExtensions',
5213 [ &$extensions, $watchedItemQueryService ]
5214 );
5215 }
5216
5218 public function onWatchlistEditorBeforeFormRender( &$watchlistInfo ) {
5219 return $this->container->run(
5220 'WatchlistEditorBeforeFormRender',
5221 [ &$watchlistInfo ]
5222 );
5223 }
5224
5226 public function onWatchlistEditorBuildRemoveLine( &$tools, $title, $redirect,
5227 $skin, &$link
5228 ) {
5229 return $this->container->run(
5230 'WatchlistEditorBuildRemoveLine',
5231 [ &$tools, $title, $redirect, $skin, &$link ]
5232 );
5233 }
5234
5236 public function onWebRequestPathInfoRouter( $router ) {
5237 return $this->container->run(
5238 'WebRequestPathInfoRouter',
5239 [ $router ]
5240 );
5241 }
5242
5244 public function onWebResponseSetCookie( &$name, &$value, &$expire, &$options ) {
5245 return $this->container->run(
5246 'WebResponseSetCookie',
5247 [ &$name, &$value, &$expire, &$options ]
5248 );
5249 }
5250
5252 public function onWfShellWikiCmd( &$script, &$parameters, &$options ) {
5253 return $this->container->run(
5254 'wfShellWikiCmd',
5255 [ &$script, &$parameters, &$options ]
5256 );
5257 }
5258
5260 public function onWgQueryPages( &$qp ) {
5261 return $this->container->run(
5262 'wgQueryPages',
5263 [ &$qp ]
5264 );
5265 }
5266
5268 public function onWhatLinksHereProps( $row, $title, $target, &$props ) {
5269 return $this->container->run(
5270 'WhatLinksHereProps',
5271 [ $row, $title, $target, &$props ]
5272 );
5273 }
5274
5276 public function onWikiExporter__dumpStableQuery( &$tables, &$opts, &$join ) {
5277 return $this->container->run(
5278 'WikiExporter::dumpStableQuery',
5279 [ &$tables, &$opts, &$join ]
5280 );
5281 }
5282
5284 public function onWikiPageDeletionUpdates( $page, $content, &$updates ) {
5285 return $this->container->run(
5286 'WikiPageDeletionUpdates',
5287 [ $page, $content, &$updates ]
5288 );
5289 }
5290
5292 public function onWikiPageFactory( $title, &$page ) {
5293 return $this->container->run(
5294 'WikiPageFactory',
5295 [ $title, &$page ]
5296 );
5297 }
5298
5300 public function onXmlDumpWriterOpenPage( $obj, &$out, $row, $title ) {
5301 return $this->container->run(
5302 'XmlDumpWriterOpenPage',
5303 [ $obj, &$out, $row, $title ]
5304 );
5305 }
5306
5308 public function onXmlDumpWriterWriteRevision( $obj, &$out, $row, $text, $rev ) {
5309 return $this->container->run(
5310 'XmlDumpWriterWriteRevision',
5311 [ $obj, &$out, $row, $text, $rev ]
5312 );
5313 }
5314}
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.
Renders a slot diff by doing a text diff on the native representation.
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,...
onLinkerMakeExternalLinkWithContext(?string &$url, string &$text, array &$attribs, string $linkType, ParsoidLinkTarget $contextTitle)
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 constructor 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)
This hook is called at the end of Linker::makeExternalLink() just before the return....
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...
onListRestrictedTags(array &$restrictedTags)
This hook is called when building the map of rights-restricted change tags to the rights that can vie...
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)
Replace or disable the sitenotice.The default sitenotice considers the sitenotice,...
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...
onTextSlotDiffRendererTablePrefix(TextSlotDiffRenderer $textSlotDiffRenderer, IContextSource $context, array &$parts)
Use this hook to change the HTML that is included in a prefix container directly before the diff tabl...
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...
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...
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)
This hook is called at the end of Linker::makeMediaLinkFile() just before the return....
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...
onOutputTransformFirstStage(ParserOutput &$parserOutput, ParserOptions $parserOptions)
This hook is called from the post-processing output transform pipeline at the very start of processin...
onUserModifyCreateAccountEmail(User $user, User $performer, Message &$subject, Message &$body)
This hook runs when a user account is being created on behalf of another user, such as when using Spe...
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
onParserOptionsDefaults(&$defaults, &$inCacheKey, &$lazyLoad, &$postprocOpts=[])
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....
onMarkPatrolledAudit( $recentChange, $userIdentity, int $logId)
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...
onOutputTransformLastStage(ParserOutput &$parserOutput, ParserOptions $parserOptions)
This hook is called from the post-processing output transform pipeline at the very end of processing ...
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...
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...
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...
onLinkTargetIsAlwaysKnownBatch(array $links, array &$isAlwaysKnown)
This hook is called when determining if a page exist in batched.Use this hook to override default beh...
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.35 Since 1.47 - Use MarkPatrolledAuditHook in...
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)
This hook is called at the end of Linker::makeExternalImage() just before the return....
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 or reauthenticated for elevated security....
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.
The Message class deals with fetching and processing of interface message into a variety of formats.
Definition Message.php:144
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:66
Base representation for an editable wiki page.
Definition WikiPage.php:83
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:138
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:38
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
User class for the MediaWiki software.
Definition User.php:129
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'=>[], 'DefaultLockManager'=> null, '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, '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, 'RestTermsOfServiceUrl'=> null, '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', 'CodeHighlighter',],], 'json'=>['class'=> 'MediaWiki\\Content\\JsonContentHandler', 'services'=>['ParsoidParserFactory', 'TitleFactory',],], 'css'=>['class'=> 'MediaWiki\\Content\\CssContentHandler', 'services'=>['MainConfig', 'ParserFactory', 'UserOptionsLookup', 'CodeHighlighter',],], 'vue'=>['class'=> 'MediaWiki\\Content\\VueContentHandler', 'services'=>['MainConfig', 'ParserFactory', 'CodeHighlighter',],], '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',],],], 'EnableSectionShare'=> false, '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, ], 'NamespacesWithoutAutoSummaries' => [ ], '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, '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, ], 'MediaWiki\\Auth\\PreviouslyRenamedAccountPreAuthenticationProvider' => [ 'class' => 'MediaWiki\\Auth\\PreviouslyRenamedAccountPreAuthenticationProvider', 'services' => [ 'ConnectionProvider', 'UserFactory', ], '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, ], '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, 'autocreateaccount' => 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, 'logout' => 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, 'createpreviouslyrenamedaccount' => 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' => [ ], 'RestrictUserPageEditing' => false, '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, ], 'managesessions' => [ 'logout' => 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', 'managesessions' => '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, 'ReauthenticateForActions' => [ 'edituserjs' => 'edituserjscss', 'editusercss' => 'edituserjscss', 'editsitejs' => 'editsitejscss', 'editsitecss' => 'editsitejscss', ], 'AllowUserCss' => false, 'AllowUserCssPrefs' => true, 'UseSiteJs' => true, 'UseSiteCss' => true, 'BreakFrames' => false, 'EditPageFrameOptions' => 'DENY', 'ApiFrameOptions' => 'DENY', 'CSPHeader' => false, 'CSPReportOnlyHeader' => false, 'CSPUseReportURIDirective' => 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: 'https: 'git@github\\.com:(.*?)(\\.git)?' => 'https: ], '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, 'mw-edited-other-users-js' => true, 'mw-edited-other-users-css' => true, ], 'RestrictedTagViewRights' => [ ], '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, 'EnableWatchstarPopover' => 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\\RecentChanges\\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', 'Promise-Non-Write-API-Action', 'Access-Control-Max-Age', 'Authorization', ], 'RestAPIAdditionalRouteFiles' => [ ], 'RestSandboxSpecs' => [ ], 'RestLocalModuleTestBaseUrl' => null, 'RestModuleOverrides' => [ ], 'RestExternalModules' => [ ], '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, 'ReturnExperimentalPFragmentTypes' => [ ], ], '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', 'DefaultLockManager' => [ 'string', 'null', ], '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', ], 'ThumbnailBuckets' => [ 'array', 'null', ], 'UploadThumbnailRenderMap' => 'object', 'GalleryOptions' => 'object', 'DjvuDump' => [ 'string', 'null', ], 'DjvuRenderer' => [ 'string', 'null', ], 'DjvuTxt' => [ 'string', 'null', ], 'DjvuPostProcessor' => [ 'string', 'null', ], 'RestTermsOfServiceUrl' => [ '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', 'NamespacesWithoutAutoSummaries' => 'array', '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', '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', 'RestrictUserPageEditing' => 'boolean', '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', 'ReauthenticateForActions' => 'object', 'CSPHeader' => [ 'boolean', 'object', ], 'CSPReportOnlyHeader' => [ 'boolean', 'object', ], 'CSPUseReportURIDirective' => [ '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', 'RestrictedTagViewRights' => 'object', 'RecentChangesFlags' => 'object', 'WatchlistExpiry' => 'boolean', 'EnableWatchstarPopover' => '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', 'RestLocalModuleTestBaseUrl' => [ 'string', 'null', ], 'RestModuleOverrides' => 'object', 'RestExternalModules' => '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', 'ReturnExperimentalPFragmentTypes' => 'array', ], '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', 'RestModuleOverrides' => 'array_replace_recursive', 'RestExternalModules' => 'array_replace_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', ], ], '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', ], ], 'UseCopyrightUpload' => [ 'deprecated' => 'since 1.47 This feature is being removed.', ], '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', ], ], ], ], 'RestModuleOverrides' => [ 'additionalProperties' => [ 'type' => 'object', 'properties' => [ 'mode' => [ 'type' => 'string', ], ], 'required' => [ 'mode', ], ], ], 'RestExternalModules' => [ 'additionalProperties' => [ 'type' => 'object', 'properties' => [ 'info' => [ 'type' => 'object', 'properties' => [ 'version' => [ 'type' => 'string', ], 'title' => [ 'type' => 'string', ], 'x-i18n-title' => [ 'type' => 'string', ], 'description' => [ 'type' => 'string', ], 'x-i18n-description' => [ 'type' => 'string', ], ], 'required' => [ 'version', ], ], 'base' => [ 'type' => 'string', 'format' => 'uri', ], 'spec' => [ 'type' => 'string', 'format' => 'uri', ], ], 'required' => [ 'info', 'base', 'spec', ], ], ], '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.
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.
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.
This is a hook handler interface, see docs/Hooks.md.
This is a hook handler interface, 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.
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 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.
This is a hook handler interface, see docs/Hooks.md.
Interface for objects representing user identity.