/**
* @param ContainerBuilder $container
*
* @return void
*/
public function prepend(ContainerBuilder $container)
{
// Build fos_elastica config for each widget
$elasticaConfig = [];
$kernel = new \AppKernel('prod', false);
$yamlParser = new Yaml();
foreach ($kernel->registerBundles() as $bundle) {
/* @var Bundle $bundle */
$path = $bundle->getPath();
//If bundle is a widget
if (0 === strpos($bundle->getNamespace(), 'Victoire\\Widget\\')) {
//find for a fos_elastica.yml config file
$widgetConfig = $yamlParser->parse($path . '/Resources/config/config.yml');
if (is_array($widgetConfig)) {
foreach ($widgetConfig['victoire_core']['widgets'] as $_widgetConfig) {
if (array_key_exists('fos_elastica', $widgetConfig)) {
$_config = ['indexes' => ['widgets' => ['types' => [$_widgetConfig['name'] => ['serializer' => ['groups' => ['search']], 'mappings' => [], 'persistence' => ['driver' => 'orm', 'model' => $_widgetConfig['class'], 'provider' => [], 'listener' => [], 'finder' => []]]]]]];
$_config = array_merge_recursive($widgetConfig['fos_elastica'], $_config);
$elasticaConfig = array_merge_recursive($elasticaConfig, $_config);
}
}
}
}
}
foreach ($container->getExtensions() as $name => $extension) {
switch ($name) {
case 'fos_elastica':
$container->prependExtensionConfig($name, $elasticaConfig);
break;
}
}
}