44use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
242use Wikimedia\ObjectFactory\ObjectFactory;
243use Wikimedia\Parsoid\Config\DataAccess;
244use Wikimedia\Parsoid\Config\SiteConfig;
245use Wikimedia\Parsoid\Parsoid;
251use Wikimedia\RequestTimeout\CriticalSectionProvider;
252use Wikimedia\RequestTimeout\RequestTimeout;
265 $services->getObjectFactory(),
266 $services->getHookContainer()
272 $services->getActorStoreFactory()
277 return $services->getActorStoreFactory()->getActorNormalization();
281 return $services->getActorStoreFactory()->getActorStore();
287 $services->getDBLoadBalancerFactory(),
288 $services->getUserNameUtils(),
289 $services->getTempUserConfig(),
291 $services->getHideUserUtils()
297 $services->getConnectionProvider(),
298 $services->getRevisionStore()
305 $services->getMainConfig(),
306 $services->getObjectFactory(),
307 $services->getHookContainer(),
308 $services->getReadOnlyMode(),
309 $services->getUserNameUtils(),
310 $services->getBlockManager(),
311 $services->getWatchlistManager(),
312 $services->getDBLoadBalancer(),
313 $services->getContentLanguage(),
314 $services->getLanguageConverterFactory(),
315 $services->getBotPasswordStore(),
316 $services->getUserFactory(),
317 $services->getUserIdentityLookup(),
318 $services->getUserOptionsManager()
320 $authManager->
setLogger( LoggerFactory::getInstance(
'authentication' ) );
327 LoggerFactory::getInstance(
'AutoblockExemptionList' ),
328 $messageFormatterFactory->getTextFormatter(
329 $services->getContentLanguage()->getCode()
338 $services->getMainConfig()
340 $services->getLinksMigration(),
341 $services->getMainWANObjectCache(),
342 $services->getHookContainer(),
343 $services->getConnectionProvider()
350 return wfMessage(
'bad_image_list' )->inContentLanguage()->plain();
352 $services->getLocalServerObjectCache(),
353 $services->getRepoGroup(),
354 $services->getTitleParser(),
355 $services->getHookContainer()
360 return $services->getService(
'_SqlBlobStore' );
365 $services->getDBLoadBalancerFactory(),
366 $services->getExternalStoreAccess(),
367 $services->getMainWANObjectCache(),
369 $services->getMainConfig() )
378 return $services->getFormatterFactory()->getBlockErrorFormatter(
380 return RequestContext::getMain();
389 $services->getMainConfig()
391 $services->getUserFactory(),
392 $services->getUserIdentityUtils(),
394 $services->getHookContainer(),
395 $services->getDatabaseBlockStore(),
396 $services->getProxyLookup()
400 'BlockPermissionCheckerFactory' =>
static function (
406 $services->getMainConfig()
408 $services->getBlockUtils()
413 return $services->getBlockRestrictionStoreFactory()->getBlockRestrictionStore(
WikiAwareEntity::LOCAL );
418 $services->getDBLoadBalancerFactory(),
419 $services->getMainConfig()->get(
MainConfigNames::BlockTargetMigrationStage )
424 return $services->getService(
'_UserBlockCommandFactory' );
428 return $services->getBlockUtilsFactory()->getBlockUtils();
435 $services->getMainConfig()
437 $services->getActorStoreFactory(),
438 $services->getUserNameUtils(),
439 $services->getDBLoadBalancerFactory()
447 $services->getMainConfig()
449 $services->getCentralIdLookup(),
450 $services->getDBLoadBalancerFactory()
455 return $services->getCentralIdLookupFactory()->getLookup();
461 $services->getObjectFactory(),
462 $services->getUserIdentityLookup(),
463 $services->getUserFactory()
468 return $services->getNameTableStoreFactory()->getChangeTagDef();
473 $services->getConnectionProvider(),
474 $services->getChangeTagDefStore(),
475 $services->getMainWANObjectCache(),
476 $services->getHookContainer(),
478 $services->getUserFactory(),
481 $services->getMainConfig()
487 $mainConfig = $services->getMainConfig();
488 $cpStashType = $mainConfig->get( MainConfigNames::ChronologyProtectorStash );
491 if ( is_string( $cpStashType ) ) {
493 } elseif ( $isMainCacheBad ) {
501 $mainConfig->get( MainConfigNames::ChronologyProtectorSecret ),
503 LoggerFactory::getInstance(
'rdbms' )
512 $req = RequestContext::getMain()->getRequest();
515 $reqStart = (int)( $_SERVER[
'REQUEST_TIME_FLOAT'] ?? time() );
516 $cpPosInfo = ChronologyProtector::getCPInfoFromCookieValue(
518 $req->getCookie(
'cpPosIndex',
'' ),
520 $reqStart - ChronologyProtector::POSITION_COOKIE_TTL
522 $chronologyProtector->setRequestInfo( [
523 'IPAddress' => $req->getIP(),
524 'UserAgent' => $req->getHeader(
'User-Agent' ),
525 'ChronologyPositionIndex' => $req->getInt(
'cpPosIndex', $cpPosInfo[
'index'] ),
526 'ChronologyClientId' => $cpPosInfo[
'clientId'] ??
null,
528 return $chronologyProtector;
535 $services->getObjectFactory(),
536 $services->getHookContainer()
542 $services->getCommentParserFactory()
548 $services->getLinkRendererFactory()->create( [
'renderForComment' => true ] ),
549 $services->getLinkBatchFactory(),
550 $services->getLinkCache(),
551 $services->getRepoGroup(),
553 $services->getContentLanguage(),
554 $services->getTitleParser(),
555 $services->getNamespaceInfo(),
556 $services->getHookContainer()
566 $registry = $services->getBootstrapConfig()->get(
MainConfigNames::ConfigRegistry );
569 foreach ( $registry as $name => $callback ) {
570 $factory->register( $name, $callback );
581 $settings = $services->get(
'_SettingsBuilder' );
582 return $settings->getConfigSchema();
586 $config = $services->getMainConfig();
588 $config->get( MainConfigNames::ReadOnly ),
589 $config->get( MainConfigNames::ReadOnlyFile )
594 return $services->getDBLoadBalancerFactory();
598 $contentHandlerConfig = $services->getMainConfig()->get(
MainConfigNames::ContentHandlers );
601 $contentHandlerConfig,
602 $services->getObjectFactory(),
603 $services->getHookContainer(),
604 LoggerFactory::getInstance(
'ContentHandler' )
609 return $services->getLanguageFactory()->getLanguage(
614 return $services->getService(
'_PageCommandFactory' );
618 return $services->getNameTableStoreFactory()->getContentModels();
623 $services->getContentHandlerFactory(),
624 $services->getGlobalIdGenerator()
632 'CriticalSectionProvider' =>
static function (
MediaWikiServices $services ): CriticalSectionProvider {
633 $config = $services->getMainConfig();
634 $limit =
MW_ENTRY_POINT ===
'cli' ? INF : $config->get( MainConfigNames::CriticalSectionTimeLimit );
635 return RequestTimeout::singleton()->createCriticalSectionProvider( $limit );
639 $config = $services->getMainConfig();
641 $secret = $config->get( MainConfigNames::HKDFSecret ) ?: $config->get( MainConfigNames::SecretKey );
643 throw new RuntimeException(
"Cannot use MWCryptHKDF without a secret." );
648 $context = [ microtime(), getmypid(), gethostname() ];
651 $cache = $services->getLocalServerObjectCache();
656 return new CryptHKDF( $secret, $config->get( MainConfigNames::HKDFAlgorithm ), $cache, $context );
660 return $services->getDatabaseBlockStoreFactory()->getDatabaseBlockStore(
DatabaseBlock::LOCAL );
667 $services->getMainConfig()
670 $services->getActorStoreFactory(),
671 $services->getBlockRestrictionStoreFactory(),
672 $services->getCommentStore(),
673 $services->getHookContainer(),
674 $services->getDBLoadBalancerFactory(),
675 $services->getReadOnlyMode(),
676 $services->getUserFactory(),
677 $services->getTempUserConfig(),
678 $services->getBlockUtilsFactory(),
679 $services->getAutoblockExemptionList()
685 [
'debugSql' => $services->getMainConfig()->get(
MainConfigNames::DebugDumpSql ) ]
695 return $services->getDBLoadBalancerFactory()->getMainLB();
699 $mainConfig = $services->getMainConfig();
700 $lbFactoryConfigBuilder = $services->getDBLoadBalancerFactoryConfigBuilder();
702 $lbConf = $lbFactoryConfigBuilder->applyDefaultConfig(
703 $mainConfig->get( MainConfigNames::LBFactoryConf )
706 $class = $lbFactoryConfigBuilder->getLBFactoryClass( $lbConf );
707 $instance =
new $class( $lbConf );
709 $lbFactoryConfigBuilder->setDomainAliases( $instance );
715 $lbFactoryConfigBuilder->applyGlobalState(
718 $services->getStatsdDataFactory()
725 $mainConfig = $services->getMainConfig();
726 if ( ObjectCache::isDatabaseId( $mainConfig->get( MainConfigNames::MainCacheType ) ) ) {
729 $wanCache = $services->getMainWANObjectCache();
731 $srvCache = $services->getLocalServerObjectCache();
738 new ServiceOptions( MWLBFactory::APPLY_DEFAULT_CONFIG_OPTIONS, $services->getMainConfig() ),
740 $mainConfig->get( MainConfigNames::ReadOnly ),
741 $mainConfig->get( MainConfigNames::ReadOnlyFile )
743 $services->getChronologyProtector(),
746 $services->getCriticalSectionProvider(),
747 $services->getStatsdDataFactory(),
748 ExtensionRegistry::getInstance()->getAttribute(
'DatabaseVirtualDomains' )
754 $services->getHookContainer(),
755 $services->getTidy(),
756 $services->getLanguageFactory(),
757 $services->getContentLanguage(),
759 $services->getTitleFactory()
760 ) )->buildPipeline();
764 return $services->getService(
'_PageCommandFactory' );
774 $services->getHookContainer(),
775 $services->getUserOptionsLookup(),
776 $services->getCentralIdLookup(),
777 $services->getUserFactory(),
778 $services->getEmailer(),
779 $services->getMessageFormatterFactory(),
780 $services->getMessageFormatterFactory()->getTextFormatter( $services->getContentLanguage()->getCode() )
794 $services->getExternalStoreFactory(),
800 $config = $services->getMainConfig();
801 $writeStores = $config->get( MainConfigNames::DefaultExternalStore );
804 $config->get( MainConfigNames::ExternalStores ),
805 ( $writeStores !==
false ) ? (array)$writeStores : [],
806 $services->getDBLoadBalancer()->getLocalDomainID(),
812 $mainConfig = $services->getMainConfig();
814 $ld = WikiMap::getCurrentWikiDbDomain();
815 $fallbackWikiId = WikiMap::getWikiIdFromDbDomain( $ld );
819 $legacyDomainId = strlen( $ld->getTablePrefix() )
820 ?
"{$ld->getDatabase()}-{$ld->getTablePrefix()}"
821 : $ld->getDatabase();
822 if ( $ld->getSchema() !==
null && $legacyDomainId !== $fallbackWikiId ) {
824 "Legacy default 'domainId' is '$legacyDomainId' but wiki ID is '$fallbackWikiId'."
828 $cache = $services->getLocalServerObjectCache();
834 new ServiceOptions( FileBackendGroup::CONSTRUCTOR_OPTIONS, $mainConfig,
835 [
'fallbackWikiId' => $fallbackWikiId ] ),
836 $services->getReadOnlyMode(),
838 $services->getMainWANObjectCache(),
839 $services->getMimeAnalyzer(),
840 $services->getLockManagerGroupFactory(),
841 $services->getTempFSFileFactory(),
842 $services->getObjectFactory()
848 $services->getMessageCache(),
849 $services->getTitleFormatter(),
850 $services->getHookContainer(),
851 $services->getUserIdentityUtils(),
852 $services->getLanguageFactory()
857 $nsInfo = $services->getNamespaceInfo();
859 $dbLoadBalancer = $services->isServiceDisabled(
'DBLoadBalancer' )
861 : $services->getDBLoadBalancerFactory();
862 return new GenderCache( $nsInfo, $dbLoadBalancer, $services->get(
'_DefaultOptionsLookup' ) );
866 $mainConfig = $services->getMainConfig();
869 $mainConfig->get( MainConfigNames::TmpDirectory ),
870 static function ( $command ) {
880 $services->getMainConfig()
887 $services->getGrantsInfo(),
888 $services->getLinkRenderer(),
889 $services->getLanguageFactory(),
890 $services->getContentLanguage()
902 $services->getMainConfig()->get(
MainConfigNames::BlockTargetMigrationStage )
910 $configHooks = $services->getBootstrapConfig()->get(
MainConfigNames::Hooks );
916 $configHooks = $configHooks->getOriginalArray();
920 $extHooks = $extRegistry->getAttribute(
'Hooks' );
921 $extDeprecatedHooks = $extRegistry->getAttribute(
'DeprecatedHooks' );
923 $hookRegistry =
new StaticHookRegistry( $configHooks, $extHooks, $extDeprecatedHooks );
926 $services->getObjectFactory()
929 return $hookContainer;
933 $config = $services->getMainConfig();
936 $services->getHookContainer(),
937 $services->getTitleFactory(),
938 $config->get( MainConfigNames::CdnReboundPurgeDelay ),
939 $config->get( MainConfigNames::UseFileCache ),
940 $config->get( MainConfigNames::CdnMaxAge )
946 $services->getService(
'_Parsoid' ),
948 $services->getParsoidPageConfigFactory(),
949 $services->getContentHandlerFactory(),
950 $services->getParsoidSiteConfig(),
951 $services->getTitleFactory(),
952 $services->getLanguageConverterFactory(),
953 $services->getLanguageFactory()
961 $services->getMainConfig()
972 $services->getMainConfig(),
973 [
'wikiId' =>
WikiMap::getCurrentWikiId() ]
975 $services->getContentLanguage(),
976 $services->getMainWANObjectCache(),
977 $services->getHookContainer(),
978 $services->getConnectionProvider()
984 $services->getMainConfig(),
985 $services->getLinkRenderer(),
986 $services->getPermissionManager(),
987 $services->getUserNameUtils(),
988 $services->getTempUserCreator(),
989 $services->getUserFactory(),
990 $services->getRestrictionStore(),
991 $services->getDatabaseBlockStore(),
992 $services->getReadOnlyMode(),
993 $services->getSpecialPageFactory(),
994 $services->getRepoGroup(),
995 $services->getNamespaceInfo(),
996 $services->getSkinFactory(),
997 $services->getConnectionProvider()
1003 $services->getObjectFactory(),
1009 return $services->getJobQueueGroupFactory()->makeJobQueueGroup();
1015 $services->getReadOnlyMode(),
1016 $services->getStatsdDataFactory(),
1017 $services->getMainWANObjectCache(),
1018 $services->getGlobalIdGenerator()
1025 $services->getDBLoadBalancerFactory(),
1026 $services->getJobQueueGroup(),
1027 $services->getReadOnlyMode(),
1028 $services->getLinkCache(),
1029 $services->getStatsdDataFactory(),
1041 $services->getObjectFactory(),
1042 static function () use ( $services ) {
1043 return $services->getContentLanguage();
1051 $services->getNamespaceInfo(),
1052 $services->getLocalisationCache(),
1053 $services->getLanguageNameUtils(),
1054 $services->getLanguageFallback(),
1055 $services->getLanguageConverterFactory(),
1056 $services->getHookContainer(),
1057 $services->getMainConfig()
1064 $services->getLocalisationCache(),
1065 $services->getLanguageNameUtils()
1073 $services->getMainConfig()
1075 $services->getHookContainer()
1081 $services->getLinkCache(),
1082 $services->getTitleFormatter(),
1083 $services->getContentLanguage(),
1084 $services->getGenderCache(),
1085 $services->getConnectionProvider(),
1086 $services->getLinksMigration(),
1093 $dbLoadBalancer = $services->isServiceDisabled(
'DBLoadBalancer' )
1095 : $services->getDBLoadBalancer();
1097 $services->getTitleFormatter(),
1098 $services->getMainWANObjectCache(),
1099 $services->getNamespaceInfo(),
1102 $linkCache->setLogger( LoggerFactory::getInstance(
'LinkCache' ) );
1107 return $services->getLinkRendererFactory()->create();
1112 $services->getTitleFormatter(),
1113 $services->getLinkCache(),
1114 $services->getSpecialPageFactory(),
1115 $services->getHookContainer()
1121 $services->getMainConfig(),
1122 $services->getLinkTargetLookup()
1128 $services->getConnectionProvider(),
1129 $services->getLocalServerObjectCache(),
1130 $services->getMainWANObjectCache()
1135 $conf = $services->getMainConfig()->get(
MainConfigNames::LocalisationCacheConf );
1137 $logger = LoggerFactory::getInstance(
'localisation' );
1140 $conf, $services->getMainConfig()->get( MainConfigNames::CacheDirectory ) );
1141 $logger->debug(
'LocalisationCache using store ' . get_class( $store ) );
1143 return new $conf[
'class'](
1145 LocalisationCache::CONSTRUCTOR_OPTIONS,
1150 'forceRecache' =>
false,
1151 'manualRecache' =>
false,
1154 $services->getMainConfig()
1158 [
static function () use ( $services ) {
1162 MessageBlobStore::clearGlobalCacheEntry( $services->getMainWANObjectCache() );
1164 $services->getLanguageNameUtils(),
1165 $services->getHookContainer()
1175 WikiMap::getCurrentWikiDbDomain()->getId(),
1183 $services->getObjectFactory(),
1184 $services->getHookContainer(),
1185 $services->getLinkRenderer(),
1186 $services->getContentLanguage(),
1187 $services->getCommentFormatter(),
1188 $services->getUserEditTracker()
1194 $services->getContentLanguage(),
1195 $services->getHookContainer()
1201 return $services->getConfigFactory()->makeConfig(
'main' );
1205 $mainConfig = $services->getMainConfig();
1207 $id = $mainConfig->
get( MainConfigNames::MainStash );
1208 $store = $services->getObjectCacheFactory()->getInstance( $id );
1209 $store->getLogger()->debug(
'MainObjectStash using store {class}', [
1210 'class' => get_class( $store )
1217 $mainConfig = $services->getMainConfig();
1219 $store = $services->
get(
'_LocalClusterCache' );
1220 $logger = $store->getLogger();
1221 $logger->debug(
'MainWANObjectCache using store {class}', [
1222 'class' => get_class( $store )
1225 $wanParams = $mainConfig->get( MainConfigNames::WANObjectCache ) + [
1227 'logger' => $logger,
1228 'secret' => $mainConfig->get( MainConfigNames::SecretKey ),
1232 $wanParams[
'stats'] = $services->getStatsdDataFactory();
1234 $wanParams[
'asyncHandler'] = [ DeferredUpdates::class,
'addCallableUpdate' ];
1247 return $services->getService(
'_PageCommandFactory' );
1251 $mainConfig = $services->getMainConfig();
1253 $srvCache = $mainConfig->get( MainConfigNames::UseLocalMessageCache )
1254 ? $services->getLocalServerObjectCache()
1257 $logger = LoggerFactory::getInstance(
'MessageCache' );
1258 $logger->debug(
'MessageCache using store {class}', [
1259 'class' => get_class( $clusterCache )
1262 $options =
new ServiceOptions( MessageCache::CONSTRUCTOR_OPTIONS, $mainConfig );
1265 $services->getMainWANObjectCache(),
1268 $services->getContentLanguage(),
1269 $services->getLanguageConverterFactory(),
1272 $services->getLanguageFactory(),
1273 $services->getLocalisationCache(),
1274 $services->getLanguageNameUtils(),
1275 $services->getLanguageFallback(),
1276 $services->getHookContainer(),
1277 $services->getParserFactory()
1286 $mainConfig = $services->getMainConfig();
1288 $id = $mainConfig->
get( MainConfigNames::MicroStashType );
1289 $store = $services->getObjectCacheFactory()->getInstance( $id );
1291 $store->getLogger()->debug(
'MicroStash using store {class}', [
1292 'class' => get_class( $store )
1298 'MimeAnalyzer' =>
static function (
MediaWikiServices $services ): MimeAnalyzer {
1300 $mainConfig = $services->getMainConfig();
1301 $hookRunner =
new HookRunner( $services->getHookContainer() );
1303 'typeFile' => $mainConfig->get( MainConfigNames::MimeTypeFile ),
1304 'infoFile' => $mainConfig->get( MainConfigNames::MimeInfoFile ),
1305 'xmlTypes' => $mainConfig->get( MainConfigNames::XMLMimeTypes ),
1306 'guessCallback' =>
static function (
1307 $mimeAnalyzer, &$head, &$tail, $file, &$mime
1308 ) use ( $logger, $hookRunner ) {
1311 if ( $deja->isValid() ) {
1312 $logger->info(
"Detected $file as image/vnd.djvu\n" );
1313 $mime =
'image/vnd.djvu';
1318 $hookRunner->onMimeMagicGuessFromContent(
1319 $mimeAnalyzer, $head, $tail, $file, $mime );
1321 'extCallback' =>
static function ( $mimeAnalyzer, $ext, &$mime ) use ( $hookRunner ) {
1323 $hookRunner->onMimeMagicImproveFromExtension( $mimeAnalyzer, $ext, $mime );
1325 'initCallback' =>
static function ( $mimeAnalyzer ) use ( $hookRunner ) {
1327 $hookRunner->onMimeMagicInit( $mimeAnalyzer );
1332 if (
$params[
'infoFile'] ===
'includes/mime.info' ) {
1333 $params[
'infoFile'] = MimeAnalyzer::USE_INTERNAL;
1336 if (
$params[
'typeFile'] ===
'includes/mime.types' ) {
1337 $params[
'typeFile'] = MimeAnalyzer::USE_INTERNAL;
1340 $detectorCmd = $mainConfig->get( MainConfigNames::MimeDetectorCommand );
1341 if ( $detectorCmd ) {
1342 $factory = $services->getShellCommandFactory();
1343 $params[
'detectCallback'] =
static function ( $file ) use ( $detectorCmd, $factory ) {
1344 $result = $factory->create()
1346 ->unsafeParams( $detectorCmd )
1349 return $result->getStdout();
1353 return new MimeAnalyzer(
$params );
1357 return $services->getService(
'_PageCommandFactory' );
1363 $services->getHookContainer(),
1371 $services->getDBLoadBalancerFactory(),
1372 $services->getMainWANObjectCache(),
1381 $services->getMainConfig()
1383 $services->getStatsFactory(),
1387 static function () use ( $services ) {
1388 return $services->getDBLoadBalancerFactory();
1390 WikiMap::getCurrentWikiDbDomain()->getId()
1394 'ObjectFactory' =>
static function (
MediaWikiServices $services ): ObjectFactory {
1395 return new ObjectFactory( $services );
1402 $services->getConnectionProvider(),
1403 $services->getRevisionStoreFactory()->getRevisionStoreForImport(),
1404 $services->getSlotRoleRegistry(),
1405 $services->getWikiPageFactory(),
1406 $services->getPageUpdaterFactory(),
1407 $services->getUserFactory()
1414 $services->getConnectionProvider(),
1416 $services->getStatsdDataFactory(),
1417 $services->getUserEditTracker(),
1418 $services->getUserFactory(),
1419 $services->getWikiPageFactory(),
1420 $services->getHookContainer(),
1429 $services->getLinkBatchFactory(),
1430 $services->getConnectionProvider()
1437 $services->getRevisionLookup(),
1438 $services->getTitleFormatter(),
1439 $services->getPageStore(),
1440 $services->getParsoidOutputStash(),
1441 $services->getStatsdDataFactory(),
1442 $services->getParsoidOutputAccess(),
1443 $services->getHtmlTransformFactory(),
1444 $services->getContentHandlerFactory(),
1445 $services->getLanguageFactory(),
1446 $services->getRedirectStore(),
1447 $services->getLanguageConverterFactory()
1452 return $services->getPageStoreFactory()->getPageStore();
1458 $services->getMainConfig()
1463 $services->getDBLoadBalancerFactory(),
1464 $services->getNamespaceInfo(),
1465 $services->getTitleParser(),
1466 $services->getLinkCache(),
1467 $services->getStatsdDataFactory()
1471 'PageUpdaterFactory' =>
static function (
1475 $services->getMainObjectStash(),
1476 $services->getConnectionProvider(),
1479 $services->getMainConfig()
1484 $services->getRevisionStore(),
1485 $services->getRevisionRenderer(),
1486 $services->getSlotRoleRegistry(),
1487 $services->getParserCache(),
1488 $services->getJobQueueGroup(),
1489 $services->getMessageCache(),
1490 $services->getContentLanguage(),
1491 $services->getDBLoadBalancerFactory(),
1492 $services->getContentHandlerFactory(),
1493 $services->getHookContainer(),
1495 $services->getUserNameUtils(),
1496 LoggerFactory::getInstance(
'SavePage' ),
1498 PageUpdaterFactory::CONSTRUCTOR_OPTIONS,
1499 $services->getMainConfig()
1501 $services->getUserEditTracker(),
1502 $services->getUserGroupManager(),
1503 $services->getTitleFormatter(),
1504 $services->getContentTransformer(),
1505 $services->getPageEditStash(),
1506 $services->getTalkPageNotificationManager(),
1507 $services->getMainWANObjectCache(),
1508 $services->getPermissionManager(),
1509 $services->getWikiPageFactory(),
1510 $services->getChangeTagsStore()->getSoftwareTags()
1518 return $services->getParserFactory()->getMainInstance();
1522 return $services->getParserCacheFactory()
1527 $config = $services->getMainConfig();
1529 $wanCache = $services->getMainWANObjectCache();
1531 $options =
new ServiceOptions( ParserCacheFactory::CONSTRUCTOR_OPTIONS, $config );
1536 $services->getHookContainer(),
1537 $services->getJsonCodec(),
1538 $services->getStatsFactory(),
1539 LoggerFactory::getInstance(
'ParserCache' ),
1541 $services->getTitleFactory(),
1542 $services->getWikiPageFactory(),
1543 $services->getGlobalIdGenerator()
1549 $services->getMainConfig()
1554 $services->getMagicWordFactory(),
1555 $services->getContentLanguage(),
1556 $services->getUrlUtils(),
1557 $services->getSpecialPageFactory(),
1558 $services->getLinkRendererFactory(),
1559 $services->getNamespaceInfo(),
1560 LoggerFactory::getInstance(
'Parser' ),
1561 $services->getBadFileLookup(),
1562 $services->getLanguageConverterFactory(),
1563 $services->getHookContainer(),
1564 $services->getTidy(),
1565 $services->getMainWANObjectCache(),
1566 $services->getUserOptionsLookup(),
1567 $services->getUserFactory(),
1568 $services->getTitleFormatter(),
1569 $services->getHttpRequestFactory(),
1570 $services->getTrackingCategories(),
1571 $services->getSignatureValidatorFactory(),
1572 $services->getUserNameUtils()
1578 $services->getParserCacheFactory(),
1579 $services->getRevisionLookup(),
1580 $services->getRevisionRenderer(),
1581 $services->getStatsdDataFactory(),
1582 $services->getDBLoadBalancerFactory(),
1583 $services->getChronologyProtector(),
1585 $services->getWikiPageFactory(),
1586 $services->getTitleFormatter()
1590 'ParsoidDataAccess' =>
static function (
MediaWikiServices $services ): DataAccess {
1591 $mainConfig = $services->getMainConfig();
1592 return new MWDataAccess(
1594 $services->getRepoGroup(),
1595 $services->getBadFileLookup(),
1596 $services->getHookContainer(),
1597 $services->getContentTransformer(),
1598 $services->getReadOnlyMode(),
1599 $services->getParserFactory(),
1600 $services->getLinkBatchFactory()
1606 $services->getParsoidParserFactory(),
1607 $services->getParserOutputAccess(),
1608 $services->getPageStore(),
1609 $services->getRevisionLookup(),
1610 $services->getParsoidSiteConfig(),
1611 $services->getContentHandlerFactory()
1618 $config = $services->getMainConfig()->get(
MainConfigNames::ParsoidCacheConfig );
1619 $backend = $config[
'StashType']
1621 : $services->getMainObjectStash();
1624 $services->getContentHandlerFactory(),
1626 $config[
'StashDuration']
1630 'ParsoidPageConfigFactory' =>
static function (
MediaWikiServices $services ): MWPageConfigFactory {
1631 return new MWPageConfigFactory(
1632 $services->getRevisionStore(),
1633 $services->getSlotRoleRegistry(),
1634 $services->getLanguageFactory()
1640 $services->getParsoidSiteConfig(),
1641 $services->getParsoidDataAccess(),
1642 $services->getParsoidPageConfigFactory(),
1643 $services->getLanguageConverterFactory(),
1644 $services->getParserFactory(),
1645 $services->getGlobalIdGenerator()
1649 'ParsoidSiteConfig' =>
static function (
MediaWikiServices $services ): SiteConfig {
1650 $mainConfig = $services->getMainConfig();
1651 $parsoidSettings = $mainConfig->get( MainConfigNames::ParsoidSettings );
1652 return new MWSiteConfig(
1655 $services->getObjectFactory(),
1656 $services->getContentLanguage(),
1657 $services->getStatsdDataFactory(),
1658 $services->getMagicWordFactory(),
1659 $services->getNamespaceInfo(),
1660 $services->getSpecialPageFactory(),
1661 $services->getInterwikiLookup(),
1662 $services->getUserOptionsLookup(),
1663 $services->getLanguageFactory(),
1664 $services->getLanguageConverterFactory(),
1665 $services->getLanguageNameUtils(),
1666 $services->getUrlUtils(),
1667 ExtensionRegistry::getInstance()->getAttribute(
'ParsoidModules' ),
1670 $services->getParserFactory(),
1672 ExtensionRegistry::getInstance()->isLoaded(
'TimedMediaHandler' )
1677 $config = $services->getMainConfig();
1679 $config->get( MainConfigNames::PasswordConfig ),
1680 $config->get( MainConfigNames::PasswordDefault )
1688 LoggerFactory::getInstance(
'authentication' ),
1689 $services->getAuthManager(),
1690 $services->getHookContainer(),
1691 $services->getConnectionProvider(),
1692 $services->getUserFactory(),
1693 $services->getUserNameUtils(),
1694 $services->getUserOptionsLookup()
1698 'PerDbNameStatsdDataFactory' =>
static function (
MediaWikiServices $services ): StatsdDataFactoryInterface {
1699 $config = $services->getMainConfig();
1700 $wiki = $config->get( MainConfigNames::DBname );
1702 $services->getStatsdDataFactory(),
1712 $services->getSpecialPageFactory(),
1713 $services->getNamespaceInfo(),
1714 $services->getGroupPermissionsLookup(),
1715 $services->getUserGroupManager(),
1716 $services->getBlockManager(),
1717 $services->getFormatterFactory()->getBlockErrorFormatter(
1719 return RequestContext::getMain();
1722 $services->getHookContainer(),
1723 $services->getUserCache(),
1724 $services->getRedirectLookup(),
1725 $services->getRestrictionStore(),
1726 $services->getTitleFormatter(),
1727 $services->getTempUserConfig(),
1728 $services->getUserFactory(),
1729 $services->getActionFactory()
1735 $services->getMainConfig(),
1736 $services->getConnectionProvider(),
1738 $services->getHttpRequestFactory(),
1744 $mainConfig = $services->getMainConfig();
1746 $mainConfig->get( MainConfigNames::PoolCounterConf ),
1747 $mainConfig->get( MainConfigNames::PoolCountClientConf ),
1748 LoggerFactory::getInstance(
'poolcounter' )
1756 $services->getContentLanguage(),
1757 $services->getAuthManager(),
1758 $services->getLinkRendererFactory()->create(),
1759 $services->getNamespaceInfo(),
1760 $services->getPermissionManager(),
1761 $services->getLanguageConverterFactory()->getLanguageConverter(),
1762 $services->getLanguageNameUtils(),
1763 $services->getHookContainer(),
1764 $services->getUserOptionsManager(),
1765 $services->getLanguageConverterFactory(),
1766 $services->getParserFactory(),
1767 $services->getSkinFactory(),
1768 $services->getUserGroupManager(),
1769 $services->getSignatureValidatorFactory()
1771 $factory->setLogger( LoggerFactory::getInstance(
'preferences' ) );
1778 $services->getContentHandlerFactory(),
1779 $services->getWikiPageFactory(),
1780 $services->getRedirectLookup(),
1781 $services->getSpecialPageFactory(),
1782 $services->getContentTransformer(),
1783 $services->getHookContainer(),
1788 $mainConfig = $services->getMainConfig();
1790 $mainConfig->get( MainConfigNames::CdnServers ),
1791 $mainConfig->get( MainConfigNames::CdnServersNoPurge ),
1792 $services->getHookContainer()
1799 $services->getWRStatsFactory(),
1800 $services->getCentralIdLookupFactory()->getNonLocalLookup(),
1801 $services->getUserFactory(),
1802 $services->getUserGroupManager(),
1803 $services->getHookContainer()
1806 $rateLimiter->
setStats( $services->getStatsdDataFactory() );
1808 return $rateLimiter;
1817 $services->getDBLoadBalancerFactory()
1822 return $services->getRedirectStore();
1830 $config = $services->getMainConfig();
1832 $config->get( MainConfigNames::LocalFileRepo ),
1833 $config->get( MainConfigNames::ForeignFileRepos ),
1834 $services->getMainWANObjectCache(),
1835 $services->getMimeAnalyzer()
1840 $config = $services->getMainConfig();
1842 $maxage = $config->get( MainConfigNames::ResourceLoaderMaxage );
1845 LoggerFactory::getInstance(
'resourceloader' ),
1846 $config->get( MainConfigNames::ResourceLoaderUseObjectCacheForDeps )
1851 'maxageVersioned' => $maxage[
'versioned'] ?? null,
1852 'maxageUnversioned' => $maxage[
'unversioned'] ?? null,
1858 $modules = $extRegistry->getAttribute(
'ResourceModules' )
1859 + $config->get( MainConfigNames::ResourceModules );
1860 $moduleSkinStyles = $extRegistry->getAttribute(
'ResourceModuleSkinStyles' )
1861 + $config->get( MainConfigNames::ResourceModuleSkinStyles );
1863 $rl->setModuleSkinStyles( $moduleSkinStyles );
1864 $rl->addSource( $config->get( MainConfigNames::ResourceLoaderSources ) );
1867 $rl->register( include MW_INSTALL_PATH .
'/resources/Resources.php' );
1868 $rl->register( $modules );
1869 $hookRunner = new \MediaWiki\ResourceLoader\HookRunner( $services->getHookContainer() );
1870 $hookRunner->onResourceLoaderRegisterModules( $rl );
1872 $msgPosterAttrib = $extRegistry->getAttribute(
'MessagePosterModule' );
1873 $rl->register(
'mediawiki.messagePoster', [
1874 'localBasePath' => MW_INSTALL_PATH,
1875 'debugRaw' =>
false,
1876 'scripts' => array_merge(
1878 "resources/src/mediawiki.messagePoster/factory.js",
1879 "resources/src/mediawiki.messagePoster/MessagePoster.js",
1880 "resources/src/mediawiki.messagePoster/WikitextMessagePoster.js",
1882 $msgPosterAttrib[
'scripts'] ?? []
1884 'dependencies' => array_merge(
1888 'mediawiki.ForeignApi',
1890 $msgPosterAttrib[
'dependencies'] ?? []
1894 if ( $config->get( MainConfigNames::EnableJavaScriptTest ) ===
true ) {
1895 $rl->registerTestModules();
1906 $services->getMainWANObjectCache(),
1907 $services->getDBLoadBalancer(),
1908 $services->getLinkCache(),
1909 $services->getLinksMigration(),
1910 $services->getCommentStore(),
1911 $services->getHookContainer(),
1912 $services->getPageStore()
1918 $services->getMainObjectStash(),
1919 $services->getConnectionProvider(),
1922 $services->getMainConfig()
1928 $services->getJobQueueGroup()
1933 return $services->getRevisionStore();
1937 return $services->getRevisionStore();
1942 $services->getDBLoadBalancer(),
1943 $services->getSlotRoleRegistry(),
1944 $services->getContentRenderer()
1947 $renderer->
setLogger( LoggerFactory::getInstance(
'SaveParse' ) );
1952 return $services->getRevisionStoreFactory()->getRevisionStore();
1957 $services->getDBLoadBalancerFactory(),
1958 $services->getBlobStoreFactory(),
1959 $services->getNameTableStoreFactory(),
1960 $services->getSlotRoleRegistry(),
1961 $services->getMainWANObjectCache(),
1962 $services->getLocalServerObjectCache(),
1963 $services->getCommentStore(),
1964 $services->getActorStoreFactory(),
1966 $services->getContentHandlerFactory(),
1967 $services->getPageStoreFactory(),
1968 $services->getTitleFactory(),
1969 $services->getHookContainer()
1974 return $services->get(
'_PageCommandFactory' );
1979 $services->getCommentParserFactory(),
1980 $services->getCommentStore()
1988 $services->getMainConfig()
1990 $services->getContentLanguage(),
1991 $services->getHookContainer(),
1993 $services->getUserOptionsLookup()
1999 $services->getSearchEngineConfig(),
2000 $services->getHookContainer(),
2001 $services->getConnectionProvider()
2007 $services->getRepoGroup(),
2008 $services->getHookContainer()
2013 $urls = $services->getMainConfig()->get(
MainConfigNames::ShellboxUrls );
2016 $services->getHttpRequestFactory(),
2018 $services->getMainConfig()->get( MainConfigNames::ShellboxSecretKey )
2023 $config = $services->getMainConfig();
2026 'time' => $config->get( MainConfigNames::MaxShellTime ),
2027 'walltime' => $config->get( MainConfigNames::MaxShellWallClockTime ),
2028 'memory' => $config->get( MainConfigNames::MaxShellMemory ),
2029 'filesize' => $config->get( MainConfigNames::MaxShellFileSize ),
2031 $cgroup = $config->get( MainConfigNames::ShellCgroup );
2032 $restrictionMethod = $config->get( MainConfigNames::ShellRestrictionMethod );
2034 $factory =
new CommandFactory( $services->getShellboxClientFactory(),
2035 $limits, $cgroup, $restrictionMethod );
2036 $factory->setLogger( LoggerFactory::getInstance(
'exec' ) );
2037 $factory->logStderr();
2046 $services->getMainConfig()
2049 static function () use ( $services ) {
2050 return $services->getParserFactory();
2052 static function () use ( $services ) {
2053 return $services->
get(
'_Parsoid' );
2055 $services->getParsoidPageConfigFactory(),
2056 $services->getSpecialPageFactory(),
2057 $services->getTitleFactory(),
2058 $services->getExtensionRegistry()
2066 return $services->getSiteStore();
2070 $rawSiteStore = new
DBSiteStore( $services->getConnectionProvider() );
2072 $cache = $services->getLocalServerObjectCache();
2083 $services->getObjectFactory(),
2087 $names = $services->getMainConfig()->get( MainConfigNames::ValidSkinNames );
2089 foreach ( $names as $name => $skin ) {
2090 if ( is_array( $skin ) ) {
2092 $displayName = $skin[
'displayname'] ?? $name;
2093 $skippable = $skin[
'skippable'] ??
null;
2095 $displayName = $skin;
2099 'class' =>
"Skin$skin"
2102 $factory->
register( $name, $displayName, $spec, $skippable );
2106 $factory->register(
'fallback',
'Fallback', [
2107 'class' => SkinFallback::class,
2110 'name' =>
'fallback',
2111 'styles' => [
'mediawiki.skinning.interface' ],
2112 'templateDirectory' => __DIR__ .
'/skins/templates/fallback',
2117 $factory->register(
'apioutput',
'ApiOutput', [
2118 'class' => SkinApi::class,
2121 'name' =>
'apioutput',
2122 'styles' => [
'mediawiki.skinning.interface' ],
2123 'templateDirectory' => __DIR__ .
'/skins/templates/apioutput',
2133 $services->getSlotRoleStore()
2136 $config = $services->getMainConfig();
2137 $contentHandlerFactory = $services->getContentHandlerFactory();
2138 $hookContainer = $services->getHookContainer();
2139 $titleFactory = $services->getTitleFactory();
2142 static function () use ( $config, $contentHandlerFactory, $hookContainer, $titleFactory ) {
2144 $config->get( MainConfigNames::NamespaceContentModels ),
2145 $contentHandlerFactory,
2156 return $services->getNameTableStoreFactory()->getSlotRoles();
2162 (array)$services->getMainConfig()->get(
MainConfigNames::SummarySpamRegex )
2170 $services->getContentLanguage(),
2171 $services->getObjectFactory(),
2172 $services->getTitleFactory(),
2173 $services->getHookContainer()
2179 rtrim( $services->getMainConfig()->get(
MainConfigNames::StatsdMetricPrefix ),
'.' )
2184 $config = $services->getMainConfig();
2185 $format = \Wikimedia\Stats\OutputFormats::getFormatFromString(
2186 $config->get( MainConfigNames::StatsFormat ) ??
'null'
2189 $emitter = \Wikimedia\Stats\OutputFormats::getNewEmitter(
2190 $config->get( MainConfigNames::StatsPrefix ) ??
'MediaWiki',
2192 \
Wikimedia\Stats\OutputFormats::getNewFormatter( $format ),
2193 $config->get( MainConfigNames::StatsTarget )
2195 $factory =
new StatsFactory( $cache, $emitter, LoggerFactory::getInstance(
'Stats' ) );
2196 return $factory->withStatsdDataFactory( $services->getStatsdDataFactory() );
2199 'TalkPageNotificationManager' =>
static function (
2206 $services->getConnectionProvider(),
2207 $services->getReadOnlyMode(),
2208 $services->getRevisionLookup(),
2209 $services->getHookContainer(),
2210 $services->getUserFactory()
2220 $services->getMainConfig()->get(
MainConfigNames::AutoCreateTempUser )
2226 $services->getTempUserConfig(),
2227 $services->getObjectFactory(),
2228 $services->getUserFactory(),
2229 $services->getAuthManager(),
2230 $services->getCentralIdLookup(),
2233 $services->getMainConfig()->get(
MainConfigNames::TempAccountCreationThrottle ),
2235 'type' =>
'tempacctcreate',
2236 'cache' =>
ObjectCache::getLocalClusterInstance(),
2240 $services->getMainConfig()->get(
MainConfigNames::TempAccountNameAcquisitionThrottle ),
2242 'type' =>
'tempacctnameacquisition',
2243 'cache' =>
ObjectCache::getLocalClusterInstance(),
2252 RemexDriver::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
2262 return $services->getService(
'_MediaWikiTitleCodec' );
2269 $services->getMainConfig()
2271 $services->getContentLanguage(),
2272 $services->getLanguageConverterFactory(),
2273 $services->getHookContainer(),
2274 $services->getWikiPageFactory(),
2275 $services->getUserNameUtils(),
2276 $services->getRepoGroup(),
2277 $services->getTitleFactory()
2282 return $services->getService(
'_MediaWikiTitleCodec' );
2289 $services->getMainConfig()
2291 $services->getNamespaceInfo(),
2292 $services->getTitleParser(),
2298 return $services->getService(
'_UserBlockCommandFactory' );
2302 return $services->getService(
'_PageCommandFactory' );
2313 $config = $services->getMainConfig();
2315 UrlUtils::SERVER => $config->get( MainConfigNames::Server ),
2316 UrlUtils::CANONICAL_SERVER => $config->get( MainConfigNames::CanonicalServer ),
2317 UrlUtils::INTERNAL_SERVER => $config->get( MainConfigNames::InternalServer ),
2318 UrlUtils::FALLBACK_PROTOCOL => RequestContext::getMain()->getRequest()->getProtocol(),
2319 UrlUtils::HTTPS_PORT => $config->get( MainConfigNames::HttpsPort ),
2320 UrlUtils::VALID_PROTOCOLS => $config->get( MainConfigNames::UrlProtocols ),
2327 $services->getConnectionProvider(),
2328 $services->getLinkBatchFactory()
2334 $services->getActorMigration(),
2335 $services->getConnectionProvider(),
2336 $services->getJobQueueGroup()
2343 UserFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
2345 $services->getDBLoadBalancerFactory(),
2346 $services->getUserNameUtils()
2351 return $services->getUserGroupManagerFactory()->getUserGroupManager();
2359 $services->getReadOnlyMode(),
2360 $services->getDBLoadBalancerFactory(),
2361 $services->getHookContainer(),
2362 $services->getUserEditTracker(),
2363 $services->getGroupPermissionsLookup(),
2364 $services->getJobQueueGroupFactory(),
2366 $services->getTempUserConfig(),
2367 [ static function (
UserIdentity $user ) use ( $services ) {
2368 if ( $user->getWikiId() === UserIdentity::LOCAL ) {
2369 $services->getPermissionManager()->invalidateUsersRightsCache( $user );
2371 $services->getUserFactory()->invalidateCache( $user );
2377 return $services->getActorStoreFactory()->getUserIdentityLookup();
2382 $services->getTempUserConfig()
2388 $services->getConnectionProvider(),
2389 $services->getUserNameUtils(),
2390 $services->getHideUserUtils()
2398 UserNameUtils::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
2400 $services->getContentLanguage(),
2401 LoggerFactory::getInstance(
'UserNameUtils' ),
2402 $services->getTitleParser(),
2403 $messageFormatterFactory->getTextFormatter(
2404 $services->getContentLanguage()->getCode()
2406 $services->getHookContainer(),
2407 $services->getTempUserConfig()
2412 return $services->getUserOptionsManager();
2418 $services->get(
'_DefaultOptionsLookup' ),
2419 $services->getLanguageConverterFactory(),
2420 $services->getConnectionProvider(),
2422 $services->getHookContainer(),
2423 $services->getUserFactory(),
2424 $services->getUserNameUtils()
2431 $services->getObjectFactory()
2433 if ( !$lookup->isRegistered( LocalUserRegistrationProvider::TYPE ) ) {
2434 throw new ConfigException(
'UserRegistrationLookup: Local provider is required' );
2441 $services->getConnectionProvider(),
2442 $services->getCommentStore(),
2443 $services->getWatchedItemStore(),
2444 $services->getHookContainer(),
2445 $services->getUserOptionsLookup(),
2446 $services->getTempUserConfig(),
2448 $services->getMainConfig()->get(
MainConfigNames::MaxExecutionTimeForExpensiveQueries )
2455 $services->getMainConfig() ),
2456 $services->getDBLoadBalancerFactory(),
2457 $services->getJobQueueGroup(),
2458 $services->getMainObjectStash(),
2460 $services->getReadOnlyMode(),
2461 $services->getNamespaceInfo(),
2462 $services->getRevisionLookup(),
2463 $services->getLinkBatchFactory()
2467 if ( $services->getMainConfig()->get( MainConfigNames::ReadOnlyWatchedItemStore ) ) {
2478 RecentChange::isEnotifEnabled( $services->getMainConfig() ),
2480 $services->getHookContainer(),
2481 $services->getReadOnlyMode(),
2482 $services->getRevisionLookup(),
2483 $services->getTalkPageNotificationManager(),
2484 $services->getWatchedItemStore(),
2485 $services->getUserFactory(),
2486 $services->getNamespaceInfo(),
2487 $services->getWikiPageFactory()
2493 $services->getHookContainer(),
2494 $services->getRevisionStore(),
2495 $services->getTitleParser(),
2496 $services->getCommentStore()
2502 $services->getMainConfig(),
2503 $services->getHookContainer(),
2504 $services->getContentLanguage(),
2505 $services->getNamespaceInfo(),
2506 $services->getTitleFactory(),
2507 $services->getWikiPageFactory(),
2508 $services->getWikiRevisionUploadImporter(),
2509 $services->getContentHandlerFactory(),
2510 $services->getSlotRoleRegistry()
2516 $services->getTitleFactory(),
2517 new
HookRunner( $services->getHookContainer() ),
2518 $services->getDBLoadBalancerFactory()
2522 'WikiRevisionOldRevisionImporterNoUpdates' =>
static function (
2528 $services->getConnectionProvider(),
2529 $services->getRevisionStoreFactory()->getRevisionStoreForImport(),
2530 $services->getSlotRoleRegistry(),
2531 $services->getWikiPageFactory(),
2532 $services->getPageUpdaterFactory(),
2533 $services->getUserFactory()
2543 '_ConditionalDefaultsLookup' =>
static function (
2550 $services->getUserRegistrationLookup(),
2551 $services->getUserIdentityUtils()
2558 $services->getContentLanguage(),
2559 $services->getHookContainer(),
2560 $services->getNamespaceInfo(),
2561 $services->get(
'_ConditionalDefaultsLookup' )
2573 $services->getMainConfig()
2578 $services->getPermissionManager(),
2581 $services->getHookContainer(),
2584 $services->getReadOnlyMode(),
2587 $services->getSpamChecker(),
2590 $services->getRateLimiter()
2595 $mainConfig = $services->getMainConfig();
2596 $id = $mainConfig->
get( MainConfigNames::MainCacheType );
2597 return $services->getObjectCacheFactory()->getInstance( $id );
2602 $services->getContentLanguage(),
2603 $services->getGenderCache(),
2605 $services->getInterwikiLookup(),
2606 $services->getNamespaceInfo()
2612 $services->getMainConfig(),
2613 $services->getDBLoadBalancerFactory(),
2614 $services->getNamespaceInfo(),
2615 $services->getWatchedItemStore(),
2616 $services->getRepoGroup(),
2617 $services->getReadOnlyMode(),
2618 $services->getContentHandlerFactory(),
2619 $services->getRevisionStore(),
2620 $services->getSpamChecker(),
2621 $services->getTitleFormatter(),
2622 $services->getHookContainer(),
2623 $services->getWikiPageFactory(),
2624 $services->getUserFactory(),
2625 $services->getActorMigration(),
2626 $services->getActorNormalization(),
2627 $services->getTitleFactory(),
2628 $services->getUserEditTracker(),
2629 $services->getCollationFactory(),
2630 $services->getJobQueueGroup(),
2631 $services->getCommentStore(),
2632 $services->getMainObjectStash(),
2633 WikiMap::getCurrentWikiDbDomain()->getId(),
2635 $services->getBacklinkCacheFactory(),
2637 $services->getPageUpdaterFactory(),
2638 $services->getMessageFormatterFactory()->getTextFormatter(
2639 $services->getContentLanguage()->getCode()
2641 $services->getArchivedRevisionLookup(),
2642 $services->getRestrictionStore(),
2643 $services->getLinkTargetLookup()
2653 $services->getParsoidSiteConfig(),
2654 $services->getParsoidDataAccess()
2663 return $services->getBlobStoreFactory()->newSqlBlobStore();
2669 $services->getHookContainer(),
2670 $services->getBlockPermissionCheckerFactory(),
2671 $services->getBlockUtils(),
2672 $services->getDatabaseBlockStore(),
2673 $services->getBlockRestrictionStore(),
2674 $services->getUserFactory(),
2675 $services->getUserEditTracker(),
2677 $services->getTitleFactory(),
2678 $services->getBlockActionInfo()
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
wfShellExec( $cmd, &$retval=null, $environ=[], $limits=[], $options=[])
Execute a shell command, with time and memory limits mirrored from the PHP configuration if supported...
wfMessage( $key,... $params)
This is the function for getting translated interface messages.
return[ 'ActionFactory'=> static function(MediaWikiServices $services):ActionFactory { return new ActionFactory($services->getMainConfig() ->get(MainConfigNames::Actions), LoggerFactory::getInstance( 'ActionFactory'), $services->getObjectFactory(), $services->getHookContainer());}, 'ActorMigration'=> static function(MediaWikiServices $services):ActorMigration { return new ActorMigration($services->getActorStoreFactory());}, 'ActorNormalization'=> static function(MediaWikiServices $services):ActorNormalization { return $services->getActorStoreFactory() ->getActorNormalization();}, 'ActorStore'=> static function(MediaWikiServices $services):ActorStore { return $services->getActorStoreFactory() ->getActorStore();}, 'ActorStoreFactory'=> static function(MediaWikiServices $services):ActorStoreFactory { return new ActorStoreFactory(new ServiceOptions(ActorStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getDBLoadBalancerFactory(), $services->getUserNameUtils(), $services->getTempUserConfig(), LoggerFactory::getInstance( 'ActorStore'), $services->getHideUserUtils());}, 'ArchivedRevisionLookup'=> static function(MediaWikiServices $services):ArchivedRevisionLookup { return new ArchivedRevisionLookup($services->getConnectionProvider(), $services->getRevisionStore());}, 'AuthManager'=> static function(MediaWikiServices $services):AuthManager { $authManager=new AuthManager(RequestContext::getMain() ->getRequest(), $services->getMainConfig(), $services->getObjectFactory(), $services->getHookContainer(), $services->getReadOnlyMode(), $services->getUserNameUtils(), $services->getBlockManager(), $services->getWatchlistManager(), $services->getDBLoadBalancer(), $services->getContentLanguage(), $services->getLanguageConverterFactory(), $services->getBotPasswordStore(), $services->getUserFactory(), $services->getUserIdentityLookup(), $services->getUserOptionsManager());$authManager->setLogger(LoggerFactory::getInstance( 'authentication'));return $authManager;}, 'AutoblockExemptionList'=> static function(MediaWikiServices $services):AutoblockExemptionList { $messageFormatterFactory=new MessageFormatterFactory(Message::FORMAT_PLAIN);return new AutoblockExemptionList(LoggerFactory::getInstance( 'AutoblockExemptionList'), $messageFormatterFactory->getTextFormatter($services->getContentLanguage() ->getCode()));}, 'BacklinkCacheFactory'=> static function(MediaWikiServices $services):BacklinkCacheFactory { return new BacklinkCacheFactory(new ServiceOptions(BacklinkCache::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getLinksMigration(), $services->getMainWANObjectCache(), $services->getHookContainer(), $services->getConnectionProvider());}, 'BadFileLookup'=> static function(MediaWikiServices $services):BadFileLookup { return new BadFileLookup(static function() { return wfMessage( 'bad_image_list') ->inContentLanguage() ->plain();}, $services->getLocalServerObjectCache(), $services->getRepoGroup(), $services->getTitleParser(), $services->getHookContainer());}, 'BlobStore'=> static function(MediaWikiServices $services):BlobStore { return $services->getService( '_SqlBlobStore');}, 'BlobStoreFactory'=> static function(MediaWikiServices $services):BlobStoreFactory { return new BlobStoreFactory($services->getDBLoadBalancerFactory(), $services->getExternalStoreAccess(), $services->getMainWANObjectCache(), new ServiceOptions(BlobStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));}, 'BlockActionInfo'=> static function(MediaWikiServices $services):BlockActionInfo { return new BlockActionInfo( $services->getHookContainer());}, 'BlockErrorFormatter'=> static function(MediaWikiServices $services):BlockErrorFormatter { return $services->getFormatterFactory() ->getBlockErrorFormatter(new LazyLocalizationContext(static function() { return RequestContext::getMain();}));}, 'BlockManager'=> static function(MediaWikiServices $services):BlockManager { return new BlockManager(new ServiceOptions(BlockManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getUserFactory(), $services->getUserIdentityUtils(), LoggerFactory::getInstance( 'BlockManager'), $services->getHookContainer(), $services->getDatabaseBlockStore(), $services->getProxyLookup());}, 'BlockPermissionCheckerFactory'=> static function(MediaWikiServices $services):BlockPermissionCheckerFactory { return new BlockPermissionCheckerFactory(new ServiceOptions(BlockPermissionCheckerFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getBlockUtils());}, 'BlockRestrictionStore'=> static function(MediaWikiServices $services):BlockRestrictionStore { return $services->getBlockRestrictionStoreFactory() ->getBlockRestrictionStore(WikiAwareEntity::LOCAL);}, 'BlockRestrictionStoreFactory'=> static function(MediaWikiServices $services):BlockRestrictionStoreFactory { return new BlockRestrictionStoreFactory($services->getDBLoadBalancerFactory(), $services->getMainConfig() ->get(MainConfigNames::BlockTargetMigrationStage));}, 'BlockUserFactory'=> static function(MediaWikiServices $services):BlockUserFactory { return $services->getService( '_UserBlockCommandFactory');}, 'BlockUtils'=> static function(MediaWikiServices $services):BlockUtils { return $services->getBlockUtilsFactory() ->getBlockUtils();}, 'BlockUtilsFactory'=> static function(MediaWikiServices $services):BlockUtilsFactory { return new BlockUtilsFactory(new ServiceOptions(BlockUtilsFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getActorStoreFactory(), $services->getUserNameUtils(), $services->getDBLoadBalancerFactory());}, 'BotPasswordStore'=> static function(MediaWikiServices $services):BotPasswordStore { return new BotPasswordStore(new ServiceOptions(BotPasswordStore::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getCentralIdLookup(), $services->getDBLoadBalancerFactory());}, 'CentralIdLookup'=> static function(MediaWikiServices $services):CentralIdLookup { return $services->getCentralIdLookupFactory() ->getLookup();}, 'CentralIdLookupFactory'=> static function(MediaWikiServices $services):CentralIdLookupFactory { return new CentralIdLookupFactory(new ServiceOptions(CentralIdLookupFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getObjectFactory(), $services->getUserIdentityLookup(), $services->getUserFactory());}, 'ChangeTagDefStore'=> static function(MediaWikiServices $services):NameTableStore { return $services->getNameTableStoreFactory() ->getChangeTagDef();}, 'ChangeTagsStore'=> static function(MediaWikiServices $services):ChangeTagsStore { return new ChangeTagsStore($services->getConnectionProvider(), $services->getChangeTagDefStore(), $services->getMainWANObjectCache(), $services->getHookContainer(), LoggerFactory::getInstance( 'ChangeTags'), $services->getUserFactory(), new ServiceOptions(ChangeTagsStore::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));}, 'ChronologyProtector'=> static function(MediaWikiServices $services):ChronologyProtector { $mainConfig=$services->getMainConfig();$cpStashType=$mainConfig->get(MainConfigNames::ChronologyProtectorStash);$isMainCacheBad=ObjectCache::isDatabaseId( $mainConfig->get(MainConfigNames::MainCacheType));if(is_string( $cpStashType)) { $cpStash=ObjectCache::getInstance( $cpStashType);} elseif( $isMainCacheBad) { $cpStash=new EmptyBagOStuff();} else { $cpStash=ObjectCache::getLocalClusterInstance();} $chronologyProtector=new ChronologyProtector($cpStash, $mainConfig->get(MainConfigNames::ChronologyProtectorSecret), MW_ENTRY_POINT==='cli', LoggerFactory::getInstance( 'rdbms'));$req=RequestContext::getMain() ->getRequest();$reqStart=(int)( $_SERVER['REQUEST_TIME_FLOAT'] ?? time());$cpPosInfo=ChronologyProtector::getCPInfoFromCookieValue($req->getCookie( 'cpPosIndex', ''), $reqStart - ChronologyProtector::POSITION_COOKIE_TTL);$chronologyProtector->setRequestInfo(['IPAddress'=> $req->getIP(), 'UserAgent'=> $req->getHeader( 'User-Agent'), 'ChronologyPositionIndex'=> $req->getInt( 'cpPosIndex', $cpPosInfo['index']), 'ChronologyClientId'=> $cpPosInfo['clientId'] ?? null,]);return $chronologyProtector;}, 'CollationFactory'=> static function(MediaWikiServices $services):CollationFactory { return new CollationFactory(new ServiceOptions(CollationFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getObjectFactory(), $services->getHookContainer());}, 'CommentFormatter'=> static function(MediaWikiServices $services):CommentFormatter { return new CommentFormatter($services->getCommentParserFactory());}, 'CommentParserFactory'=> static function(MediaWikiServices $services):CommentParserFactory { return new CommentParserFactory($services->getLinkRendererFactory() ->create([ 'renderForComment'=> true]), $services->getLinkBatchFactory(), $services->getLinkCache(), $services->getRepoGroup(), RequestContext::getMain() ->getLanguage(), $services->getContentLanguage(), $services->getTitleParser(), $services->getNamespaceInfo(), $services->getHookContainer());}, 'CommentStore'=> static function(MediaWikiServices $services):CommentStore { return new CommentStore( $services->getContentLanguage());}, 'ConfigFactory'=> static function(MediaWikiServices $services):ConfigFactory { $registry=$services->getBootstrapConfig() ->get(MainConfigNames::ConfigRegistry);$factory=new ConfigFactory();foreach( $registry as $name=> $callback) { $factory->register( $name, $callback);} return $factory;}, 'ConfigRepository'=> static function(MediaWikiServices $services):ConfigRepository { return new ConfigRepository( $services->getConfigFactory());}, 'ConfigSchema'=> static function(MediaWikiServices $services):ConfigSchema { $settings=$services->get( '_SettingsBuilder');return $settings->getConfigSchema();}, 'ConfiguredReadOnlyMode'=> static function(MediaWikiServices $services):ConfiguredReadOnlyMode { $config=$services->getMainConfig();return new ConfiguredReadOnlyMode($config->get(MainConfigNames::ReadOnly), $config->get(MainConfigNames::ReadOnlyFile));}, 'ConnectionProvider'=> static function(MediaWikiServices $services):IConnectionProvider { return $services->getDBLoadBalancerFactory();}, 'ContentHandlerFactory'=> static function(MediaWikiServices $services):IContentHandlerFactory { $contentHandlerConfig=$services->getMainConfig() ->get(MainConfigNames::ContentHandlers);return new ContentHandlerFactory($contentHandlerConfig, $services->getObjectFactory(), $services->getHookContainer(), LoggerFactory::getInstance( 'ContentHandler'));}, 'ContentLanguage'=> static function(MediaWikiServices $services):Language { return $services->getLanguageFactory() ->getLanguage($services->getMainConfig() ->get(MainConfigNames::LanguageCode));}, 'ContentModelChangeFactory'=> static function(MediaWikiServices $services):ContentModelChangeFactory { return $services->getService( '_PageCommandFactory');}, 'ContentModelStore'=> static function(MediaWikiServices $services):NameTableStore { return $services->getNameTableStoreFactory() ->getContentModels();}, 'ContentRenderer'=> static function(MediaWikiServices $services):ContentRenderer { return new ContentRenderer($services->getContentHandlerFactory(), $services->getGlobalIdGenerator());}, 'ContentTransformer'=> static function(MediaWikiServices $services):ContentTransformer { return new ContentTransformer( $services->getContentHandlerFactory());}, 'CriticalSectionProvider'=> static function(MediaWikiServices $services):CriticalSectionProvider { $config=$services->getMainConfig();$limit=MW_ENTRY_POINT==='cli' ? INF :$config->get(MainConfigNames::CriticalSectionTimeLimit);return RequestTimeout::singleton() ->createCriticalSectionProvider( $limit);}, 'CryptHKDF'=> static function(MediaWikiServices $services):CryptHKDF { $config=$services->getMainConfig();$secret=$config->get(MainConfigNames::HKDFSecret) ?:$config->get(MainConfigNames::SecretKey);if(! $secret) { throw new RuntimeException("Cannot use MWCryptHKDF without a secret.");} $context=[microtime(), getmypid(), gethostname()];$cache=$services->getLocalServerObjectCache();if( $cache instanceof EmptyBagOStuff) { $cache=ObjectCache::getLocalClusterInstance();} return new CryptHKDF( $secret, $config->get(MainConfigNames::HKDFAlgorithm), $cache, $context);}, 'DatabaseBlockStore'=> static function(MediaWikiServices $services):DatabaseBlockStore { return $services->getDatabaseBlockStoreFactory() ->getDatabaseBlockStore(DatabaseBlock::LOCAL);}, 'DatabaseBlockStoreFactory'=> static function(MediaWikiServices $services):DatabaseBlockStoreFactory { return new DatabaseBlockStoreFactory(new ServiceOptions(DatabaseBlockStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), LoggerFactory::getInstance( 'DatabaseBlockStore'), $services->getActorStoreFactory(), $services->getBlockRestrictionStoreFactory(), $services->getCommentStore(), $services->getHookContainer(), $services->getDBLoadBalancerFactory(), $services->getReadOnlyMode(), $services->getUserFactory(), $services->getTempUserConfig(), $services->getBlockUtilsFactory(), $services->getAutoblockExemptionList());}, 'DatabaseFactory'=> static function(MediaWikiServices $services):DatabaseFactory { return new DatabaseFactory([ 'debugSql'=> $services->getMainConfig() ->get(MainConfigNames::DebugDumpSql)]);}, 'DateFormatterFactory'=> static function(MediaWikiServices $services):DateFormatterFactory { return new DateFormatterFactory();}, 'DBLoadBalancer'=> static function(MediaWikiServices $services):Wikimedia\Rdbms\ILoadBalancer { return $services->getDBLoadBalancerFactory() ->getMainLB();}, 'DBLoadBalancerFactory'=> static function(MediaWikiServices $services):Wikimedia\Rdbms\LBFactory { $mainConfig=$services->getMainConfig();$lbFactoryConfigBuilder=$services->getDBLoadBalancerFactoryConfigBuilder();$lbConf=$lbFactoryConfigBuilder->applyDefaultConfig($mainConfig->get(MainConfigNames::LBFactoryConf));$class=$lbFactoryConfigBuilder->getLBFactoryClass( $lbConf);$instance=new $class( $lbConf);$lbFactoryConfigBuilder->setDomainAliases( $instance);$lbFactoryConfigBuilder->applyGlobalState($instance, $mainConfig, $services->getStatsdDataFactory());return $instance;}, 'DBLoadBalancerFactoryConfigBuilder'=> static function(MediaWikiServices $services):MWLBFactory { $mainConfig=$services->getMainConfig();if(ObjectCache::isDatabaseId( $mainConfig->get(MainConfigNames::MainCacheType))) { $wanCache=WANObjectCache::newEmpty();} else { $wanCache=$services->getMainWANObjectCache();} $srvCache=$services->getLocalServerObjectCache();if( $srvCache instanceof EmptyBagOStuff) { $srvCache=new HashBagOStuff([ 'maxKeys'=> 100]);} return new MWLBFactory(new ServiceOptions(MWLBFactory::APPLY_DEFAULT_CONFIG_OPTIONS, $services->getMainConfig()), new ConfiguredReadOnlyMode($mainConfig->get(MainConfigNames::ReadOnly), $mainConfig->get(MainConfigNames::ReadOnlyFile)), $services->getChronologyProtector(), $srvCache, $wanCache, $services->getCriticalSectionProvider(), $services->getStatsdDataFactory(), ExtensionRegistry::getInstance() ->getAttribute( 'DatabaseVirtualDomains'));}, 'DefaultOutputPipeline'=> static function(MediaWikiServices $services):OutputTransformPipeline { return(new DefaultOutputPipelineFactory($services->getHookContainer(), $services->getTidy(), $services->getLanguageFactory(), $services->getContentLanguage(), LoggerFactory::getInstance( 'Parser'), $services->getTitleFactory())) ->buildPipeline();}, 'DeletePageFactory'=> static function(MediaWikiServices $services):DeletePageFactory { return $services->getService( '_PageCommandFactory');}, 'Emailer'=> static function(MediaWikiServices $services):IEmailer { return new Emailer();}, 'EmailUserFactory'=> static function(MediaWikiServices $services):EmailUserFactory { return new EmailUserFactory(new ServiceOptions(EmailUser::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getHookContainer(), $services->getUserOptionsLookup(), $services->getCentralIdLookup(), $services->getUserFactory(), $services->getEmailer(), $services->getMessageFormatterFactory(), $services->getMessageFormatterFactory() ->getTextFormatter( $services->getContentLanguage() ->getCode()));}, 'EventRelayerGroup'=> static function(MediaWikiServices $services):EventRelayerGroup { return new EventRelayerGroup( $services->getMainConfig() ->get(MainConfigNames::EventRelayerConfig));}, 'ExtensionRegistry'=> static function(MediaWikiServices $services):ExtensionRegistry { return ExtensionRegistry::getInstance();}, 'ExternalStoreAccess'=> static function(MediaWikiServices $services):ExternalStoreAccess { return new ExternalStoreAccess($services->getExternalStoreFactory(), LoggerFactory::getInstance( 'ExternalStore'));}, 'ExternalStoreFactory'=> static function(MediaWikiServices $services):ExternalStoreFactory { $config=$services->getMainConfig();$writeStores=$config->get(MainConfigNames::DefaultExternalStore);return new ExternalStoreFactory($config->get(MainConfigNames::ExternalStores),( $writeStores !==false) ?(array) $writeStores :[], $services->getDBLoadBalancer() ->getLocalDomainID(), LoggerFactory::getInstance( 'ExternalStore'));}, 'FileBackendGroup'=> static function(MediaWikiServices $services):FileBackendGroup { $mainConfig=$services->getMainConfig();$ld=WikiMap::getCurrentWikiDbDomain();$fallbackWikiId=WikiMap::getWikiIdFromDbDomain( $ld);$legacyDomainId=strlen( $ld->getTablePrefix()) ? "{$ld->getDatabase()}-{$ld->getTablePrefix()}" :$ld->getDatabase();if( $ld->getSchema() !==null && $legacyDomainId !==$fallbackWikiId) { wfWarn("Legacy default 'domainId' is '$legacyDomainId' but wiki ID is '$fallbackWikiId'.");} $cache=$services->getLocalServerObjectCache();if( $cache instanceof EmptyBagOStuff) { $cache=new HashBagOStuff();} return new FileBackendGroup(new ServiceOptions(FileBackendGroup::CONSTRUCTOR_OPTIONS, $mainConfig, [ 'fallbackWikiId'=> $fallbackWikiId]), $services->getReadOnlyMode(), $cache, $services->getMainWANObjectCache(), $services->getMimeAnalyzer(), $services->getLockManagerGroupFactory(), $services->getTempFSFileFactory(), $services->getObjectFactory());}, 'FormatterFactory'=> static function(MediaWikiServices $services):FormatterFactory { return new FormatterFactory($services->getMessageCache(), $services->getTitleFormatter(), $services->getHookContainer(), $services->getUserIdentityUtils(), $services->getLanguageFactory());}, 'GenderCache'=> static function(MediaWikiServices $services):GenderCache { $nsInfo=$services->getNamespaceInfo();$dbLoadBalancer=$services->isServiceDisabled( 'DBLoadBalancer') ? null :$services->getDBLoadBalancerFactory();return new GenderCache( $nsInfo, $dbLoadBalancer, $services->get( '_DefaultOptionsLookup'));}, 'GlobalIdGenerator'=> static function(MediaWikiServices $services):GlobalIdGenerator { $mainConfig=$services->getMainConfig();return new GlobalIdGenerator($mainConfig->get(MainConfigNames::TmpDirectory), static function( $command) { return wfShellExec( $command);});}, 'GrantsInfo'=> static function(MediaWikiServices $services):GrantsInfo { return new GrantsInfo(new ServiceOptions(GrantsInfo::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));}, 'GrantsLocalization'=> static function(MediaWikiServices $services):GrantsLocalization { return new GrantsLocalization($services->getGrantsInfo(), $services->getLinkRenderer(), $services->getLanguageFactory(), $services->getContentLanguage());}, 'GroupPermissionsLookup'=> static function(MediaWikiServices $services):GroupPermissionsLookup { return new GroupPermissionsLookup(new ServiceOptions(GroupPermissionsLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));}, 'HideUserUtils'=> static function(MediaWikiServices $services):HideUserUtils { return new HideUserUtils($services->getMainConfig() ->get(MainConfigNames::BlockTargetMigrationStage));}, 'HookContainer'=> static function(MediaWikiServices $services):HookContainer { $configHooks=$services->getBootstrapConfig() ->get(MainConfigNames::Hooks);if( $configHooks instanceof FauxGlobalHookArray) { $configHooks=$configHooks->getOriginalArray();} $extRegistry=ExtensionRegistry::getInstance();$extHooks=$extRegistry->getAttribute( 'Hooks');$extDeprecatedHooks=$extRegistry->getAttribute( 'DeprecatedHooks');$hookRegistry=new StaticHookRegistry( $configHooks, $extHooks, $extDeprecatedHooks);$hookContainer=new HookContainer($hookRegistry, $services->getObjectFactory());return $hookContainer;}, 'HtmlCacheUpdater'=> static function(MediaWikiServices $services):HTMLCacheUpdater { $config=$services->getMainConfig();return new HTMLCacheUpdater($services->getHookContainer(), $services->getTitleFactory(), $config->get(MainConfigNames::CdnReboundPurgeDelay), $config->get(MainConfigNames::UseFileCache), $config->get(MainConfigNames::CdnMaxAge));}, 'HtmlTransformFactory'=> static function(MediaWikiServices $services):HtmlTransformFactory { return new HtmlTransformFactory($services->getService( '_Parsoid'), $services->getMainConfig() ->get(MainConfigNames::ParsoidSettings), $services->getParsoidPageConfigFactory(), $services->getContentHandlerFactory(), $services->getParsoidSiteConfig(), $services->getTitleFactory(), $services->getLanguageConverterFactory(), $services->getLanguageFactory());}, 'HttpRequestFactory'=> static function(MediaWikiServices $services):HttpRequestFactory { return new HttpRequestFactory(new ServiceOptions(HttpRequestFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), LoggerFactory::getInstance( 'http'), Telemetry::getInstance());}, 'InterwikiLookup'=> static function(MediaWikiServices $services):InterwikiLookup { return new ClassicInterwikiLookup(new ServiceOptions(ClassicInterwikiLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig(), [ 'wikiId'=> WikiMap::getCurrentWikiId()]), $services->getContentLanguage(), $services->getMainWANObjectCache(), $services->getHookContainer(), $services->getConnectionProvider());}, 'IntroMessageBuilder'=> static function(MediaWikiServices $services):IntroMessageBuilder { return new IntroMessageBuilder($services->getMainConfig(), $services->getLinkRenderer(), $services->getPermissionManager(), $services->getUserNameUtils(), $services->getTempUserCreator(), $services->getUserFactory(), $services->getRestrictionStore(), $services->getDatabaseBlockStore(), $services->getReadOnlyMode(), $services->getSpecialPageFactory(), $services->getRepoGroup(), $services->getNamespaceInfo(), $services->getSkinFactory(), $services->getConnectionProvider());}, 'JobFactory'=> static function(MediaWikiServices $services):JobFactory { return new JobFactory($services->getObjectFactory(), $services->getMainConfig() ->get(MainConfigNames::JobClasses));}, 'JobQueueGroup'=> static function(MediaWikiServices $services):JobQueueGroup { return $services->getJobQueueGroupFactory() ->makeJobQueueGroup();}, 'JobQueueGroupFactory'=> static function(MediaWikiServices $services):JobQueueGroupFactory { return new JobQueueGroupFactory(new ServiceOptions(JobQueueGroupFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getReadOnlyMode(), $services->getStatsdDataFactory(), $services->getMainWANObjectCache(), $services->getGlobalIdGenerator());}, 'JobRunner'=> static function(MediaWikiServices $services):JobRunner { return new JobRunner(new ServiceOptions(JobRunner::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getDBLoadBalancerFactory(), $services->getJobQueueGroup(), $services->getReadOnlyMode(), $services->getLinkCache(), $services->getStatsdDataFactory(), LoggerFactory::getInstance( 'runJobs'));}, 'JsonCodec'=> static function(MediaWikiServices $services):JsonCodec { return new JsonCodec();}, 'LanguageConverterFactory'=> static function(MediaWikiServices $services):LanguageConverterFactory { return new LanguageConverterFactory(new ServiceOptions(LanguageConverterFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getObjectFactory(), static function() use( $services) { return $services->getContentLanguage();});}, 'LanguageFactory'=> static function(MediaWikiServices $services):LanguageFactory { return new LanguageFactory(new ServiceOptions(LanguageFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getNamespaceInfo(), $services->getLocalisationCache(), $services->getLanguageNameUtils(), $services->getLanguageFallback(), $services->getLanguageConverterFactory(), $services->getHookContainer(), $services->getMainConfig());}, 'LanguageFallback'=> static function(MediaWikiServices $services):LanguageFallback { return new LanguageFallback($services->getMainConfig() ->get(MainConfigNames::LanguageCode), $services->getLocalisationCache(), $services->getLanguageNameUtils());}, 'LanguageNameUtils'=> static function(MediaWikiServices $services):LanguageNameUtils { return new LanguageNameUtils(new ServiceOptions(LanguageNameUtils::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getHookContainer());}, 'LinkBatchFactory'=> static function(MediaWikiServices $services):LinkBatchFactory { return new LinkBatchFactory($services->getLinkCache(), $services->getTitleFormatter(), $services->getContentLanguage(), $services->getGenderCache(), $services->getConnectionProvider(), $services->getLinksMigration(), LoggerFactory::getInstance( 'LinkBatch'));}, 'LinkCache'=> static function(MediaWikiServices $services):LinkCache { $dbLoadBalancer=$services->isServiceDisabled( 'DBLoadBalancer') ? null :$services->getDBLoadBalancer();$linkCache=new LinkCache($services->getTitleFormatter(), $services->getMainWANObjectCache(), $services->getNamespaceInfo(), $dbLoadBalancer);$linkCache->setLogger(LoggerFactory::getInstance( 'LinkCache'));return $linkCache;}, 'LinkRenderer'=> static function(MediaWikiServices $services):LinkRenderer { return $services->getLinkRendererFactory() ->create();}, 'LinkRendererFactory'=> static function(MediaWikiServices $services):LinkRendererFactory { return new LinkRendererFactory($services->getTitleFormatter(), $services->getLinkCache(), $services->getSpecialPageFactory(), $services->getHookContainer());}, 'LinksMigration'=> static function(MediaWikiServices $services):LinksMigration { return new LinksMigration($services->getMainConfig(), $services->getLinkTargetLookup());}, 'LinkTargetLookup'=> static function(MediaWikiServices $services):LinkTargetLookup { return new LinkTargetStore($services->getConnectionProvider(), $services->getLocalServerObjectCache(), $services->getMainWANObjectCache());}, 'LocalisationCache'=> static function(MediaWikiServices $services):LocalisationCache { $conf=$services->getMainConfig() ->get(MainConfigNames::LocalisationCacheConf);$logger=LoggerFactory::getInstance( 'localisation');$store=LocalisationCache::getStoreFromConf($conf, $services->getMainConfig() ->get(MainConfigNames::CacheDirectory));$logger->debug( 'LocalisationCache using store ' . get_class( $store));return new $conf['class'](new ServiceOptions(LocalisationCache::CONSTRUCTOR_OPTIONS, $conf, ['forceRecache'=> false, 'manualRecache'=> false,], $services->getMainConfig()), $store, $logger, [static function() use( $services) { MessageBlobStore::clearGlobalCacheEntry( $services->getMainWANObjectCache());}], $services->getLanguageNameUtils(), $services->getHookContainer());}, 'LocalServerObjectCache'=> static function(MediaWikiServices $services):BagOStuff { return $services->getObjectCacheFactory() ->getInstance(CACHE_ACCEL);}, 'LockManagerGroupFactory'=> static function(MediaWikiServices $services):LockManagerGroupFactory { return new LockManagerGroupFactory(WikiMap::getCurrentWikiDbDomain() ->getId(), $services->getMainConfig() ->get(MainConfigNames::LockManagers));}, 'LogFormatterFactory'=> static function(MediaWikiServices $services):LogFormatterFactory { return new LogFormatterFactory(new ServiceOptions(LogFormatterFactory::SERVICE_OPTIONS, $services->getMainConfig()), $services->getObjectFactory(), $services->getHookContainer(), $services->getLinkRenderer(), $services->getContentLanguage(), $services->getCommentFormatter(), $services->getUserEditTracker());}, 'MagicWordFactory'=> static function(MediaWikiServices $services):MagicWordFactory { return new MagicWordFactory($services->getContentLanguage(), $services->getHookContainer());}, 'MainConfig'=> static function(MediaWikiServices $services):Config { return $services->getConfigFactory() ->makeConfig( 'main');}, 'MainObjectStash'=> static function(MediaWikiServices $services):BagOStuff { $mainConfig=$services->getMainConfig();$id=$mainConfig->get(MainConfigNames::MainStash);$store=$services->getObjectCacheFactory() ->getInstance( $id);$store->getLogger() ->debug( 'MainObjectStash using store {class}', ['class'=> get_class( $store)]);return $store;}, 'MainWANObjectCache'=> static function(MediaWikiServices $services):WANObjectCache { $mainConfig=$services->getMainConfig();$store=$services->get( '_LocalClusterCache');$logger=$store->getLogger();$logger->debug( 'MainWANObjectCache using store {class}', ['class'=> get_class( $store)]);$wanParams=$mainConfig->get(MainConfigNames::WANObjectCache)+['cache'=> $store, 'logger'=> $logger, 'secret'=> $mainConfig->get(MainConfigNames::SecretKey),];if(MW_ENTRY_POINT !=='cli') { $wanParams['stats']=$services->getStatsdDataFactory();$wanParams['asyncHandler']=[DeferredUpdates::class, 'addCallableUpdate'];} return new WANObjectCache( $wanParams);}, 'MediaHandlerFactory'=> static function(MediaWikiServices $services):MediaHandlerFactory { return new MediaHandlerFactory(LoggerFactory::getInstance( 'MediaHandlerFactory'), $services->getMainConfig() ->get(MainConfigNames::MediaHandlers));}, 'MergeHistoryFactory'=> static function(MediaWikiServices $services):MergeHistoryFactory { return $services->getService( '_PageCommandFactory');}, 'MessageCache'=> static function(MediaWikiServices $services):MessageCache { $mainConfig=$services->getMainConfig();$clusterCache=ObjectCache::getInstance( $mainConfig->get(MainConfigNames::MessageCacheType));$srvCache=$mainConfig->get(MainConfigNames::UseLocalMessageCache) ? $services->getLocalServerObjectCache() :new EmptyBagOStuff();$logger=LoggerFactory::getInstance( 'MessageCache');$logger->debug( 'MessageCache using store {class}', ['class'=> get_class( $clusterCache)]);$options=new ServiceOptions(MessageCache::CONSTRUCTOR_OPTIONS, $mainConfig);return new MessageCache($services->getMainWANObjectCache(), $clusterCache, $srvCache, $services->getContentLanguage(), $services->getLanguageConverterFactory(), $logger, $options, $services->getLanguageFactory(), $services->getLocalisationCache(), $services->getLanguageNameUtils(), $services->getLanguageFallback(), $services->getHookContainer(), $services->getParserFactory());}, 'MessageFormatterFactory'=> static function(MediaWikiServices $services):IMessageFormatterFactory { return new MessageFormatterFactory();}, 'MicroStash'=> static function(MediaWikiServices $services):BagOStuff { $mainConfig=$services->getMainConfig();$id=$mainConfig->get(MainConfigNames::MicroStashType);$store=$services->getObjectCacheFactory() ->getInstance( $id);$store->getLogger() ->debug( 'MicroStash using store {class}', ['class'=> get_class( $store)]);return $store;}, 'MimeAnalyzer'=> static function(MediaWikiServices $services):MimeAnalyzer { $logger=LoggerFactory::getInstance( 'Mime');$mainConfig=$services->getMainConfig();$hookRunner=new HookRunner( $services->getHookContainer());$params=['typeFile'=> $mainConfig->get(MainConfigNames::MimeTypeFile), 'infoFile'=> $mainConfig->get(MainConfigNames::MimeInfoFile), 'xmlTypes'=> $mainConfig->get(MainConfigNames::XMLMimeTypes), 'guessCallback'=> static function($mimeAnalyzer, &$head, &$tail, $file, &$mime) use( $logger, $hookRunner) { $deja=new DjVuImage( $file);if( $deja->isValid()) { $logger->info("Detected $file as image/vnd.djvu\n");$mime='image/vnd.djvu';return;} $hookRunner->onMimeMagicGuessFromContent($mimeAnalyzer, $head, $tail, $file, $mime);}, 'extCallback'=> static function( $mimeAnalyzer, $ext, &$mime) use( $hookRunner) { $hookRunner->onMimeMagicImproveFromExtension( $mimeAnalyzer, $ext, $mime);}, 'initCallback'=> static function( $mimeAnalyzer) use( $hookRunner) { $hookRunner->onMimeMagicInit( $mimeAnalyzer);}, 'logger'=> $logger];if( $params['infoFile']==='includes/mime.info') { $params['infoFile']=MimeAnalyzer::USE_INTERNAL;} if( $params['typeFile']==='includes/mime.types') { $params['typeFile']=MimeAnalyzer::USE_INTERNAL;} $detectorCmd=$mainConfig->get(MainConfigNames::MimeDetectorCommand);if( $detectorCmd) { $factory=$services->getShellCommandFactory();$params['detectCallback']=static function( $file) use( $detectorCmd, $factory) { $result=$factory->create() ->unsafeParams( $detectorCmd) ->params( $file) ->execute();return $result->getStdout();};} return new MimeAnalyzer( $params);}, 'MovePageFactory'=> static function(MediaWikiServices $services):MovePageFactory { return $services->getService( '_PageCommandFactory');}, 'NamespaceInfo'=> static function(MediaWikiServices $services):NamespaceInfo { return new NamespaceInfo(new ServiceOptions(NamespaceInfo::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getHookContainer(), ExtensionRegistry::getInstance() ->getAttribute( 'ExtensionNamespaces'), ExtensionRegistry::getInstance() ->getAttribute( 'ImmovableNamespaces'));}, 'NameTableStoreFactory'=> static function(MediaWikiServices $services):NameTableStoreFactory { return new NameTableStoreFactory($services->getDBLoadBalancerFactory(), $services->getMainWANObjectCache(), LoggerFactory::getInstance( 'NameTableSqlStore'));}, 'ObjectCacheFactory'=> static function(MediaWikiServices $services):ObjectCacheFactory { return new ObjectCacheFactory(new ServiceOptions(ObjectCacheFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getStatsFactory(), LoggerFactory::getProvider(), static function() use( $services) { return $services->getDBLoadBalancerFactory();}, WikiMap::getCurrentWikiDbDomain() ->getId());}, 'ObjectFactory'=> static function(MediaWikiServices $services):ObjectFactory { return new ObjectFactory( $services);}, 'OldRevisionImporter'=> static function(MediaWikiServices $services):OldRevisionImporter { return new ImportableOldRevisionImporter(true, LoggerFactory::getInstance( 'OldRevisionImporter'), $services->getConnectionProvider(), $services->getRevisionStoreFactory() ->getRevisionStoreForImport(), $services->getSlotRoleRegistry(), $services->getWikiPageFactory(), $services->getPageUpdaterFactory(), $services->getUserFactory());}, 'PageEditStash'=> static function(MediaWikiServices $services):PageEditStash { return new PageEditStash(ObjectCache::getLocalClusterInstance(), $services->getConnectionProvider(), LoggerFactory::getInstance( 'StashEdit'), $services->getStatsdDataFactory(), $services->getUserEditTracker(), $services->getUserFactory(), $services->getWikiPageFactory(), $services->getHookContainer(), defined( 'MEDIAWIKI_JOB_RUNNER')||MW_ENTRY_POINT==='cli' ? PageEditStash::INITIATOR_JOB_OR_CLI :PageEditStash::INITIATOR_USER);}, 'PageProps'=> static function(MediaWikiServices $services):PageProps { return new PageProps($services->getLinkBatchFactory(), $services->getConnectionProvider());}, 'PageRestHelperFactory'=> static function(MediaWikiServices $services):PageRestHelperFactory { return new PageRestHelperFactory(new ServiceOptions(PageRestHelperFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getRevisionLookup(), $services->getTitleFormatter(), $services->getPageStore(), $services->getParsoidOutputStash(), $services->getStatsdDataFactory(), $services->getParsoidOutputAccess(), $services->getHtmlTransformFactory(), $services->getContentHandlerFactory(), $services->getLanguageFactory(), $services->getRedirectStore(), $services->getLanguageConverterFactory());}, 'PageStore'=> static function(MediaWikiServices $services):PageStore { return $services->getPageStoreFactory() ->getPageStore();}, 'PageStoreFactory'=> static function(MediaWikiServices $services):PageStoreFactory { $options=new ServiceOptions(PageStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig());return new PageStoreFactory($options, $services->getDBLoadBalancerFactory(), $services->getNamespaceInfo(), $services->getTitleParser(), $services->getLinkCache(), $services->getStatsdDataFactory());}, 'PageUpdaterFactory'=> static function(MediaWikiServices $services):PageUpdaterFactory { $editResultCache=new EditResultCache($services->getMainObjectStash(), $services->getConnectionProvider(), new ServiceOptions(EditResultCache::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));return new PageUpdaterFactory($services->getRevisionStore(), $services->getRevisionRenderer(), $services->getSlotRoleRegistry(), $services->getParserCache(), $services->getJobQueueGroup(), $services->getMessageCache(), $services->getContentLanguage(), $services->getDBLoadBalancerFactory(), $services->getContentHandlerFactory(), $services->getHookContainer(), $editResultCache, $services->getUserNameUtils(), LoggerFactory::getInstance( 'SavePage'), new ServiceOptions(PageUpdaterFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getUserEditTracker(), $services->getUserGroupManager(), $services->getTitleFormatter(), $services->getContentTransformer(), $services->getPageEditStash(), $services->getTalkPageNotificationManager(), $services->getMainWANObjectCache(), $services->getPermissionManager(), $services->getWikiPageFactory(), $services->getChangeTagsStore() ->getSoftwareTags());}, 'Parser'=> static function(MediaWikiServices $services):Parser { return $services->getParserFactory() ->getMainInstance();}, 'ParserCache'=> static function(MediaWikiServices $services):ParserCache { return $services->getParserCacheFactory() ->getParserCache(ParserCacheFactory::DEFAULT_NAME);}, 'ParserCacheFactory'=> static function(MediaWikiServices $services):ParserCacheFactory { $config=$services->getMainConfig();$cache=ObjectCache::getInstance( $config->get(MainConfigNames::ParserCacheType));$wanCache=$services->getMainWANObjectCache();$options=new ServiceOptions(ParserCacheFactory::CONSTRUCTOR_OPTIONS, $config);return new ParserCacheFactory($cache, $wanCache, $services->getHookContainer(), $services->getJsonCodec(), $services->getStatsFactory(), LoggerFactory::getInstance( 'ParserCache'), $options, $services->getTitleFactory(), $services->getWikiPageFactory(), $services->getGlobalIdGenerator());}, 'ParserFactory'=> static function(MediaWikiServices $services):ParserFactory { $options=new ServiceOptions(Parser::CONSTRUCTOR_OPTIONS, $services->getMainConfig());return new ParserFactory($options, $services->getMagicWordFactory(), $services->getContentLanguage(), $services->getUrlUtils(), $services->getSpecialPageFactory(), $services->getLinkRendererFactory(), $services->getNamespaceInfo(), LoggerFactory::getInstance( 'Parser'), $services->getBadFileLookup(), $services->getLanguageConverterFactory(), $services->getHookContainer(), $services->getTidy(), $services->getMainWANObjectCache(), $services->getUserOptionsLookup(), $services->getUserFactory(), $services->getTitleFormatter(), $services->getHttpRequestFactory(), $services->getTrackingCategories(), $services->getSignatureValidatorFactory(), $services->getUserNameUtils());}, 'ParserOutputAccess'=> static function(MediaWikiServices $services):ParserOutputAccess { return new ParserOutputAccess($services->getParserCacheFactory(), $services->getRevisionLookup(), $services->getRevisionRenderer(), $services->getStatsdDataFactory(), $services->getDBLoadBalancerFactory(), $services->getChronologyProtector(), LoggerFactory::getProvider(), $services->getWikiPageFactory(), $services->getTitleFormatter());}, 'ParsoidDataAccess'=> static function(MediaWikiServices $services):DataAccess { $mainConfig=$services->getMainConfig();return new MWDataAccess(new ServiceOptions(MWDataAccess::CONSTRUCTOR_OPTIONS, $mainConfig), $services->getRepoGroup(), $services->getBadFileLookup(), $services->getHookContainer(), $services->getContentTransformer(), $services->getReadOnlyMode(), $services->getParserFactory(), $services->getLinkBatchFactory());}, 'ParsoidOutputAccess'=> static function(MediaWikiServices $services):ParsoidOutputAccess { return new ParsoidOutputAccess($services->getParsoidParserFactory(), $services->getParserOutputAccess(), $services->getPageStore(), $services->getRevisionLookup(), $services->getParsoidSiteConfig(), $services->getContentHandlerFactory());}, 'ParsoidOutputStash'=> static function(MediaWikiServices $services):ParsoidOutputStash { $config=$services->getMainConfig() ->get(MainConfigNames::ParsoidCacheConfig);$backend=$config['StashType'] ? ObjectCache::getInstance( $config['StashType']) :$services->getMainObjectStash();return new SimpleParsoidOutputStash($services->getContentHandlerFactory(), $backend, $config['StashDuration']);}, 'ParsoidPageConfigFactory'=> static function(MediaWikiServices $services):MWPageConfigFactory { return new MWPageConfigFactory($services->getRevisionStore(), $services->getSlotRoleRegistry(), $services->getLanguageFactory());}, 'ParsoidParserFactory'=> static function(MediaWikiServices $services):ParsoidParserFactory { return new ParsoidParserFactory($services->getParsoidSiteConfig(), $services->getParsoidDataAccess(), $services->getParsoidPageConfigFactory(), $services->getLanguageConverterFactory(), $services->getParserFactory(), $services->getGlobalIdGenerator());}, 'ParsoidSiteConfig'=> static function(MediaWikiServices $services):SiteConfig { $mainConfig=$services->getMainConfig();$parsoidSettings=$mainConfig->get(MainConfigNames::ParsoidSettings);return new MWSiteConfig(new ServiceOptions(MWSiteConfig::CONSTRUCTOR_OPTIONS, $mainConfig), $parsoidSettings, $services->getObjectFactory(), $services->getContentLanguage(), $services->getStatsdDataFactory(), $services->getMagicWordFactory(), $services->getNamespaceInfo(), $services->getSpecialPageFactory(), $services->getInterwikiLookup(), $services->getUserOptionsLookup(), $services->getLanguageFactory(), $services->getLanguageConverterFactory(), $services->getLanguageNameUtils(), $services->getUrlUtils(), ExtensionRegistry::getInstance() ->getAttribute( 'ParsoidModules'), $services->getParserFactory(), $mainConfig, ExtensionRegistry::getInstance() ->isLoaded( 'TimedMediaHandler'));}, 'PasswordFactory'=> static function(MediaWikiServices $services):PasswordFactory { $config=$services->getMainConfig();return new PasswordFactory($config->get(MainConfigNames::PasswordConfig), $config->get(MainConfigNames::PasswordDefault));}, 'PasswordReset'=> static function(MediaWikiServices $services):PasswordReset { $options=new ServiceOptions(PasswordReset::CONSTRUCTOR_OPTIONS, $services->getMainConfig());return new PasswordReset($options, LoggerFactory::getInstance( 'authentication'), $services->getAuthManager(), $services->getHookContainer(), $services->getConnectionProvider(), $services->getUserFactory(), $services->getUserNameUtils(), $services->getUserOptionsLookup());}, 'PerDbNameStatsdDataFactory'=> static function(MediaWikiServices $services):StatsdDataFactoryInterface { $config=$services->getMainConfig();$wiki=$config->get(MainConfigNames::DBname);return new PrefixingStatsdDataFactoryProxy($services->getStatsdDataFactory(), $wiki);}, 'PermissionManager'=> static function(MediaWikiServices $services):PermissionManager { return new PermissionManager(new ServiceOptions(PermissionManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getSpecialPageFactory(), $services->getNamespaceInfo(), $services->getGroupPermissionsLookup(), $services->getUserGroupManager(), $services->getBlockManager(), $services->getFormatterFactory() ->getBlockErrorFormatter(new LazyLocalizationContext(static function() { return RequestContext::getMain();})), $services->getHookContainer(), $services->getUserCache(), $services->getRedirectLookup(), $services->getRestrictionStore(), $services->getTitleFormatter(), $services->getTempUserConfig(), $services->getUserFactory(), $services->getActionFactory());}, 'Pingback'=> static function(MediaWikiServices $services):Pingback { return new Pingback($services->getMainConfig(), $services->getConnectionProvider(), ObjectCache::getLocalClusterInstance(), $services->getHttpRequestFactory(), LoggerFactory::getInstance( 'Pingback'));}, 'PoolCounterFactory'=> static function(MediaWikiServices $services):PoolCounterFactory { $mainConfig=$services->getMainConfig();return new PoolCounterFactory($mainConfig->get(MainConfigNames::PoolCounterConf), $mainConfig->get(MainConfigNames::PoolCountClientConf), LoggerFactory::getInstance( 'poolcounter'));}, 'PreferencesFactory'=> static function(MediaWikiServices $services):PreferencesFactory { $factory=new DefaultPreferencesFactory(new ServiceOptions(DefaultPreferencesFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), $services->getAuthManager(), $services->getLinkRendererFactory() ->create(), $services->getNamespaceInfo(), $services->getPermissionManager(), $services->getLanguageConverterFactory() ->getLanguageConverter(), $services->getLanguageNameUtils(), $services->getHookContainer(), $services->getUserOptionsManager(), $services->getLanguageConverterFactory(), $services->getParserFactory(), $services->getSkinFactory(), $services->getUserGroupManager(), $services->getSignatureValidatorFactory());$factory->setLogger(LoggerFactory::getInstance( 'preferences'));return $factory;}, 'PreloadedContentBuilder'=> static function(MediaWikiServices $services):PreloadedContentBuilder { return new PreloadedContentBuilder($services->getContentHandlerFactory(), $services->getWikiPageFactory(), $services->getRedirectLookup(), $services->getSpecialPageFactory(), $services->getContentTransformer(), $services->getHookContainer(),);}, 'ProxyLookup'=> static function(MediaWikiServices $services):ProxyLookup { $mainConfig=$services->getMainConfig();return new ProxyLookup($mainConfig->get(MainConfigNames::CdnServers), $mainConfig->get(MainConfigNames::CdnServersNoPurge), $services->getHookContainer());}, 'RateLimiter'=> static function(MediaWikiServices $services):RateLimiter { $rateLimiter=new RateLimiter(new ServiceOptions(RateLimiter::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getWRStatsFactory(), $services->getCentralIdLookupFactory() ->getNonLocalLookup(), $services->getUserFactory(), $services->getUserGroupManager(), $services->getHookContainer());$rateLimiter->setStats( $services->getStatsdDataFactory());return $rateLimiter;}, 'ReadOnlyMode'=> static function(MediaWikiServices $services):ReadOnlyMode { return new ReadOnlyMode(new ConfiguredReadOnlyMode($services->getMainConfig() ->get(MainConfigNames::ReadOnly), $services->getMainConfig() ->get(MainConfigNames::ReadOnlyFile)), $services->getDBLoadBalancerFactory());}, 'RedirectLookup'=> static function(MediaWikiServices $services):RedirectLookup { return $services->getRedirectStore();}, 'RedirectStore'=> static function(MediaWikiServices $services):RedirectStore { return new RedirectStore( $services->getWikiPageFactory());}, 'RepoGroup'=> static function(MediaWikiServices $services):RepoGroup { $config=$services->getMainConfig();return new RepoGroup($config->get(MainConfigNames::LocalFileRepo), $config->get(MainConfigNames::ForeignFileRepos), $services->getMainWANObjectCache(), $services->getMimeAnalyzer());}, 'ResourceLoader'=> static function(MediaWikiServices $services):ResourceLoader { $config=$services->getMainConfig();$maxage=$config->get(MainConfigNames::ResourceLoaderMaxage);$rl=new ResourceLoader($config, LoggerFactory::getInstance( 'resourceloader'), $config->get(MainConfigNames::ResourceLoaderUseObjectCacheForDeps) ? new KeyValueDependencyStore( $services->getMainObjectStash()) :new SqlModuleDependencyStore( $services->getDBLoadBalancer()), ['loadScript'=> $config->get(MainConfigNames::LoadScript), 'maxageVersioned'=> $maxage['versioned'] ?? null, 'maxageUnversioned'=> $maxage['unversioned'] ?? null,]);$extRegistry=ExtensionRegistry::getInstance();$modules=$extRegistry->getAttribute( 'ResourceModules')+ $config->get(MainConfigNames::ResourceModules);$moduleSkinStyles=$extRegistry->getAttribute( 'ResourceModuleSkinStyles')+ $config->get(MainConfigNames::ResourceModuleSkinStyles);$rl->setModuleSkinStyles( $moduleSkinStyles);$rl->addSource( $config->get(MainConfigNames::ResourceLoaderSources));$rl->register(include MW_INSTALL_PATH . '/resources/Resources.php');$rl->register( $modules);$hookRunner=new \MediaWiki\ResourceLoader\HookRunner( $services->getHookContainer());$hookRunner->onResourceLoaderRegisterModules( $rl);$msgPosterAttrib=$extRegistry->getAttribute( 'MessagePosterModule');$rl->register( 'mediawiki.messagePoster', ['localBasePath'=> MW_INSTALL_PATH, 'debugRaw'=> false, 'scripts'=> array_merge(["resources/src/mediawiki.messagePoster/factory.js", "resources/src/mediawiki.messagePoster/MessagePoster.js", "resources/src/mediawiki.messagePoster/WikitextMessagePoster.js",], $msgPosterAttrib['scripts'] ??[]), 'dependencies'=> array_merge(['oojs', 'mediawiki.api', 'mediawiki.ForeignApi',], $msgPosterAttrib['dependencies'] ??[]),]);if( $config->get(MainConfigNames::EnableJavaScriptTest)===true) { $rl->registerTestModules();} return $rl;}, 'RestrictionStore'=> static function(MediaWikiServices $services):RestrictionStore { return new RestrictionStore(new ServiceOptions(RestrictionStore::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getMainWANObjectCache(), $services->getDBLoadBalancer(), $services->getLinkCache(), $services->getLinksMigration(), $services->getCommentStore(), $services->getHookContainer(), $services->getPageStore());}, 'RevertedTagUpdateManager'=> static function(MediaWikiServices $services):RevertedTagUpdateManager { $editResultCache=new EditResultCache($services->getMainObjectStash(), $services->getConnectionProvider(), new ServiceOptions(EditResultCache::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));return new RevertedTagUpdateManager($editResultCache, $services->getJobQueueGroup());}, 'RevisionFactory'=> static function(MediaWikiServices $services):RevisionFactory { return $services->getRevisionStore();}, 'RevisionLookup'=> static function(MediaWikiServices $services):RevisionLookup { return $services->getRevisionStore();}, 'RevisionRenderer'=> static function(MediaWikiServices $services):RevisionRenderer { $renderer=new RevisionRenderer($services->getDBLoadBalancer(), $services->getSlotRoleRegistry(), $services->getContentRenderer());$renderer->setLogger(LoggerFactory::getInstance( 'SaveParse'));return $renderer;}, 'RevisionStore'=> static function(MediaWikiServices $services):RevisionStore { return $services->getRevisionStoreFactory() ->getRevisionStore();}, 'RevisionStoreFactory'=> static function(MediaWikiServices $services):RevisionStoreFactory { return new RevisionStoreFactory($services->getDBLoadBalancerFactory(), $services->getBlobStoreFactory(), $services->getNameTableStoreFactory(), $services->getSlotRoleRegistry(), $services->getMainWANObjectCache(), $services->getLocalServerObjectCache(), $services->getCommentStore(), $services->getActorStoreFactory(), LoggerFactory::getInstance( 'RevisionStore'), $services->getContentHandlerFactory(), $services->getPageStoreFactory(), $services->getTitleFactory(), $services->getHookContainer());}, 'RollbackPageFactory'=> static function(MediaWikiServices $services):RollbackPageFactory { return $services->get( '_PageCommandFactory');}, 'RowCommentFormatter'=> static function(MediaWikiServices $services):RowCommentFormatter { return new RowCommentFormatter($services->getCommentParserFactory(), $services->getCommentStore());}, 'SearchEngineConfig'=> static function(MediaWikiServices $services):SearchEngineConfig { return new SearchEngineConfig(new ServiceOptions(SearchEngineConfig::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), $services->getHookContainer(), ExtensionRegistry::getInstance() ->getAttribute( 'SearchMappings'), $services->getUserOptionsLookup());}, 'SearchEngineFactory'=> static function(MediaWikiServices $services):SearchEngineFactory { return new SearchEngineFactory($services->getSearchEngineConfig(), $services->getHookContainer(), $services->getConnectionProvider());}, 'SearchResultThumbnailProvider'=> static function(MediaWikiServices $services):SearchResultThumbnailProvider { return new SearchResultThumbnailProvider($services->getRepoGroup(), $services->getHookContainer());}, 'ShellboxClientFactory'=> static function(MediaWikiServices $services):ShellboxClientFactory { $urls=$services->getMainConfig() ->get(MainConfigNames::ShellboxUrls);return new ShellboxClientFactory($services->getHttpRequestFactory(), $urls, $services->getMainConfig() ->get(MainConfigNames::ShellboxSecretKey));}, 'ShellCommandFactory'=> static function(MediaWikiServices $services):CommandFactory { $config=$services->getMainConfig();$limits=['time'=> $config->get(MainConfigNames::MaxShellTime), 'walltime'=> $config->get(MainConfigNames::MaxShellWallClockTime), 'memory'=> $config->get(MainConfigNames::MaxShellMemory), 'filesize'=> $config->get(MainConfigNames::MaxShellFileSize),];$cgroup=$config->get(MainConfigNames::ShellCgroup);$restrictionMethod=$config->get(MainConfigNames::ShellRestrictionMethod);$factory=new CommandFactory( $services->getShellboxClientFactory(), $limits, $cgroup, $restrictionMethod);$factory->setLogger(LoggerFactory::getInstance( 'exec'));$factory->logStderr();return $factory;}, 'SignatureValidatorFactory'=> static function(MediaWikiServices $services):SignatureValidatorFactory { return new SignatureValidatorFactory(new ServiceOptions(SignatureValidator::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), static function() use( $services) { return $services->getParserFactory();}, static function() use( $services) { return $services->get( '_Parsoid');}, $services->getParsoidPageConfigFactory(), $services->getSpecialPageFactory(), $services->getTitleFactory(), $services->getExtensionRegistry());}, 'SiteLookup'=> static function(MediaWikiServices $services):SiteLookup { return $services->getSiteStore();}, 'SiteStore'=> static function(MediaWikiServices $services):SiteStore { $rawSiteStore=new DBSiteStore( $services->getConnectionProvider());$cache=$services->getLocalServerObjectCache();if( $cache instanceof EmptyBagOStuff) { $cache=ObjectCache::getLocalClusterInstance();} return new CachingSiteStore( $rawSiteStore, $cache);}, 'SkinFactory'=> static function(MediaWikiServices $services):SkinFactory { $factory=new SkinFactory($services->getObjectFactory(),(array) $services->getMainConfig() ->get(MainConfigNames::SkipSkins));$names=$services->getMainConfig() ->get(MainConfigNames::ValidSkinNames);foreach( $names as $name=> $skin) { if(is_array( $skin)) { $spec=$skin;$displayName=$skin['displayname'] ?? $name;$skippable=$skin['skippable'] ?? null;} else { $displayName=$skin;$skippable=null;$spec=['name'=> $name, 'class'=> "Skin$skin"];} $factory->register( $name, $displayName, $spec, $skippable);} $factory->register( 'fallback', 'Fallback', ['class'=> SkinFallback::class, 'args'=>[['name'=> 'fallback', 'styles'=>[ 'mediawiki.skinning.interface'], 'templateDirectory'=> __DIR__ . '/skins/templates/fallback',]]], true);$factory->register( 'apioutput', 'ApiOutput', ['class'=> SkinApi::class, 'args'=>[['name'=> 'apioutput', 'styles'=>[ 'mediawiki.skinning.interface'], 'templateDirectory'=> __DIR__ . '/skins/templates/apioutput',]]], true);return $factory;}, 'SlotRoleRegistry'=> static function(MediaWikiServices $services):SlotRoleRegistry { $registry=new SlotRoleRegistry($services->getSlotRoleStore());$config=$services->getMainConfig();$contentHandlerFactory=$services->getContentHandlerFactory();$hookContainer=$services->getHookContainer();$titleFactory=$services->getTitleFactory();$registry->defineRole(SlotRecord::MAIN, static function() use( $config, $contentHandlerFactory, $hookContainer, $titleFactory) { return new MainSlotRoleHandler($config->get(MainConfigNames::NamespaceContentModels), $contentHandlerFactory, $hookContainer, $titleFactory);});return $registry;}, 'SlotRoleStore'=> static function(MediaWikiServices $services):NameTableStore { return $services->getNameTableStoreFactory() ->getSlotRoles();}, 'SpamChecker'=> static function(MediaWikiServices $services):SpamChecker { return new SpamChecker((array) $services->getMainConfig() ->get(MainConfigNames::SpamRegex),(array) $services->getMainConfig() ->get(MainConfigNames::SummarySpamRegex));}, 'SpecialPageFactory'=> static function(MediaWikiServices $services):SpecialPageFactory { return new SpecialPageFactory(new ServiceOptions(SpecialPageFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), $services->getObjectFactory(), $services->getTitleFactory(), $services->getHookContainer());}, 'StatsdDataFactory'=> static function(MediaWikiServices $services):IBufferingStatsdDataFactory { return new BufferingStatsdDataFactory(rtrim( $services->getMainConfig() ->get(MainConfigNames::StatsdMetricPrefix), '.'));}, 'StatsFactory'=> static function(MediaWikiServices $services):StatsFactory { $config=$services->getMainConfig();$format=\Wikimedia\Stats\OutputFormats::getFormatFromString($config->get(MainConfigNames::StatsFormat) ?? 'null');$cache=new StatsCache;$emitter=\Wikimedia\Stats\OutputFormats::getNewEmitter($config->get(MainConfigNames::StatsPrefix) ?? 'MediaWiki', $cache, \Wikimedia\Stats\OutputFormats::getNewFormatter( $format), $config->get(MainConfigNames::StatsTarget));$factory=new StatsFactory( $cache, $emitter, LoggerFactory::getInstance( 'Stats'));return $factory->withStatsdDataFactory( $services->getStatsdDataFactory());}, 'TalkPageNotificationManager'=> static function(MediaWikiServices $services):TalkPageNotificationManager { return new TalkPageNotificationManager(new ServiceOptions(TalkPageNotificationManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getConnectionProvider(), $services->getReadOnlyMode(), $services->getRevisionLookup(), $services->getHookContainer(), $services->getUserFactory());}, 'TempFSFileFactory'=> static function(MediaWikiServices $services):TempFSFileFactory { return new TempFSFileFactory( $services->getMainConfig() ->get(MainConfigNames::TmpDirectory));}, 'TempUserConfig'=> static function(MediaWikiServices $services):RealTempUserConfig { return new RealTempUserConfig($services->getMainConfig() ->get(MainConfigNames::AutoCreateTempUser));}, 'TempUserCreator'=> static function(MediaWikiServices $services):TempUserCreator { return new TempUserCreator($services->getTempUserConfig(), $services->getObjectFactory(), $services->getUserFactory(), $services->getAuthManager(), $services->getCentralIdLookup(), new Throttler($services->getMainConfig() ->get(MainConfigNames::TempAccountCreationThrottle), ['type'=> 'tempacctcreate', 'cache'=> ObjectCache::getLocalClusterInstance(),]), new Throttler($services->getMainConfig() ->get(MainConfigNames::TempAccountNameAcquisitionThrottle), ['type'=> 'tempacctnameacquisition', 'cache'=> ObjectCache::getLocalClusterInstance(),]));}, 'Tidy'=> static function(MediaWikiServices $services):TidyDriverBase { return new RemexDriver(new ServiceOptions(RemexDriver::CONSTRUCTOR_OPTIONS, $services->getMainConfig()));}, 'TitleFactory'=> static function(MediaWikiServices $services):TitleFactory { return new TitleFactory();}, 'TitleFormatter'=> static function(MediaWikiServices $services):TitleFormatter { return $services->getService( '_MediaWikiTitleCodec');}, 'TitleMatcher'=> static function(MediaWikiServices $services):TitleMatcher { return new TitleMatcher(new ServiceOptions(TitleMatcher::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), $services->getLanguageConverterFactory(), $services->getHookContainer(), $services->getWikiPageFactory(), $services->getUserNameUtils(), $services->getRepoGroup(), $services->getTitleFactory());}, 'TitleParser'=> static function(MediaWikiServices $services):TitleParser { return $services->getService( '_MediaWikiTitleCodec');}, 'TrackingCategories'=> static function(MediaWikiServices $services):TrackingCategories { return new TrackingCategories(new ServiceOptions(TrackingCategories::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getNamespaceInfo(), $services->getTitleParser(), LoggerFactory::getInstance( 'TrackingCategories'));}, 'UnblockUserFactory'=> static function(MediaWikiServices $services):UnblockUserFactory { return $services->getService( '_UserBlockCommandFactory');}, 'UndeletePageFactory'=> static function(MediaWikiServices $services):UndeletePageFactory { return $services->getService( '_PageCommandFactory');}, 'UploadRevisionImporter'=> static function(MediaWikiServices $services):UploadRevisionImporter { return new ImportableUploadRevisionImporter($services->getMainConfig() ->get(MainConfigNames::EnableUploads), LoggerFactory::getInstance( 'UploadRevisionImporter'));}, 'UrlUtils'=> static function(MediaWikiServices $services):UrlUtils { $config=$services->getMainConfig();return new UrlUtils([UrlUtils::SERVER=> $config->get(MainConfigNames::Server), UrlUtils::CANONICAL_SERVER=> $config->get(MainConfigNames::CanonicalServer), UrlUtils::INTERNAL_SERVER=> $config->get(MainConfigNames::InternalServer), UrlUtils::FALLBACK_PROTOCOL=> RequestContext::getMain() ->getRequest() ->getProtocol(), UrlUtils::HTTPS_PORT=> $config->get(MainConfigNames::HttpsPort), UrlUtils::VALID_PROTOCOLS=> $config->get(MainConfigNames::UrlProtocols),]);}, 'UserCache'=> static function(MediaWikiServices $services):UserCache { return new UserCache(LoggerFactory::getInstance( 'UserCache'), $services->getConnectionProvider(), $services->getLinkBatchFactory());}, 'UserEditTracker'=> static function(MediaWikiServices $services):UserEditTracker { return new UserEditTracker($services->getActorMigration(), $services->getConnectionProvider(), $services->getJobQueueGroup());}, 'UserFactory'=> static function(MediaWikiServices $services):UserFactory { return new UserFactory(new ServiceOptions(UserFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getDBLoadBalancerFactory(), $services->getUserNameUtils());}, 'UserGroupManager'=> static function(MediaWikiServices $services):UserGroupManager { return $services->getUserGroupManagerFactory() ->getUserGroupManager();}, 'UserGroupManagerFactory'=> static function(MediaWikiServices $services):UserGroupManagerFactory { return new UserGroupManagerFactory(new ServiceOptions(UserGroupManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getReadOnlyMode(), $services->getDBLoadBalancerFactory(), $services->getHookContainer(), $services->getUserEditTracker(), $services->getGroupPermissionsLookup(), $services->getJobQueueGroupFactory(), LoggerFactory::getInstance( 'UserGroupManager'), $services->getTempUserConfig(), [static function(UserIdentity $user) use( $services) { if( $user->getWikiId()===UserIdentity::LOCAL) { $services->getPermissionManager() ->invalidateUsersRightsCache( $user);} $services->getUserFactory() ->invalidateCache( $user);}]);}, 'UserIdentityLookup'=> static function(MediaWikiServices $services):UserIdentityLookup { return $services->getActorStoreFactory() ->getUserIdentityLookup();}, 'UserIdentityUtils'=> static function(MediaWikiServices $services):UserIdentityUtils { return new UserIdentityUtils($services->getTempUserConfig());}, 'UserNamePrefixSearch'=> static function(MediaWikiServices $services):UserNamePrefixSearch { return new UserNamePrefixSearch($services->getConnectionProvider(), $services->getUserNameUtils(), $services->getHideUserUtils());}, 'UserNameUtils'=> static function(MediaWikiServices $services):UserNameUtils { $messageFormatterFactory=new MessageFormatterFactory(Message::FORMAT_PLAIN);return new UserNameUtils(new ServiceOptions(UserNameUtils::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), LoggerFactory::getInstance( 'UserNameUtils'), $services->getTitleParser(), $messageFormatterFactory->getTextFormatter($services->getContentLanguage() ->getCode()), $services->getHookContainer(), $services->getTempUserConfig());}, 'UserOptionsLookup'=> static function(MediaWikiServices $services):UserOptionsLookup { return $services->getUserOptionsManager();}, 'UserOptionsManager'=> static function(MediaWikiServices $services):UserOptionsManager { return new UserOptionsManager(new ServiceOptions(UserOptionsManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->get( '_DefaultOptionsLookup'), $services->getLanguageConverterFactory(), $services->getConnectionProvider(), LoggerFactory::getInstance( 'UserOptionsManager'), $services->getHookContainer(), $services->getUserFactory(), $services->getUserNameUtils());}, 'UserRegistrationLookup'=> static function(MediaWikiServices $services):UserRegistrationLookup { $lookup=new UserRegistrationLookup(new ServiceOptions(UserRegistrationLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getObjectFactory());if(! $lookup->isRegistered(LocalUserRegistrationProvider::TYPE)) { throw new ConfigException( 'UserRegistrationLookup:Local provider is required');} return $lookup;}, 'WatchedItemQueryService'=> static function(MediaWikiServices $services):WatchedItemQueryService { return new WatchedItemQueryService($services->getConnectionProvider(), $services->getCommentStore(), $services->getWatchedItemStore(), $services->getHookContainer(), $services->getUserOptionsLookup(), $services->getTempUserConfig(), $services->getMainConfig() ->get(MainConfigNames::WatchlistExpiry), $services->getMainConfig() ->get(MainConfigNames::MaxExecutionTimeForExpensiveQueries));}, 'WatchedItemStore'=> static function(MediaWikiServices $services):WatchedItemStore { $store=new WatchedItemStore(new ServiceOptions(WatchedItemStore::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getDBLoadBalancerFactory(), $services->getJobQueueGroup(), $services->getMainObjectStash(), new HashBagOStuff([ 'maxKeys'=> 100]), $services->getReadOnlyMode(), $services->getNamespaceInfo(), $services->getRevisionLookup(), $services->getLinkBatchFactory());$store->setStatsdDataFactory( $services->getStatsdDataFactory());if( $services->getMainConfig() ->get(MainConfigNames::ReadOnlyWatchedItemStore)) { $store=new NoWriteWatchedItemStore( $store);} return $store;}, 'WatchlistManager'=> static function(MediaWikiServices $services):WatchlistManager { return new WatchlistManager([WatchlistManager::OPTION_ENOTIF=> RecentChange::isEnotifEnabled( $services->getMainConfig()),], $services->getHookContainer(), $services->getReadOnlyMode(), $services->getRevisionLookup(), $services->getTalkPageNotificationManager(), $services->getWatchedItemStore(), $services->getUserFactory(), $services->getNamespaceInfo(), $services->getWikiPageFactory());}, 'WikiExporterFactory'=> static function(MediaWikiServices $services):WikiExporterFactory { return new WikiExporterFactory($services->getHookContainer(), $services->getRevisionStore(), $services->getTitleParser(), $services->getCommentStore());}, 'WikiImporterFactory'=> static function(MediaWikiServices $services):WikiImporterFactory { return new WikiImporterFactory($services->getMainConfig(), $services->getHookContainer(), $services->getContentLanguage(), $services->getNamespaceInfo(), $services->getTitleFactory(), $services->getWikiPageFactory(), $services->getWikiRevisionUploadImporter(), $services->getContentHandlerFactory(), $services->getSlotRoleRegistry());}, 'WikiPageFactory'=> static function(MediaWikiServices $services):WikiPageFactory { return new WikiPageFactory($services->getTitleFactory(), new HookRunner( $services->getHookContainer()), $services->getDBLoadBalancerFactory());}, 'WikiRevisionOldRevisionImporterNoUpdates'=> static function(MediaWikiServices $services):ImportableOldRevisionImporter { return new ImportableOldRevisionImporter(false, LoggerFactory::getInstance( 'OldRevisionImporter'), $services->getConnectionProvider(), $services->getRevisionStoreFactory() ->getRevisionStoreForImport(), $services->getSlotRoleRegistry(), $services->getWikiPageFactory(), $services->getPageUpdaterFactory(), $services->getUserFactory());}, 'WRStatsFactory'=> static function(MediaWikiServices $services):WRStatsFactory { return new WRStatsFactory(new BagOStuffStatsStore( $services->getMicroStash()));}, '_ConditionalDefaultsLookup'=> static function(MediaWikiServices $services):ConditionalDefaultsLookup { return new ConditionalDefaultsLookup(new ServiceOptions(ConditionalDefaultsLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getUserRegistrationLookup(), $services->getUserIdentityUtils());}, '_DefaultOptionsLookup'=> static function(MediaWikiServices $services):DefaultOptionsLookup { return new DefaultOptionsLookup(new ServiceOptions(DefaultOptionsLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getContentLanguage(), $services->getHookContainer(), $services->getNamespaceInfo(), $services->get( '_ConditionalDefaultsLookup'));}, '_EditConstraintFactory'=> static function(MediaWikiServices $services):EditConstraintFactory { return new EditConstraintFactory(new ServiceOptions(EditConstraintFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), LoggerFactory::getProvider(), $services->getPermissionManager(), $services->getHookContainer(), $services->getReadOnlyMode(), $services->getSpamChecker(), $services->getRateLimiter());}, '_LocalClusterCache'=> static function(MediaWikiServices $services):BagOStuff { $mainConfig=$services->getMainConfig();$id=$mainConfig->get(MainConfigNames::MainCacheType);return $services->getObjectCacheFactory() ->getInstance( $id);}, '_MediaWikiTitleCodec'=> static function(MediaWikiServices $services):MediaWikiTitleCodec { return new MediaWikiTitleCodec($services->getContentLanguage(), $services->getGenderCache(), $services->getMainConfig() ->get(MainConfigNames::LocalInterwikis), $services->getInterwikiLookup(), $services->getNamespaceInfo());}, '_PageCommandFactory'=> static function(MediaWikiServices $services):PageCommandFactory { return new PageCommandFactory($services->getMainConfig(), $services->getDBLoadBalancerFactory(), $services->getNamespaceInfo(), $services->getWatchedItemStore(), $services->getRepoGroup(), $services->getReadOnlyMode(), $services->getContentHandlerFactory(), $services->getRevisionStore(), $services->getSpamChecker(), $services->getTitleFormatter(), $services->getHookContainer(), $services->getWikiPageFactory(), $services->getUserFactory(), $services->getActorMigration(), $services->getActorNormalization(), $services->getTitleFactory(), $services->getUserEditTracker(), $services->getCollationFactory(), $services->getJobQueueGroup(), $services->getCommentStore(), $services->getMainObjectStash(), WikiMap::getCurrentWikiDbDomain() ->getId(), WebRequest::getRequestId(), $services->getBacklinkCacheFactory(), LoggerFactory::getInstance( 'UndeletePage'), $services->getPageUpdaterFactory(), $services->getMessageFormatterFactory() ->getTextFormatter($services->getContentLanguage() ->getCode()), $services->getArchivedRevisionLookup(), $services->getRestrictionStore(), $services->getLinkTargetLookup());}, '_ParserObserver'=> static function(MediaWikiServices $services):ParserObserver { return new ParserObserver(LoggerFactory::getInstance( 'DuplicateParse'));}, '_Parsoid'=> static function(MediaWikiServices $services):Parsoid { return new Parsoid($services->getParsoidSiteConfig(), $services->getParsoidDataAccess());}, '_SettingsBuilder'=> static function(MediaWikiServices $services):SettingsBuilder { return SettingsBuilder::getInstance();}, '_SqlBlobStore'=> static function(MediaWikiServices $services):SqlBlobStore { return $services->getBlobStoreFactory() ->newSqlBlobStore();}, '_UserBlockCommandFactory'=> static function(MediaWikiServices $services):UserBlockCommandFactory { return new UserBlockCommandFactory(new ServiceOptions(UserBlockCommandFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig()), $services->getHookContainer(), $services->getBlockPermissionCheckerFactory(), $services->getBlockUtils(), $services->getDatabaseBlockStore(), $services->getBlockRestrictionStore(), $services->getUserFactory(), $services->getUserEditTracker(), LoggerFactory::getInstance( 'BlockManager'), $services->getTitleFactory(), $services->getBlockActionInfo());},]
@phpcs-require-sorted-array
array $params
The job parameters.
Class representing a cache/ephemeral data store.
get( $key, $flags=0)
Get an item.
MediaWiki's adaption of StatsdDataFactory that provides buffering and metric prefixing.
Support for detecting/validating DjVu image files and getting some basic file metadata (resolution et...
A BagOStuff object with no objects in it.
Load JSON files, and uses a Processor to extract information.
This is the main interface for fetching or inserting objects with ExternalStore.
Class to handle file backend registration.
Simple store for keeping values in an associative array for the current process.
Handle enqueueing of background jobs.
Job queue runner utility methods.
Methods for dealing with language codes.
Base class for language-specific code.
Caching for the contents of localisation files.
static getStoreFromConf(array $conf, $fallbackCacheDir)
Return a suitable LCStore as specified by the given configuration.
MediaWiki-specific class for generating database load balancers.
A service to render content.
A service to transform content.
Group all the pieces relevant to the context of a request into one instance.
Constraints reflect possible errors that need to be checked.
Provides the intro messages (edit notices and others) to be displayed before an edit form.
Provides the initial content of the edit box displayed in an edit form when creating a new page or a ...
Service to check if text (either content or a summary) qualifies as spam.
Wrapper for injecting a LocalizationContext with lazy initialization.
A class containing constants representing the names of configuration variables.
Implementation of various page action services.
Gives access to properties of a page.
Service for getting rendered output of a given page.
Service for storing and retrieving page redirect information.
Service for creating WikiPage objects.
Helper class used by MediaWiki to create Parsoid PageConfig objects.
A SlotRoleHandler for the main slot.
Factory for handling the special page list and generating SpecialPage objects.
Manage the pre-emptive page parsing for edits to wiki pages.
A factory for PageUpdater and DerivedPageDataUpdater instances.
Manages user talk page notifications.
Cache messages that are defined by MediaWiki-namespace pages or by hooks.
Factory for cache objects as configured in the ObjectCaches setting.
static isDatabaseId( $id)
Determine whether a config ID would access the database.
static getInstance( $id)
Get a cached instance of the specified type of cache object.
static getLocalClusterInstance()
Get the main cluster-local cache object.
Cache for ParserOutput objects corresponding to the latest page revisions.
Factory class for creating and checking Password objects.
Proxy to prefix metric keys sent to a StatsdDataFactoryInterface.
Utility class for creating new RC entries.
Prioritized list of file repositories.
Configuration handling class for SearchEngine.
Factory class for SearchEngine.
Factory class to create Skin objects.
register( $name, $displayName, $spec, bool $skippable=null)
Register a new skin.
Multi-datacenter aware caching interface.
get( $key, &$curTTL=null, array $checkKeys=[], &$info=[])
Fetch the value of a key from cache.
static newEmpty()
Get an instance that wraps EmptyBagOStuff.
Storage layer class for WatchedItems.
setStatsdDataFactory(StatsdDataFactoryInterface $stats)
Factory service for WikiImporter instances.
MediaWiki adaptation of StatsdDataFactory that provides buffering functionality.
Service for changing the content model of wiki pages.
Service for page delete actions.
Service for mergehistory actions.
Service for page rename actions.
Service for resolving a wiki page redirect.
Service for page rollback actions.
Service for page undelete actions.