DoctrineMongodbOdmManagerRegistryProvider   B
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 16

Importance

Changes 0
Metric Value
wmc 8
lcom 0
cbo 16
dl 0
loc 66
rs 8.4614
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
C register() 0 63 8
1
<?php
2
3
namespace Saxulum\DoctrineMongodbOdmManagerRegistry\Provider;
4
5
use Pimple\Container;
6
use Pimple\ServiceProviderInterface;
7
use Saxulum\Console\Console\ConsoleApplication;
8
use Saxulum\DoctrineMongodbOdmCommands\Command\ClearMetadataCacheDoctrineODMCommand;
9
use Saxulum\DoctrineMongodbOdmCommands\Command\CreateSchemaDoctrineODMCommand;
10
use Saxulum\DoctrineMongodbOdmCommands\Command\DropSchemaDoctrineODMCommand;
11
use Saxulum\DoctrineMongodbOdmCommands\Command\GenerateHydratorsDoctrineODMCommand;
12
use Saxulum\DoctrineMongodbOdmCommands\Command\GenerateProxiesDoctrineODMCommand;
13
use Saxulum\DoctrineMongodbOdmCommands\Command\InfoDoctrineODMCommand;
14
use Saxulum\DoctrineMongodbOdmCommands\Command\QueryDoctrineODMCommand;
15
use Saxulum\DoctrineMongodbOdmCommands\Command\UpdateSchemaDoctrineODMCommand;
16
use Saxulum\DoctrineMongodbOdmCommands\Helper\ManagerRegistryHelper;
17
use Saxulum\DoctrineMongodbOdmManagerRegistry\Doctrine\ManagerRegistry;
18
use Saxulum\DoctrineMongodbOdmManagerRegistry\Form\DoctrineMongoDBExtension;
19
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator;
20
use Symfony\Bridge\Doctrine\Validator\DoctrineInitializer;
21
22
class DoctrineMongodbOdmManagerRegistryProvider implements ServiceProviderInterface
23
{
24
    public function register(Container $container)
25
    {
26
        $container['doctrine_mongodb'] = function ($container) {
27
            return new ManagerRegistry($container);
28
        };
29
30
        if (isset($container['form.extensions'])) {
31
            $container['form.extensions'] = $container->extend('form.extensions', function ($extensions, $container) {
32
                $extensions[] = new DoctrineMongoDBExtension($container['doctrine_mongodb']);
33
34
                return $extensions;
35
            });
36
        }
37
38
        if (isset($container['validator']) &&  class_exists('Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator')) {
39
            $container['doctrine.orm.validator.unique_validator'] = function ($container) {
40
                return new UniqueEntityValidator($container['doctrine_mongodb']);
41
            };
42
43
            if (!isset($container['validator.validator_service_ids'])) {
44
                $container['validator.validator_service_ids'] = array();
45
            }
46
47
            $container['validator.validator_service_ids'] = array_merge(
48
                $container['validator.validator_service_ids'],
49
                array('doctrine_odm.mongodb.unique' => 'doctrine.orm.validator.unique_validator')
50
            );
51
52
            $container['validator.object_initializers'] = $container->extend('validator.object_initializers',
53
                function (array $objectInitializers) use ($container) {
54
                    $objectInitializers[] = new DoctrineInitializer($container['doctrine_mongodb']);
55
56
                    return $objectInitializers;
57
                }
58
            );
59
        }
60
61
        if (class_exists('Saxulum\\DoctrineOrmCommands\\Command\\CreateDatabaseDoctrineCommand')) {
62
            if (isset($container['console'])) {
63
                $container['console'] = $container->extend('console', function (ConsoleApplication $consoleApplication) use ($container) {
64
                    $helperSet = $consoleApplication->getHelperSet();
65
                    $helperSet->set(new ManagerRegistryHelper($container['doctrine_mongodb']), 'doctrine_mongodb');
66
67
                    return $consoleApplication;
68
                });
69
            }
70
71
            if (isset($container['console.commands'])) {
72
                $container['console.commands'] = $container->extend('console.commands', function ($commands) use ($container) {
73
                    $commands[] = new CreateSchemaDoctrineODMCommand;
74
                    $commands[] = new UpdateSchemaDoctrineODMCommand;
75
                    $commands[] = new DropSchemaDoctrineODMCommand;
76
                    $commands[] = new QueryDoctrineODMCommand;
77
                    $commands[] = new ClearMetadataCacheDoctrineODMCommand;
78
                    $commands[] = new GenerateHydratorsDoctrineODMCommand;
79
                    $commands[] = new GenerateProxiesDoctrineODMCommand;
80
                    $commands[] = new InfoDoctrineODMCommand;
81
82
                    return $commands;
83
                });
84
            }
85
        }
86
    }
87
}
88