/**
  * Loads and processes configuration to configure the Container.
  *
  * @throws InvalidArgumentException
  * @param array $configs
  * @param ContainerBuilder $container
  * @return void
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $processor = new Processor();
     $configuration = new Configuration();
     $config = $processor->process($configuration->getConfigTree(), $configs);
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     if (!in_array(strtolower($config['db_driver']), array('mongodb', 'orm'))) {
         throw new \InvalidArgumentException(sprintf('Invalid db driver "%s".', $config['db_driver']));
     }
     $loader->load(sprintf('%s.xml', $config['db_driver']));
     foreach (array('blamer', 'form', 'creator', 'spam_detection', 'twig', 'sorting') as $basename) {
         $loader->load(sprintf('%s.xml', $basename));
     }
     // only load acl services if acl is enabled for the project
     if (array_key_exists('acl', $config)) {
         $this->loadAcl($container, $config);
     }
     $container->setParameter('fos_comment.template.engine', $config['template']['engine']);
     $container->setParameter('fos_comment.model.comment.class', $config['class']['model']['comment']);
     $container->setParameter('fos_comment.model.thread.class', $config['class']['model']['thread']);
     if (array_key_exists('vote', $config['class']['model'])) {
         $container->setParameter('fos_comment.model.vote.class', $config['class']['model']['vote']);
     }
     $container->setParameter('fos_comment.model_manager_name', $config['model_manager_name']);
     // handle the MongoDB document manager name in a specific way as it does not have a registry to make it easy
     // TODO: change it if https://github.com/symfony/DoctrineMongoDBBundle/pull/31 is merged
     if ('mongodb' === $config['db_driver']) {
         if (null === $config['model_manager_name']) {
             $container->setAlias('fos_comment.document_manager', new Alias('doctrine.odm.mongodb.document_manager', false));
         } else {
             $container->setAlias('fos_comment.document_manager', new Alias(sprintf('doctrine.odm.%s_mongodb.document_manager', $config['model_manager_name']), false));
         }
     }
     $container->setParameter('fos_comment.form.comment.type', $config['form']['comment']['type']);
     $container->setParameter('fos_comment.form.comment.name', $config['form']['comment']['name']);
     $container->setParameter('fos_comment.sorting_factory.default_sorter', $config['service']['sorting']['default']);
     $container->setAlias('fos_comment.form_factory.comment', $config['service']['form_factory']['comment']);
     $container->setAlias('fos_comment.creator.thread', $config['service']['creator']['thread']);
     $container->setAlias('fos_comment.creator.comment', $config['service']['creator']['comment']);
     $container->setAlias('fos_comment.creator.vote', $config['service']['creator']['vote']);
     $container->setAlias('fos_comment.blamer.comment', $config['service']['blamer']['comment']);
     $container->setAlias('fos_comment.blamer.vote', $config['service']['blamer']['vote']);
     $container->setAlias('fos_comment.spam_detection.comment', $config['service']['spam_detection']['comment']);
     $container->setAlias('fos_comment.manager.thread', $config['service']['manager']['thread']);
     $container->setAlias('fos_comment.manager.comment', $config['service']['manager']['comment']);
     $container->setAlias('fos_comment.manager.vote', $config['service']['manager']['vote']);
 }
 /**
  * Loads and processes configuration to configure the Container.
  *
  * @throws InvalidArgumentException
  * @param array $configs
  * @param ContainerBuilder $container
  * @return void
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $processor = new Processor();
     $configuration = new Configuration();
     $config = $processor->process($configuration->getConfigTree(), $configs);
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     if (!in_array(strtolower($config['db_driver']), array('mongodb', 'orm'))) {
         throw new \InvalidArgumentException(sprintf('Invalid db driver "%s".', $config['db_driver']));
     }
     $loader->load(sprintf('%s.xml', $config['db_driver']));
     foreach (array('blamer', 'form', 'creator', 'spam_detection', 'twig', 'sorting') as $basename) {
         $loader->load(sprintf('%s.xml', $basename));
     }
     // only load acl services if acl is enabled for the project
     if (array_key_exists('acl', $config)) {
         $this->loadAcl($container, $config);
     }
     $container->setParameter('fos_comment.model.comment.class', $config['class']['model']['comment']);
     $container->setParameter('fos_comment.model.thread.class', $config['class']['model']['thread']);
     if (array_key_exists('vote', $config['class']['model'])) {
         $container->setParameter('fos_comment.model.vote.class', $config['class']['model']['vote']);
     }
     $container->setParameter('fos_comment.model_manager_name', $config['model_manager_name']);
     $container->setParameter('fos_comment.form.comment.type', $config['form']['comment']['type']);
     $container->setParameter('fos_comment.form.comment.name', $config['form']['comment']['name']);
     $container->setParameter('fos_comment.sorting_factory.default_sorter', $config['service']['sorting']['default']);
     $container->setAlias('fos_comment.form_factory.comment', $config['service']['form_factory']['comment']);
     $container->setAlias('fos_comment.creator.thread', $config['service']['creator']['thread']);
     $container->setAlias('fos_comment.creator.comment', $config['service']['creator']['comment']);
     $container->setAlias('fos_comment.creator.vote', $config['service']['creator']['vote']);
     $container->setAlias('fos_comment.blamer.comment', $config['service']['blamer']['comment']);
     $container->setAlias('fos_comment.blamer.vote', $config['service']['blamer']['vote']);
     $container->setAlias('fos_comment.spam_detection.comment', $config['service']['spam_detection']['comment']);
     $container->setAlias('fos_comment.manager.thread', $config['service']['manager']['thread']);
     $container->setAlias('fos_comment.manager.comment', $config['service']['manager']['comment']);
     $container->setAlias('fos_comment.manager.vote', $config['service']['manager']['vote']);
 }