X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FServiceWiring.php;h=f97d60df02816ce60d1419fa226140e367f869f0;hb=4b9317c97a9a09ef3fe58e2013d83aeb47daf064;hp=3e3c8971d7320ecb0eeb34db2af875ae1a8341e9;hpb=30ec9d51c6c17cd47f25cc74a0517878ed18df10;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 3e3c8971d7..f97d60df02 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -45,6 +45,7 @@ use MediaWiki\MediaWikiServices; use MediaWiki\Preferences\DefaultPreferencesFactory; use MediaWiki\Shell\CommandFactory; use MediaWiki\Storage\BlobStoreFactory; +use MediaWiki\Storage\NameTableStore; use MediaWiki\Storage\RevisionStore; use MediaWiki\Storage\SqlBlobStore; use Wikimedia\ObjectFactory; @@ -60,7 +61,10 @@ return [ ); $class = MWLBFactory::getLBFactoryClass( $lbConf ); - return new $class( $lbConf ); + $instance = new $class( $lbConf ); + MWLBFactory::setSchemaAliases( $instance, $mainConfig ); + + return $instance; }, 'DBLoadBalancer' => function ( MediaWikiServices $services ) { @@ -282,8 +286,14 @@ return [ $detectorCmd = $mainConfig->get( 'MimeDetectorCommand' ); if ( $detectorCmd ) { - $params['detectCallback'] = function ( $file ) use ( $detectorCmd ) { - return wfShellExec( "$detectorCmd " . wfEscapeShellArg( $file ) ); + $factory = $services->getShellCommandFactory(); + $params['detectCallback'] = function ( $file ) use ( $detectorCmd, $factory ) { + $result = $factory->create() + // $wgMimeDetectorCommand can contain commands with parameters + ->unsafeParams( $detectorCmd ) + ->params( $file ) + ->execute(); + return $result->getStdout(); }; } @@ -539,12 +549,44 @@ return [ return $services->getBlobStoreFactory()->newSqlBlobStore(); }, + 'ContentModelStore' => function ( MediaWikiServices $services ) { + return new NameTableStore( + $services->getDBLoadBalancer(), + $services->getMainWANObjectCache(), + LoggerFactory::getInstance( 'NameTableSqlStore' ), + 'content_models', + 'model_id', + 'model_name' + /** + * No strtolower normalization is added to the service as there are examples of + * extensions that do not stick to this assumption. + * - extensions/examples/DataPages define( 'CONTENT_MODEL_XML_DATA','XML_DATA' ); + * - extensions/Scribunto define( 'CONTENT_MODEL_SCRIBUNTO', 'Scribunto' ); + */ + ); + }, + + 'SlotRoleStore' => function ( MediaWikiServices $services ) { + return new NameTableStore( + $services->getDBLoadBalancer(), + $services->getMainWANObjectCache(), + LoggerFactory::getInstance( 'NameTableSqlStore' ), + 'slot_roles', + 'role_id', + 'role_name', + 'strtolower' + ); + }, + 'PreferencesFactory' => function ( MediaWikiServices $services ) { global $wgContLang; $authManager = AuthManager::singleton(); $linkRenderer = $services->getLinkRendererFactory()->create(); $config = $services->getMainConfig(); - return new DefaultPreferencesFactory( $config, $wgContLang, $authManager, $linkRenderer ); + $factory = new DefaultPreferencesFactory( $config, $wgContLang, $authManager, $linkRenderer ); + $factory->setLogger( LoggerFactory::getInstance( 'preferences' ) ); + + return $factory; }, 'HttpRequestFactory' => function ( MediaWikiServices $services ) {