|
@@ -18,6 +18,8 @@ use Symfony\Component\DependencyInjection\Reference;
|
|
|
use Symfony\Component\DependencyInjection\Definition;
|
|
|
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|
|
use Symfony\Component\Config\FileLocator;
|
|
|
+use Symfony\Component\Config\Definition\Processor;
|
|
|
+
|
|
|
use Sonata\EasyExtendsBundle\Mapper\DoctrineCollector;
|
|
|
|
|
|
/**
|
|
@@ -32,29 +34,51 @@ class SonataUserExtension extends Extension
|
|
|
* @param array $config An array of configuration settings
|
|
|
* @param ContainerBuilder $container A ContainerBuilder instance
|
|
|
*/
|
|
|
- public function load(array $config, ContainerBuilder $container)
|
|
|
+ public function load(array $configs, ContainerBuilder $container)
|
|
|
{
|
|
|
+ $processor = new Processor();
|
|
|
+ $configuration = new Configuration();
|
|
|
+ $config = $processor->processConfiguration($configuration, $configs);
|
|
|
+
|
|
|
+
|
|
|
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
|
|
$loader->load('admin_orm.xml');
|
|
|
$loader->load('form.xml');
|
|
|
|
|
|
- $this->registerDoctrineMapping($config, $container);
|
|
|
+ $this->registerDoctrineMapping($config);
|
|
|
+ $this->configureClass($config, $container);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param array $config
|
|
|
+ * @param $config
|
|
|
* @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
|
|
|
* @return void
|
|
|
*/
|
|
|
+ public function configureClass($config, ContainerBuilder $container)
|
|
|
+ {
|
|
|
+ $container->setParameter('sonata.user.admin.user.entity', $config['class']['user']);
|
|
|
+ $container->setParameter('sonata.user.admin.group.entity', $config['class']['group']);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param array $config
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
public function registerDoctrineMapping(array $config)
|
|
|
{
|
|
|
+ foreach ($config['class'] as $type => $class) {
|
|
|
+ if (!class_exists($class)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$collector = DoctrineCollector::getInstance();
|
|
|
|
|
|
- $collector->addAssociation('Application\\Sonata\\UserBundle\\Entity\\User', 'mapManyToMany', array(
|
|
|
- 'fieldName' => 'groups',
|
|
|
- 'targetEntity' => 'Application\\Sonata\\UserBundle\\Entity\\Group',
|
|
|
- 'cascade' => array( ),
|
|
|
- 'joinTable' => array(
|
|
|
+ $collector->addAssociation($config['class']['user'], 'mapManyToMany', array(
|
|
|
+ 'fieldName' => 'groups',
|
|
|
+ 'targetEntity' => $config['class']['group'],
|
|
|
+ 'cascade' => array( ),
|
|
|
+ 'joinTable' => array(
|
|
|
'name' => 'fos_user_user_group',
|
|
|
'joinColumns' => array(
|
|
|
array(
|