@@ -24,7 +24,7 @@ class VichUploaderExtension extends Extension
2424 protected $ tagMap = array (
2525 'orm ' => 'doctrine.event_subscriber ' ,
2626 'mongodb ' => 'doctrine_mongodb.odm.event_subscriber ' ,
27- 'phpcr ' => 'doctrine_phpcr.event_subscriber '
27+ 'phpcr ' => 'doctrine_phpcr.event_subscriber ' ,
2828 );
2929
3030 /**
@@ -153,26 +153,24 @@ protected function fixDbDriverConfig(array $config)
153153
154154 protected function registerListeners (ContainerBuilder $ container , array $ config )
155155 {
156- $ servicesMap = array (
157- 'inject_on_load ' => array ('name ' => 'inject ' , 'priority ' => 0 ),
158- 'delete_on_update ' => array ('name ' => 'clean ' , 'priority ' => 50 ),
159- 'delete_on_remove ' => array ('name ' => 'remove ' , 'priority ' => 0 )
156+ $ dbDrivers = array ();
157+ foreach ($ config ['mappings ' ] as $ mapping ) {
158+ $ dbDrivers [$ mapping ['db_driver ' ]] = true ;
159+ }
160+ // register propel via compiler pass
161+ unset($ dbDrivers ['propel ' ]);
162+
163+ $ serviceTypes = array (
164+ 'upload ' => 0 ,
165+ 'inject ' => 0 ,
166+ 'clean ' => 50 ,
167+ 'remove ' => 0 ,
160168 );
161169
162- foreach ($ config ['mappings ' ] as $ name => $ mapping ) {
163- $ driver = $ mapping ['db_driver ' ];
164-
165- // create optionnal listeners
166- foreach ($ servicesMap as $ configOption => $ service ) {
167- if (!$ mapping [$ configOption ]) {
168- continue ;
169- }
170-
171- $ this ->createListener ($ container , $ name , $ service ['name ' ], $ driver , $ service ['priority ' ]);
170+ foreach (array_keys ($ dbDrivers ) as $ driver ) {
171+ foreach ($ serviceTypes as $ serviceType => $ priority ) {
172+ $ this ->createListener ($ container , $ serviceType , $ driver , $ priority );
172173 }
173-
174- // the upload listener is mandatory
175- $ this ->createListener ($ container , $ name , 'upload ' , $ driver );
176174 }
177175 }
178176
@@ -199,16 +197,12 @@ protected function createNamerService(ContainerBuilder $container, $mappingName,
199197 return $ mapping ;
200198 }
201199
202- protected function createListener (ContainerBuilder $ container , $ name , $ type , $ driver , $ priority = 0 )
200+ protected function createListener (ContainerBuilder $ container , $ type , $ driver , $ priority = 0 )
203201 {
204202 $ definition = $ container
205- ->setDefinition (sprintf ('vich_uploader.listener.%s.%s ' , $ type , $ name ), new DefinitionDecorator (sprintf ('vich_uploader.listener.%s.%s ' , $ type , $ driver )))
206- ->replaceArgument (0 , $ name )
203+ ->getDefinition (sprintf ('vich_uploader.listener.%s.%s ' , $ type , $ driver ))
207204 ->replaceArgument (1 , new Reference ('vich_uploader.adapter. ' .$ driver ));
208205
209- // propel does not require tags to work
210- if (isset ($ this ->tagMap [$ driver ])) {
211- $ definition ->addTag ($ this ->tagMap [$ driver ], array ('priority ' => $ priority ));
212- }
206+ $ definition ->addTag ($ this ->tagMap [$ driver ], array ('priority ' => $ priority ));
213207 }
214208}
0 commit comments