44 use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
182 use Wikimedia\ObjectFactory\ObjectFactory;
183 use Wikimedia\Parsoid\Config\Api\DataAccess as ApiDataAccess;
184 use Wikimedia\Parsoid\Config\Api\SiteConfig as ApiSiteConfig;
185 use Wikimedia\Parsoid\Config\DataAccess;
186 use Wikimedia\Parsoid\Config\SiteConfig;
187 use Wikimedia\RequestTimeout\CriticalSectionProvider;
188 use Wikimedia\RequestTimeout\RequestTimeout;
189 use Wikimedia\Services\RecursiveServiceDependencyException;
196 $services->getMainConfig()->get( MainConfigNames::Actions ),
197 LoggerFactory::getInstance(
'ActionFactory' ),
198 $services->getObjectFactory(),
199 $services->getHookContainer()
206 $services->getActorStoreFactory()
211 return $services->getActorStoreFactory()->getActorNormalization();
215 return $services->getActorStoreFactory()->getActorStore();
220 new ServiceOptions( ActorStoreFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
221 $services->getDBLoadBalancerFactory(),
222 $services->getUserNameUtils(),
223 LoggerFactory::getInstance(
'ActorStore' )
229 $services->getDBLoadBalancer(),
230 $services->getRevisionStore()
237 $services->getMainConfig(),
238 $services->getObjectFactory(),
239 $services->getHookContainer(),
240 $services->getReadOnlyMode(),
241 $services->getUserNameUtils(),
242 $services->getBlockManager(),
243 $services->getWatchlistManager(),
244 $services->getDBLoadBalancer(),
245 $services->getContentLanguage(),
246 $services->getLanguageConverterFactory(),
247 $services->getBotPasswordStore(),
248 $services->getUserFactory(),
249 $services->getUserIdentityLookup(),
250 $services->getUserOptionsManager()
252 $authManager->setLogger( LoggerFactory::getInstance(
'authentication' ) );
263 return wfMessage(
'bad_image_list' )->inContentLanguage()->plain();
265 $services->getLocalServerObjectCache(),
266 $services->getRepoGroup(),
267 $services->getTitleParser(),
268 $services->getHookContainer()
273 return $services->getService(
'_SqlBlobStore' );
278 $services->getDBLoadBalancerFactory(),
279 $services->getExternalStoreAccess(),
280 $services->getMainWANObjectCache(),
282 $services->getMainConfig() )
292 $services->getTitleFormatter()
299 BlockManager::CONSTRUCTOR_OPTIONS,
300 $services->getMainConfig()
302 $services->getPermissionManager(),
303 $services->getUserFactory(),
304 LoggerFactory::getInstance(
'BlockManager' ),
305 $services->getHookContainer()
309 'BlockPermissionCheckerFactory' =>
static function (
314 BlockPermissionCheckerFactory::CONSTRUCTOR_OPTIONS,
315 $services->getMainConfig()
317 $services->getBlockUtils()
322 return $services->getBlockRestrictionStoreFactory()->getBlockRestrictionStore( WikiAwareEntity::LOCAL );
327 $services->getDBLoadBalancerFactory()
332 return $services->getService(
'_UserBlockCommandFactory' );
338 BlockUtils::CONSTRUCTOR_OPTIONS,
339 $services->getMainConfig()
341 $services->getUserIdentityLookup(),
342 $services->getUserNameUtils()
349 BotPasswordStore::CONSTRUCTOR_OPTIONS,
350 $services->getMainConfig()
352 $services->getCentralIdLookup(),
353 $services->getDBLoadBalancerFactory()
358 return $services->getCentralIdLookupFactory()->getLookup();
363 new ServiceOptions( CentralIdLookupFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
364 $services->getObjectFactory(),
365 $services->getUserIdentityLookup()
370 return $services->getNameTableStoreFactory()->getChangeTagDef();
376 CollationFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
377 $services->getObjectFactory(),
378 $services->getHookContainer()
383 $linkRenderer = $services->getLinkRendererFactory()->create( [
'renderForComment' =>
true ] );
386 $services->getLinkBatchFactory(),
387 $services->getLinkCache(),
388 $services->getRepoGroup(),
390 $services->getContentLanguage(),
391 $services->getTitleParser(),
392 $services->getNamespaceInfo(),
393 $services->getHookContainer()
400 $services->getContentLanguage(),
407 $registry = $services->getBootstrapConfig()->get( MainConfigNames::ConfigRegistry );
410 foreach ( $registry as $name => $callback ) {
411 $factory->register( $name, $callback );
426 $config = $services->getMainConfig();
428 $config->get( MainConfigNames::ReadOnly ),
429 $config->get( MainConfigNames::ReadOnlyFile )
434 $contentHandlerConfig = $services->getMainConfig()->get( MainConfigNames::ContentHandlers );
437 $contentHandlerConfig,
438 $services->getObjectFactory(),
439 $services->getHookContainer(),
440 LoggerFactory::getInstance(
'ContentHandler' )
445 return $services->getLanguageFactory()->getLanguage(
446 $services->getMainConfig()->get( MainConfigNames::LanguageCode ) );
450 return $services->getService(
'_PageCommandFactory' );
454 return $services->getNameTableStoreFactory()->getContentModels();
467 $services->getRevisionStore(),
468 $services->getLinkRendererFactory(),
469 $services->getLinkBatchFactory(),
470 $services->getHookContainer(),
471 $services->getDBLoadBalancer(),
472 $services->getActorMigration(),
473 $services->getNamespaceInfo(),
474 $services->getCommentFormatter()
478 'CriticalSectionProvider' =>
static function (
MediaWikiServices $services ): CriticalSectionProvider {
479 $config = $services->getMainConfig();
480 $limit = $GLOBALS[
'wgCommandLineMode' ] ? INF : $config->get( MainConfigNames::CriticalSectionTimeLimit );
481 return RequestTimeout::singleton()->createCriticalSectionProvider( $limit );
485 $config = $services->getMainConfig();
487 $secret = $config->get( MainConfigNames::HKDFSecret ) ?: $config->get( MainConfigNames::SecretKey );
489 throw new RuntimeException(
"Cannot use MWCryptHKDF without a secret." );
494 $context = [ microtime(), getmypid(), gethostname() ];
497 $cache = $services->getLocalServerObjectCache();
502 return new CryptHKDF( $secret, $config->get( MainConfigNames::HKDFAlgorithm ),
$cache, $context );
508 DatabaseBlockStore::CONSTRUCTOR_OPTIONS,
509 $services->getMainConfig()
511 LoggerFactory::getInstance(
'DatabaseBlockStore' ),
512 $services->getActorStoreFactory(),
513 $services->getBlockRestrictionStore(),
514 $services->getCommentStore(),
515 $services->getHookContainer(),
516 $services->getDBLoadBalancer(),
517 $services->getReadOnlyMode(),
518 $services->getUserFactory()
526 'DBLoadBalancer' =>
static function (
MediaWikiServices $services ): Wikimedia\Rdbms\ILoadBalancer {
528 return $services->getDBLoadBalancerFactory()->getMainLB();
531 'DBLoadBalancerFactory' =>
533 $mainConfig = $services->getMainConfig();
535 $cpStashType = $mainConfig->get( MainConfigNames::ChronologyProtectorStash );
536 if ( is_string( $cpStashType ) ) {
541 }
catch ( RecursiveServiceDependencyException $e ) {
547 $wanCache = $services->getMainWANObjectCache();
548 }
catch ( RecursiveServiceDependencyException $e ) {
552 $srvCache = $services->getLocalServerObjectCache();
559 $mainConfig->get( MainConfigNames::LBFactoryConf ),
561 $services->getConfiguredReadOnlyMode(),
565 $services->getCriticalSectionProvider()
569 $instance =
new $class( $lbConf );
580 $services->getStatsdDataFactory()
587 return $services->getService(
'_PageCommandFactory' );
595 return new EventRelayerGroup( $services->getMainConfig()->get( MainConfigNames::EventRelayerConfig ) );
600 $services->getExternalStoreFactory(),
601 LoggerFactory::getInstance(
'ExternalStore' )
606 $config = $services->getMainConfig();
607 $writeStores = $config->get( MainConfigNames::DefaultExternalStore );
610 $config->get( MainConfigNames::ExternalStores ),
611 ( $writeStores !==
false ) ? (array)$writeStores : [],
612 $services->getDBLoadBalancer()->getLocalDomainID(),
613 LoggerFactory::getInstance(
'ExternalStore' )
618 $mainConfig = $services->getMainConfig();
625 $legacyDomainId = strlen( $ld->getTablePrefix() )
626 ?
"{$ld->getDatabase()}-{$ld->getTablePrefix()}"
627 : $ld->getDatabase();
628 if ( $ld->getSchema() !==
null && $legacyDomainId !== $fallbackWikiId ) {
630 "Legacy default 'domainId' is '$legacyDomainId' but wiki ID is '$fallbackWikiId'."
634 $cache = $services->getLocalServerObjectCache();
641 [
'fallbackWikiId' => $fallbackWikiId ] ),
642 $services->getConfiguredReadOnlyMode(),
644 $services->getMainWANObjectCache(),
645 $services->getMimeAnalyzer(),
646 $services->getLockManagerGroupFactory(),
647 $services->getTempFSFileFactory(),
648 $services->getObjectFactory()
653 $nsInfo = $services->getNamespaceInfo();
655 $dbLoadBalancer = $services->isServiceDisabled(
'DBLoadBalancer' )
657 : $services->getDBLoadBalancer();
658 return new GenderCache( $nsInfo, $dbLoadBalancer, $services->get(
'_DefaultOptionsLookup' ) );
662 $mainConfig = $services->getMainConfig();
665 $mainConfig->get( MainConfigNames::TmpDirectory ),
675 GrantsInfo::CONSTRUCTOR_OPTIONS,
676 $services->getMainConfig()
683 $services->getGrantsInfo(),
684 $services->getLinkRenderer(),
685 $services->getLanguageFactory(),
686 $services->getContentLanguage()
692 new ServiceOptions( GroupPermissionsLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig() )
698 $extDeprecatedHooks = $extRegistry->getAttribute(
'DeprecatedHooks' );
703 $services->getObjectFactory()
708 $config = $services->getMainConfig();
711 $services->getHookContainer(),
712 $services->getTitleFactory(),
713 $config->get( MainConfigNames::CdnReboundPurgeDelay ),
714 $config->get( MainConfigNames::UseFileCache ),
715 $config->get( MainConfigNames::CdnMaxAge )
719 'HttpRequestFactory' =>
723 HttpRequestFactory::CONSTRUCTOR_OPTIONS,
724 $services->getMainConfig()
726 LoggerFactory::getInstance(
'http' )
731 $config = $services->getMainConfig();
733 $services->getContentLanguage(),
734 $services->getMainWANObjectCache(),
735 $services->getHookContainer(),
736 $services->getDBLoadBalancer(),
737 $config->get( MainConfigNames::InterwikiExpiry ),
738 $config->get( MainConfigNames::InterwikiCache ),
739 $config->get( MainConfigNames::InterwikiScopes ),
740 $config->get( MainConfigNames::InterwikiFallbackSite )
745 return $services->getJobQueueGroupFactory()->makeJobQueueGroup();
750 new ServiceOptions( JobQueueGroupFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
751 $services->getConfiguredReadOnlyMode(),
752 $services->getStatsdDataFactory(),
753 $services->getMainWANObjectCache(),
754 $services->getGlobalIdGenerator()
761 $services->getDBLoadBalancerFactory(),
762 $services->getJobQueueGroup(),
763 $services->getReadOnlyMode(),
764 $services->getLinkCache(),
765 $services->getStatsdDataFactory(),
766 LoggerFactory::getInstance(
'runJobs' )
775 $usePigLatinVariant = $services->getMainConfig()->get( MainConfigNames::UsePigLatinVariant );
776 $isConversionDisabled = $services->getMainConfig()->get( MainConfigNames::DisableLangConversion );
777 $isTitleConversionDisabled = $services->getMainConfig()->get( MainConfigNames::DisableTitleConversion );
779 $services->getObjectFactory(),
781 $isConversionDisabled,
782 $isTitleConversionDisabled,
783 static function () use ( $services ) {
784 return $services->getContentLanguage();
791 new ServiceOptions( LanguageFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
792 $services->getNamespaceInfo(),
793 $services->getLocalisationCache(),
794 $services->getLanguageNameUtils(),
795 $services->getLanguageFallback(),
796 $services->getLanguageConverterFactory(),
797 $services->getHookContainer(),
798 $services->getMainConfig()
804 $services->getMainConfig()->get( MainConfigNames::LanguageCode ),
805 $services->getLocalisationCache(),
806 $services->getLanguageNameUtils()
813 LanguageNameUtils::CONSTRUCTOR_OPTIONS,
814 $services->getMainConfig()
816 $services->getHookContainer()
822 $services->getLinkCache(),
823 $services->getTitleFormatter(),
824 $services->getContentLanguage(),
825 $services->getGenderCache(),
826 $services->getDBLoadBalancer(),
827 $services->getLinksMigration(),
828 LoggerFactory::getInstance(
'LinkBatch' )
834 $dbLoadBalancer = $services->isServiceDisabled(
'DBLoadBalancer' )
836 : $services->getDBLoadBalancer();
838 $services->getTitleFormatter(),
839 $services->getMainWANObjectCache(),
840 $services->getNamespaceInfo(),
843 $linkCache->setLogger( LoggerFactory::getInstance(
'LinkCache' ) );
848 return $services->getLinkRendererFactory()->create();
853 $services->getTitleFormatter(),
854 $services->getLinkCache(),
855 $services->getSpecialPageFactory(),
856 $services->getHookContainer()
862 $services->getMainConfig(),
863 $services->getLinkTargetLookup()
869 $services->getDBLoadBalancer(),
870 $services->getLocalServerObjectCache(),
871 $services->getMainWANObjectCache()
876 $conf = $services->getMainConfig()->get( MainConfigNames::LocalisationCacheConf );
878 $logger = LoggerFactory::getInstance(
'localisation' );
881 $conf, $services->getMainConfig()->get( MainConfigNames::CacheDirectory ) );
882 $logger->debug(
'LocalisationCache using store ' . get_class( $store ) );
884 return new $conf[
'class'](
891 'forceRecache' =>
false,
892 'manualRecache' =>
false,
895 $services->getMainConfig()
899 [
static function () use ( $services ) {
903 MessageBlobStore::clearGlobalCacheEntry( $services->getMainWANObjectCache() );
905 $services->getLanguageNameUtils(),
906 $services->getHookContainer()
917 $services->getMainConfig()->get( MainConfigNames::LockManagers ),
918 $services->getDBLoadBalancerFactory()
924 $services->getContentLanguage(),
925 $services->getHookContainer()
931 return $services->getConfigFactory()->makeConfig(
'main' );
935 $mainConfig = $services->getMainConfig();
937 $id = $mainConfig->
get( MainConfigNames::MainStash );
938 $params = $mainConfig->get( MainConfigNames::ObjectCaches )[$id] ??
null;
940 throw new UnexpectedValueException(
941 "\$wgObjectCaches must have \"$id\" set (via \$wgMainStash)"
945 $params[
'stats'] = $services->getStatsdDataFactory();
948 $store->getLogger()->debug(
'MainObjectStash using store {class}', [
949 'class' => get_class( $store )
956 $mainConfig = $services->getMainConfig();
958 $wanId = $mainConfig->
get( MainConfigNames::MainWANCache );
959 $wanParams = $mainConfig->get( MainConfigNames::WANObjectCaches )[$wanId] ??
null;
961 throw new UnexpectedValueException(
962 "wgWANObjectCaches must have \"$wanId\" set (via wgMainWANCache)"
966 $cacheId = $wanParams[
'cacheId'];
967 $wanClass = $wanParams[
'class'];
968 unset( $wanParams[
'cacheId'] );
969 unset( $wanParams[
'class'] );
971 $storeParams = $mainConfig->get( MainConfigNames::ObjectCaches )[$cacheId] ??
null;
972 if ( !$storeParams ) {
973 throw new UnexpectedValueException(
974 "wgObjectCaches must have \"$cacheId\" set (via wgWANObjectCaches)"
977 $storeParams[
'stats'] = $services->getStatsdDataFactory();
979 $logger = $store->getLogger();
980 $logger->debug(
'MainWANObjectCache using store {class}', [
981 'class' => get_class( $store )
984 $wanParams[
'cache'] = $store;
985 $wanParams[
'logger'] = $logger;
986 $wanParams[
'secret'] = $wanParams[
'secret'] ?? $mainConfig->get( MainConfigNames::SecretKey );
987 if ( !$GLOBALS[
'wgCommandLineMode' ] ) {
989 $wanParams[
'stats'] = $services->getStatsdDataFactory();
991 $wanParams[
'asyncHandler'] = [ DeferredUpdates::class,
'addCallableUpdate' ];
994 $instance =
new $wanClass( $wanParams );
996 '@phan-var WANObjectCache $instance';
1002 LoggerFactory::getInstance(
'MediaHandlerFactory' ),
1003 $services->getMainConfig()->get( MainConfigNames::MediaHandlers )
1008 return $services->getService(
'_PageCommandFactory' );
1012 $mainConfig = $services->getMainConfig();
1014 $srvCache = $mainConfig->get( MainConfigNames::UseLocalMessageCache )
1015 ? $services->getLocalServerObjectCache()
1018 $logger = LoggerFactory::getInstance(
'MessageCache' );
1019 $logger->debug(
'MessageCache using store {class}', [
1020 'class' => get_class( $clusterCache )
1024 $services->getMainWANObjectCache(),
1027 $services->getContentLanguage(),
1028 $services->getLanguageConverterFactory(),
1030 [
'useDB' => $mainConfig->get( MainConfigNames::UseDatabaseMessages ) ],
1031 $services->getLanguageFactory(),
1032 $services->getLocalisationCache(),
1033 $services->getLanguageNameUtils(),
1034 $services->getLanguageFallback(),
1035 $services->getHookContainer()
1044 $config = $services->getMainConfig();
1047 'target' => $config->get( MainConfigNames::MetricsTarget ),
1048 'format' => $config->get( MainConfigNames::MetricsFormat ),
1049 'prefix' => $config->get( MainConfigNames::MetricsPrefix ),
1051 LoggerFactory::getInstance(
'Metrics' )
1056 $logger = LoggerFactory::getInstance(
'Mime' );
1057 $mainConfig = $services->getMainConfig();
1058 $hookRunner =
new HookRunner( $services->getHookContainer() );
1060 'typeFile' => $mainConfig->get( MainConfigNames::MimeTypeFile ),
1061 'infoFile' => $mainConfig->get( MainConfigNames::MimeInfoFile ),
1062 'xmlTypes' => $mainConfig->get( MainConfigNames::XMLMimeTypes ),
1064 static function ( $mimeAnalyzer, &$head, &$tail,
$file, &
$mime )
1065 use ( $logger, $hookRunner ) {
1068 if ( $deja->isValid() ) {
1069 $logger->info(
"Detected $file as image/vnd.djvu\n" );
1070 $mime =
'image/vnd.djvu';
1075 $hookRunner->onMimeMagicGuessFromContent(
1078 'extCallback' =>
static function ( $mimeAnalyzer,
$ext, &
$mime ) use ( $hookRunner ) {
1080 $hookRunner->onMimeMagicImproveFromExtension( $mimeAnalyzer,
$ext,
$mime );
1082 'initCallback' =>
static function ( $mimeAnalyzer ) use ( $hookRunner ) {
1084 $hookRunner->onMimeMagicInit( $mimeAnalyzer );
1089 if ( $params[
'infoFile'] ===
'includes/mime.info' ) {
1090 $params[
'infoFile'] = MimeAnalyzer::USE_INTERNAL;
1093 if ( $params[
'typeFile'] ===
'includes/mime.types' ) {
1094 $params[
'typeFile'] = MimeAnalyzer::USE_INTERNAL;
1097 $detectorCmd = $mainConfig->get( MainConfigNames::MimeDetectorCommand );
1098 if ( $detectorCmd ) {
1099 $factory = $services->getShellCommandFactory();
1100 $params[
'detectCallback'] =
static function (
$file ) use ( $detectorCmd, $factory ) {
1101 $result = $factory->create()
1103 ->unsafeParams( $detectorCmd )
1106 return $result->getStdout();
1114 return $services->getService(
'_PageCommandFactory' );
1120 $services->getHookContainer()
1126 $services->getDBLoadBalancerFactory(),
1127 $services->getMainWANObjectCache(),
1128 LoggerFactory::getInstance(
'NameTableSqlStore' )
1132 'ObjectFactory' =>
static function (
MediaWikiServices $services ): ObjectFactory {
1133 return new ObjectFactory( $services );
1139 LoggerFactory::getInstance(
'OldRevisionImporter' ),
1140 $services->getDBLoadBalancer(),
1141 $services->getRevisionStore(),
1142 $services->getSlotRoleRegistry(),
1143 $services->getWikiPageFactory(),
1144 $services->getPageUpdaterFactory(),
1145 $services->getUserFactory()
1150 $config = $services->getMainConfig();
1154 $services->getDBLoadBalancer(),
1155 LoggerFactory::getInstance(
'StashEdit' ),
1156 $services->getStatsdDataFactory(),
1157 $services->getUserEditTracker(),
1158 $services->getUserFactory(),
1159 $services->getWikiPageFactory(),
1160 $services->getHookContainer(),
1161 defined(
'MEDIAWIKI_JOB_RUNNER' ) || $GLOBALS[
'wgCommandLineMode' ]
1162 ? PageEditStash::INITIATOR_JOB_OR_CLI
1163 : PageEditStash::INITIATOR_USER
1169 $services->getLinkBatchFactory(),
1170 $services->getDBLoadBalancer()
1175 return $services->getPageStoreFactory()->getPageStore();
1180 PageStoreFactory::CONSTRUCTOR_OPTIONS,
1181 $services->getMainConfig()
1186 $services->getDBLoadBalancerFactory(),
1187 $services->getNamespaceInfo(),
1188 $services->getTitleParser(),
1189 $services->getLinkCache(),
1190 $services->getStatsdDataFactory()
1194 'PageUpdaterFactory' =>
static function (
1198 $services->getMainObjectStash(),
1199 $services->getDBLoadBalancer(),
1201 EditResultCache::CONSTRUCTOR_OPTIONS,
1202 $services->getMainConfig()
1207 $services->getRevisionStore(),
1208 $services->getRevisionRenderer(),
1209 $services->getSlotRoleRegistry(),
1210 $services->getParserCache(),
1211 $services->getJobQueueGroup(),
1212 $services->getMessageCache(),
1213 $services->getContentLanguage(),
1214 $services->getDBLoadBalancerFactory(),
1215 $services->getContentHandlerFactory(),
1216 $services->getHookContainer(),
1218 $services->getUserNameUtils(),
1219 LoggerFactory::getInstance(
'SavePage' ),
1221 PageUpdaterFactory::CONSTRUCTOR_OPTIONS,
1222 $services->getMainConfig()
1224 $services->getUserEditTracker(),
1225 $services->getUserGroupManager(),
1226 $services->getTitleFormatter(),
1227 $services->getContentTransformer(),
1228 $services->getPageEditStash(),
1229 $services->getTalkPageNotificationManager(),
1230 $services->getMainWANObjectCache(),
1231 $services->getPermissionManager(),
1232 $services->getWikiPageFactory(),
1238 return $services->getParserFactory()->create();
1242 return $services->getParserCacheFactory()
1243 ->getParserCache( ParserCacheFactory::DEFAULT_NAME );
1247 $config = $services->getMainConfig();
1249 $wanCache = $services->getMainWANObjectCache();
1251 $options =
new ServiceOptions( ParserCacheFactory::CONSTRUCTOR_OPTIONS, $config );
1256 $services->getHookContainer(),
1257 $services->getJsonCodec(),
1258 $services->getStatsdDataFactory(),
1259 LoggerFactory::getInstance(
'ParserCache' ),
1261 $services->getTitleFactory(),
1262 $services->getWikiPageFactory()
1268 $services->getMainConfig()
1273 $services->getMagicWordFactory(),
1274 $services->getContentLanguage(),
1275 $services->getUrlUtils(),
1276 $services->getSpecialPageFactory(),
1277 $services->getLinkRendererFactory(),
1278 $services->getNamespaceInfo(),
1279 LoggerFactory::getInstance(
'Parser' ),
1280 $services->getBadFileLookup(),
1281 $services->getLanguageConverterFactory(),
1282 $services->getHookContainer(),
1283 $services->getTidy(),
1284 $services->getMainWANObjectCache(),
1285 $services->getUserOptionsLookup(),
1286 $services->getUserFactory(),
1287 $services->getTitleFormatter(),
1288 $services->getHttpRequestFactory(),
1289 $services->getTrackingCategories(),
1290 $services->getSignatureValidatorFactory(),
1291 $services->getUserNameUtils()
1297 $services->getParserCache(),
1298 $services->getParserCacheFactory()->getRevisionOutputCache(
'rcache' ),
1299 $services->getRevisionLookup(),
1300 $services->getRevisionRenderer(),
1301 $services->getStatsdDataFactory(),
1302 $services->getDBLoadBalancerFactory(),
1303 LoggerFactory::getProvider(),
1304 $services->getWikiPageFactory(),
1305 $services->getTitleFormatter()
1309 'ParsoidDataAccess' =>
static function (
MediaWikiServices $services ): DataAccess {
1310 $mainConfig = $services->getMainConfig();
1311 $parsoidSettings = $mainConfig->get( MainConfigNames::ParsoidSettings );
1312 if ( !empty( $parsoidSettings[
'debugApi'] ) ) {
1313 return ApiDataAccess::fromSettings( $parsoidSettings );
1315 return new MWDataAccess(
1316 new ServiceOptions( MWDataAccess::CONSTRUCTOR_OPTIONS, $mainConfig ),
1317 $services->getRepoGroup(),
1318 $services->getBadFileLookup(),
1319 $services->getHookContainer(),
1320 $services->getContentTransformer(),
1321 $services->getReadOnlyMode(),
1322 $services->getParserFactory()
1329 $config = $services->getMainConfig()->
get( MainConfigNames::ParsoidCacheConfig );
1330 $backend = $config[
'StashType']
1332 : $services->getMainObjectStash();
1337 'ParsoidPageConfigFactory' =>
static function (
MediaWikiServices $services ): MWPageConfigFactory {
1338 return new MWPageConfigFactory( $services->getRevisionStore(),
1339 $services->getSlotRoleRegistry() );
1342 'ParsoidSiteConfig' =>
static function (
MediaWikiServices $services ): SiteConfig {
1343 $mainConfig = $services->getMainConfig();
1344 $parsoidSettings = $mainConfig->get( MainConfigNames::ParsoidSettings );
1345 if ( !empty( $parsoidSettings[
'debugApi'] ) ) {
1346 return ApiSiteConfig::fromSettings( $parsoidSettings );
1348 return new MWSiteConfig(
1349 new ServiceOptions( MWSiteConfig::CONSTRUCTOR_OPTIONS, $mainConfig ),
1351 $services->getObjectFactory(),
1352 $services->getContentLanguage(),
1353 $services->getStatsdDataFactory(),
1354 $services->getMagicWordFactory(),
1355 $services->getNamespaceInfo(),
1356 $services->getSpecialPageFactory(),
1357 $services->getInterwikiLookup(),
1358 $services->getUserOptionsLookup(),
1359 $services->getLanguageFactory(),
1360 $services->getLanguageConverterFactory(),
1361 $services->getLanguageNameUtils(),
1364 $services->getParser(),
1370 $config = $services->getMainConfig();
1372 $config->get( MainConfigNames::PasswordConfig ),
1373 $config->get( MainConfigNames::PasswordDefault )
1381 LoggerFactory::getInstance(
'authentication' ),
1382 $services->getAuthManager(),
1383 $services->getHookContainer(),
1384 $services->getDBLoadBalancer(),
1385 $services->getUserFactory(),
1386 $services->getUserNameUtils(),
1387 $services->getUserOptionsLookup()
1391 'PerDbNameStatsdDataFactory' =>
1393 $config = $services->getMainConfig();
1394 $wiki = $config->get( MainConfigNames::DBname );
1396 $services->getStatsdDataFactory(),
1404 PermissionManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
1406 $services->getSpecialPageFactory(),
1407 $services->getNamespaceInfo(),
1408 $services->getGroupPermissionsLookup(),
1409 $services->getUserGroupManager(),
1410 $services->getBlockErrorFormatter(),
1411 $services->getHookContainer(),
1412 $services->getUserCache(),
1413 $services->getRedirectLookup(),
1414 $services->getRestrictionStore(),
1415 $services->getTitleFormatter(),
1416 $services->getTempUserConfig(),
1417 $services->getUserFactory(),
1418 $services->getActionFactory()
1425 DefaultPreferencesFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
1426 $services->getContentLanguage(),
1427 $services->getAuthManager(),
1428 $services->getLinkRendererFactory()->create(),
1429 $services->getNamespaceInfo(),
1430 $services->getPermissionManager(),
1431 $services->getLanguageConverterFactory()->getLanguageConverter(),
1432 $services->getLanguageNameUtils(),
1433 $services->getHookContainer(),
1434 $services->getUserOptionsManager(),
1435 $services->getLanguageConverterFactory(),
1436 $services->getParser(),
1437 $services->getSkinFactory(),
1438 $services->getUserGroupManager(),
1439 $services->getSignatureValidatorFactory()
1441 $factory->setLogger( LoggerFactory::getInstance(
'preferences' ) );
1447 $mainConfig = $services->getMainConfig();
1449 $mainConfig->get( MainConfigNames::CdnServers ),
1450 $mainConfig->get( MainConfigNames::CdnServersNoPurge ),
1451 $services->getHookContainer()
1457 $services->getConfiguredReadOnlyMode(),
1458 $services->getDBLoadBalancer()
1463 return $services->getRedirectStore();
1467 return new RedirectStore( $services->getWikiPageFactory() );
1471 $config = $services->getMainConfig();
1473 $config->get( MainConfigNames::LocalFileRepo ),
1474 $config->get( MainConfigNames::ForeignFileRepos ),
1475 $services->getMainWANObjectCache(),
1476 $services->getMimeAnalyzer()
1481 $config = $services->getMainConfig();
1483 $maxage = $config->get( MainConfigNames::ResourceLoaderMaxage );
1486 LoggerFactory::getInstance(
'resourceloader' ),
1487 $config->get( MainConfigNames::ResourceLoaderUseObjectCacheForDeps )
1491 'loadScript' => $config->get( MainConfigNames::LoadScript ),
1492 'maxageVersioned' => $maxage[
'versioned'] ??
null,
1493 'maxageUnversioned' => $maxage[
'unversioned'] ??
null,
1494 'useFileCache' => $config->get( MainConfigNames::UseFileCache ),
1500 $modules = $extRegistry->getAttribute(
'ResourceModules' )
1501 + $config->get( MainConfigNames::ResourceModules );
1502 $moduleSkinStyles = $extRegistry->getAttribute(
'ResourceModuleSkinStyles' )
1503 + $config->get( MainConfigNames::ResourceModuleSkinStyles );
1505 $rl->setModuleSkinStyles( $moduleSkinStyles );
1506 $rl->addSource( $config->get( MainConfigNames::ResourceLoaderSources ) );
1509 $baseDir = $config->get( MainConfigNames::BaseDirectory );
1510 $rl->register( include
"$baseDir/resources/Resources.php" );
1512 $hookRunner = new \MediaWiki\ResourceLoader\HookRunner( $services->getHookContainer() );
1513 $hookRunner->onResourceLoaderRegisterModules( $rl );
1515 $msgPosterAttrib = $extRegistry->getAttribute(
'MessagePosterModule' );
1516 $rl->register(
'mediawiki.messagePoster', [
1517 'localBasePath' => $baseDir,
1518 'debugRaw' =>
false,
1519 'scripts' => array_merge(
1521 "resources/src/mediawiki.messagePoster/factory.js",
1522 "resources/src/mediawiki.messagePoster/MessagePoster.js",
1523 "resources/src/mediawiki.messagePoster/WikitextMessagePoster.js",
1525 $msgPosterAttrib[
'scripts'] ?? []
1527 'dependencies' => array_merge(
1531 'mediawiki.ForeignApi',
1533 $msgPosterAttrib[
'dependencies'] ?? []
1535 'targets' => [
'desktop',
'mobile' ],
1538 if ( $config->get( MainConfigNames::EnableJavaScriptTest ) ===
true ) {
1539 $rl->registerTestModules();
1548 RestrictionStore::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
1550 $services->getMainWANObjectCache(),
1551 $services->getDBLoadBalancer(),
1552 $services->getLinkCache(),
1553 $services->getLinksMigration(),
1554 $services->getCommentStore(),
1555 $services->getHookContainer(),
1556 $services->getPageStore()
1562 $services->getMainObjectStash(),
1563 $services->getDBLoadBalancer(),
1565 EditResultCache::CONSTRUCTOR_OPTIONS,
1566 $services->getMainConfig()
1572 $services->getJobQueueGroup()
1577 return $services->getRevisionStore();
1581 return $services->getRevisionStore();
1586 $services->getDBLoadBalancer(),
1587 $services->getSlotRoleRegistry(),
1588 $services->getContentRenderer()
1591 $renderer->setLogger( LoggerFactory::getInstance(
'SaveParse' ) );
1596 return $services->getRevisionStoreFactory()->getRevisionStore();
1601 $services->getDBLoadBalancerFactory(),
1602 $services->getBlobStoreFactory(),
1603 $services->getNameTableStoreFactory(),
1604 $services->getSlotRoleRegistry(),
1605 $services->getMainWANObjectCache(),
1606 $services->getLocalServerObjectCache(),
1607 $services->getCommentStore(),
1608 $services->getActorMigration(),
1609 $services->getActorStoreFactory(),
1610 LoggerFactory::getInstance(
'RevisionStore' ),
1611 $services->getContentHandlerFactory(),
1612 $services->getPageStoreFactory(),
1613 $services->getTitleFactory(),
1614 $services->getHookContainer()
1619 return $services->get(
'_PageCommandFactory' );
1624 $services->getLinkRenderer(),
1625 $services->getLinkBatchFactory(),
1626 $services->getLinkCache(),
1627 $services->getRepoGroup(),
1629 $services->getContentLanguage(),
1630 $services->getTitleParser(),
1631 $services->getNamespaceInfo(),
1632 $services->getHookContainer()
1636 $services->getCommentStore()
1644 $services->getMainConfig(),
1645 $services->getContentLanguage(),
1646 $services->getHookContainer(),
1653 $services->getSearchEngineConfig(),
1654 $services->getHookContainer(),
1655 $services->getDBLoadBalancer()
1660 $urls = $services->getMainConfig()->get( MainConfigNames::ShellboxUrls );
1662 $url = $services->getMainConfig()->get( MainConfigNames::ShellboxUrl );
1663 if ( $url !==
null ) {
1664 $urls[
'default'] = $url;
1667 $services->getHttpRequestFactory(),
1669 $services->getMainConfig()->get( MainConfigNames::ShellboxSecretKey )
1674 $config = $services->getMainConfig();
1677 'time' => $config->get( MainConfigNames::MaxShellTime ),
1678 'walltime' => $config->get( MainConfigNames::MaxShellWallClockTime ),
1679 'memory' => $config->get( MainConfigNames::MaxShellMemory ),
1680 'filesize' => $config->get( MainConfigNames::MaxShellFileSize ),
1682 $cgroup = $config->get( MainConfigNames::ShellCgroup );
1683 $restrictionMethod = $config->get( MainConfigNames::ShellRestrictionMethod );
1685 $factory =
new CommandFactory( $services->getShellboxClientFactory(),
1686 $limits, $cgroup, $restrictionMethod );
1687 $factory->setLogger( LoggerFactory::getInstance(
'exec' ) );
1688 $factory->logStderr();
1696 SignatureValidator::CONSTRUCTOR_OPTIONS,
1697 $services->getMainConfig()
1700 static function () use ( $services ) {
1701 return $services->getParser();
1703 $services->getSpecialPageFactory(),
1704 $services->getTitleFactory()
1712 return $services->getSiteStore();
1716 $rawSiteStore =
new DBSiteStore( $services->getDBLoadBalancer() );
1718 $cache = $services->getLocalServerObjectCache();
1729 $services->getObjectFactory(),
1730 (array)$services->getMainConfig()->get( MainConfigNames::SkipSkins )
1733 $names = $services->getMainConfig()->get( MainConfigNames::ValidSkinNames );
1735 foreach ( $names as $name => $skin ) {
1736 if ( is_array( $skin ) ) {
1738 $displayName = $skin[
'displayname'] ?? $name;
1739 $skippable = $skin[
'skippable'] ??
null;
1741 $displayName = $skin;
1745 'class' =>
"Skin$skin"
1748 $factory->register( $name, $displayName, $spec, $skippable );
1752 $factory->register(
'fallback',
'Fallback', [
1753 'class' => SkinFallback::class,
1756 'name' =>
'fallback',
1757 'styles' => [
'mediawiki.skinning.interface' ],
1758 'templateDirectory' => __DIR__ .
'/skins/templates/fallback',
1763 $factory->register(
'apioutput',
'ApiOutput', [
1764 'class' => SkinApi::class,
1767 'name' =>
'apioutput',
1768 'styles' => [
'mediawiki.skinning.interface' ],
1769 'templateDirectory' => __DIR__ .
'/skins/templates/apioutput',
1779 $services->getSlotRoleStore()
1782 $config = $services->getMainConfig();
1783 $contentHandlerFactory = $services->getContentHandlerFactory();
1784 $hookContainer = $services->getHookContainer();
1785 $titleFactory = $services->getTitleFactory();
1786 $registry->defineRole(
1788 static function () use ( $config, $contentHandlerFactory, $hookContainer, $titleFactory ) {
1790 $config->get( MainConfigNames::NamespaceContentModels ),
1791 $contentHandlerFactory,
1802 return $services->getNameTableStoreFactory()->getSlotRoles();
1807 (array)$services->getMainConfig()->get( MainConfigNames::SpamRegex ),
1808 (array)$services->getMainConfig()->get( MainConfigNames::SummarySpamRegex )
1815 SpecialPageFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
1816 $services->getContentLanguage(),
1817 $services->getObjectFactory(),
1818 $services->getTitleFactory(),
1819 $services->getHookContainer()
1825 rtrim( $services->getMainConfig()->get( MainConfigNames::StatsdMetricPrefix ),
'.' )
1829 'TalkPageNotificationManager' =>
static function (
1834 TalkPageNotificationManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
1836 $services->getDBLoadBalancer(),
1837 $services->getReadOnlyMode(),
1838 $services->getRevisionLookup(),
1839 $services->getHookContainer(),
1840 $services->getUserFactory()
1845 return new TempFSFileFactory( $services->getMainConfig()->get( MainConfigNames::TmpDirectory ) );
1850 $services->getMainConfig()->get( MainConfigNames::AutoCreateTempUser )
1855 $accountCreationThrottle = $services->getMainConfig()->get( MainConfigNames::AccountCreationThrottle );
1857 if ( !is_array( $accountCreationThrottle ) ) {
1858 $accountCreationThrottle = [ [
1859 'count' => $accountCreationThrottle,
1865 $services->getTempUserConfig(),
1866 $services->getObjectFactory(),
1867 $services->getUserFactory(),
1868 $services->getAuthManager(),
1871 $accountCreationThrottle,
1873 'type' =>
'acctcreate',
1874 'cache' => $services->getLocalServerObjectCache()
1883 RemexDriver::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
1893 return $services->getService(
'_MediaWikiTitleCodec' );
1897 return $services->getService(
'_MediaWikiTitleCodec' );
1904 $services->getMainConfig()
1906 $services->getNamespaceInfo(),
1907 $services->getTitleParser(),
1908 LoggerFactory::getInstance(
'TrackingCategories' )
1913 return $services->getService(
'_UserBlockCommandFactory' );
1917 return $services->getService(
'_PageCommandFactory' );
1922 $services->getMainConfig()->get( MainConfigNames::EnableUploads ),
1923 LoggerFactory::getInstance(
'UploadRevisionImporter' )
1928 $config = $services->getMainConfig();
1930 UrlUtils::SERVER => $config->get( MainConfigNames::Server ),
1931 UrlUtils::CANONICAL_SERVER => $config->get( MainConfigNames::CanonicalServer ),
1932 UrlUtils::INTERNAL_SERVER => $config->get( MainConfigNames::InternalServer ),
1934 UrlUtils::HTTPS_PORT => $config->get( MainConfigNames::HttpsPort ),
1935 UrlUtils::VALID_PROTOCOLS => $config->get( MainConfigNames::UrlProtocols ),
1941 LoggerFactory::getInstance(
'UserCache' ),
1942 $services->getDBLoadBalancer(),
1943 $services->getLinkBatchFactory()
1949 $services->getActorMigration(),
1950 $services->getDBLoadBalancer(),
1951 $services->getJobQueueGroup()
1957 $services->getDBLoadBalancer(),
1958 $services->getUserNameUtils()
1963 return $services->getUserGroupManagerFactory()->getUserGroupManager();
1969 UserGroupManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
1971 $services->getConfiguredReadOnlyMode(),
1972 $services->getDBLoadBalancerFactory(),
1973 $services->getHookContainer(),
1974 $services->getUserEditTracker(),
1975 $services->getGroupPermissionsLookup(),
1976 $services->getJobQueueGroupFactory(),
1977 LoggerFactory::getInstance(
'UserGroupManager' ),
1978 $services->getTempUserConfig(),
1979 [
static function (
UserIdentity $user ) use ( $services ) {
1980 $services->getPermissionManager()->invalidateUsersRightsCache( $user );
1981 $services->getUserFactory()->newFromUserIdentity( $user )->invalidateCache();
1987 return $services->getActorStoreFactory()->getUserIdentityLookup();
1992 $services->getDBLoadBalancer(),
1993 $services->getUserNameUtils()
2001 UserNameUtils::CONSTRUCTOR_OPTIONS, $services->getMainConfig()
2003 $services->getContentLanguage(),
2004 LoggerFactory::getInstance(
'UserNameUtils' ),
2005 $services->getTitleParser(),
2006 $messageFormatterFactory->getTextFormatter(
2007 $services->getContentLanguage()->getCode()
2009 $services->getHookContainer(),
2010 $services->getTempUserConfig()
2015 return $services->getUserOptionsManager();
2020 new ServiceOptions( UserOptionsManager::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
2021 $services->
get(
'_DefaultOptionsLookup' ),
2022 $services->getLanguageConverterFactory(),
2023 $services->getDBLoadBalancer(),
2024 LoggerFactory::getInstance(
'UserOptionsManager' ),
2025 $services->getHookContainer(),
2026 $services->getUserFactory()
2030 'VirtualRESTServiceClient' =>
2032 $config = $services->getMainConfig()->get( MainConfigNames::VirtualRestConfig );
2035 $services->getHttpRequestFactory()->createMultiClient() );
2036 foreach ( $config[
'paths'] as $prefix => $serviceConfig ) {
2037 $class = $serviceConfig[
'class'];
2039 $constructArg = $serviceConfig[
'options'] ?? [];
2040 $constructArg += $config[
'global'];
2042 $vrsClient->mount( $prefix, [
'class' => $class,
'config' => $constructArg ] );
2048 'WatchedItemQueryService' =>
2051 $services->getDBLoadBalancer(),
2052 $services->getCommentStore(),
2053 $services->getWatchedItemStore(),
2054 $services->getHookContainer(),
2055 $services->getMainConfig()->get( MainConfigNames::WatchlistExpiry ),
2056 $services->getMainConfig()->get( MainConfigNames::MaxExecutionTimeForExpensiveQueries )
2063 $services->getMainConfig() ),
2064 $services->getDBLoadBalancerFactory(),
2065 $services->getJobQueueGroup(),
2066 $services->getMainObjectStash(),
2068 $services->getReadOnlyMode(),
2069 $services->getNamespaceInfo(),
2070 $services->getRevisionLookup(),
2071 $services->getLinkBatchFactory()
2073 $store->setStatsdDataFactory( $services->getStatsdDataFactory() );
2075 if ( $services->getMainConfig()->get( MainConfigNames::ReadOnlyWatchedItemStore ) ) {
2085 WatchlistManager::CONSTRUCTOR_OPTIONS,
2086 $services->getMainConfig()
2088 $services->getHookContainer(),
2089 $services->getReadOnlyMode(),
2090 $services->getRevisionLookup(),
2091 $services->getTalkPageNotificationManager(),
2092 $services->getWatchedItemStore(),
2093 $services->getUserFactory(),
2094 $services->getNamespaceInfo(),
2095 $services->getWikiPageFactory()
2101 $services->getHookContainer(),
2102 $services->getRevisionStore(),
2103 $services->getTitleParser()
2109 $services->getMainConfig(),
2110 $services->getHookContainer(),
2111 $services->getContentLanguage(),
2112 $services->getNamespaceInfo(),
2113 $services->getTitleFactory(),
2114 $services->getWikiPageFactory(),
2115 $services->getWikiRevisionUploadImporter(),
2116 $services->getPermissionManager(),
2117 $services->getContentHandlerFactory(),
2118 $services->getSlotRoleRegistry()
2124 $services->getTitleFactory(),
2125 new HookRunner( $services->getHookContainer() ),
2126 $services->getDBLoadBalancer()
2130 'WikiRevisionOldRevisionImporterNoUpdates' =>
2134 LoggerFactory::getInstance(
'OldRevisionImporter' ),
2135 $services->getDBLoadBalancer(),
2136 $services->getRevisionStore(),
2137 $services->getSlotRoleRegistry(),
2138 $services->getWikiPageFactory(),
2139 $services->getPageUpdaterFactory(),
2140 $services->getUserFactory()
2146 new ServiceOptions( DefaultOptionsLookup::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
2147 $services->getContentLanguage(),
2148 $services->getHookContainer(),
2149 $services->getNamespaceInfo()
2160 EditConstraintFactory::CONSTRUCTOR_OPTIONS,
2161 $services->getMainConfig()
2163 LoggerFactory::getProvider(),
2166 $services->getPermissionManager(),
2169 $services->getHookContainer(),
2172 $services->getReadOnlyMode(),
2175 $services->getSpamChecker()
2181 $services->getContentLanguage(),
2182 $services->getGenderCache(),
2183 $services->getMainConfig()->get( MainConfigNames::LocalInterwikis ),
2184 $services->getInterwikiLookup(),
2185 $services->getNamespaceInfo()
2191 $services->getMainConfig(),
2192 $services->getDBLoadBalancerFactory(),
2193 $services->getNamespaceInfo(),
2194 $services->getWatchedItemStore(),
2195 $services->getRepoGroup(),
2196 $services->getReadOnlyMode(),
2197 $services->getContentHandlerFactory(),
2198 $services->getRevisionStore(),
2199 $services->getSpamChecker(),
2200 $services->getTitleFormatter(),
2201 $services->getHookContainer(),
2202 $services->getWikiPageFactory(),
2203 $services->getUserFactory(),
2204 $services->getActorMigration(),
2205 $services->getActorNormalization(),
2206 $services->getTitleFactory(),
2207 $services->getUserEditTracker(),
2208 $services->getCollationFactory(),
2209 $services->getJobQueueGroup(),
2210 $services->getCommentStore(),
2211 $services->getMainObjectStash(),
2214 $services->getBacklinkCacheFactory(),
2215 LoggerFactory::getInstance(
'UndeletePage' ),
2216 $services->getPageUpdaterFactory(),
2217 $services->getMessageFormatterFactory()->getTextFormatter(
2218 $services->getContentLanguage()->getCode()
2220 $services->getArchivedRevisionLookup(),
2221 $services->getRestrictionStore()
2226 return new ParserObserver( LoggerFactory::getInstance(
'DuplicateParse' ) );
2230 return $services->getBlobStoreFactory()->newSqlBlobStore();
2235 new ServiceOptions( UserBlockCommandFactory::CONSTRUCTOR_OPTIONS, $services->getMainConfig() ),
2236 $services->getHookContainer(),
2237 $services->getBlockPermissionCheckerFactory(),
2238 $services->getBlockUtils(),
2239 $services->getDatabaseBlockStore(),
2240 $services->getBlockRestrictionStore(),
2241 $services->getUserFactory(),
2242 $services->getUserEditTracker(),
2243 LoggerFactory::getInstance(
'BlockManager' ),
2244 $services->getTitleFactory(),
2245 $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.
This is not intended to be a long-term part of MediaWiki; it will be deprecated and removed once acto...
Class representing a cache/ephemeral data store.
get( $key, $flags=0)
Get an item with the given key.
MediaWiki adaption of StatsdDataFactory that provides buffering and metric prefixing.
The CentralIdLookup service allows for connecting local users with cluster-wide IDs.
Factory class to create Config objects.
Support for detecting/validating DjVu image files and getting some basic file metadata (resolution et...
A BagOStuff object with no objects in it.
Factory class for spawning EventRelayer objects using configuration.
This is the main interface for fetching or inserting objects with ExternalStore.
Class to handle file backend registration.
const CONSTRUCTOR_OPTIONS
Caches user genders when needed to use correct namespace aliases.
Simple store for keeping values in an associative array for the current process.
Class to invalidate the CDN and HTMLFileCache entries associated with URLs/titles.
Class to handle enqueueing of background jobs.
Job queue runner utility methods.
const CONSTRUCTOR_OPTIONS
Internationalisation code See https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation for more...
Cache for article titles (prefixed DB keys) and ids linked from one source.
Class for caching the contents of localisation files, Messages*.php and *.i18n.php.
const CONSTRUCTOR_OPTIONS
static getStoreFromConf(array $conf, $fallbackCacheDir)
Return a suitable LCStore as specified by the given configuration.
static setDomainAliases(ILBFactory $lbFactory)
const APPLY_DEFAULT_CONFIG_OPTIONS
static applyDefaultConfig(array $lbConf, ServiceOptions $options, ConfiguredReadOnlyMode $readOnlyMode, BagOStuff $cpStash, BagOStuff $srvCache, WANObjectCache $wanCache, CriticalSectionProvider $csProvider)
static getLBFactoryClass(array $config)
Decide which LBFactory class to use.
static applyGlobalState(ILBFactory $lbFactory, Config $config, IBufferingStatsdDataFactory $stats)
Apply global state from the current web request or other PHP process.
A factory that stores information about MagicWords, and creates them on demand with caching.
A service to render content.
A service to transform content.
Constraints reflect possible errors that need to be checked.
Service to check if text (either content or a summary) qualifies as spam.
A class containing constants representing the names of configuration variables.
Implementation of various page action services.
Service for getting rendered output of a given page.
Service for storing and retreiving 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 instances.
Manages user talk page notifications.
Cache of messages that are defined by MediaWiki namespace pages or by hooks.
const FORMAT_PLAIN
Use message text as-is.
Implements functions related to MIME types such as detection and mapping to file extension.
This is a utility class for dealing with namespaces that encodes all the "magic" behaviors of them ba...
const CONSTRUCTOR_OPTIONS
static makeLocalServerCache()
Create a new BagOStuff instance for local-server caching.
static newFromParams(array $params, Config $conf=null)
Create a new cache object from parameters.
static getInstance( $id)
Get a cached instance of the specified type of cache object.
static getLocalClusterInstance()
Get the main cluster-local cache object.
Gives access to properties of a page.
Cache for ParserOutput objects corresponding to the latest page revisions.
PHP Parser - Processes wiki markup (which uses a more user-friendly syntax, such as "[[link]]" for ma...
const CONSTRUCTOR_OPTIONS
Factory class for creating and checking Password objects.
Helper class for the password reset functionality shared by the web UI and the API.
const CONSTRUCTOR_OPTIONS
Proxy to prefix metric keys sent to a StatsdDataFactoryInterface.
A service class for fetching the wiki's current read-only mode.
Prioritized list of file repositories.
static getMain()
Get the RequestContext object associated with the main request.
Configuration handling class for SearchEngine.
Factory class for SearchEngine.
Factory class to create Skin objects.
This class performs some operations related to tracking categories, such as creating a list of all su...
const CONSTRUCTOR_OPTIONS
Virtual HTTP service client loosely styled after a Virtual File System.
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.
const CONSTRUCTOR_OPTIONS
static getRequestId()
Get the current request ID.
Factory service for WikiImporter instances.
static getWikiIdFromDbDomain( $domain)
Get the wiki ID of a database domain.
static getCurrentWikiDbDomain()
Interface for configuration 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.
A title parser service for MediaWiki.
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
if(!is_readable( $file)) $ext