Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 80
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
SatagAmicronEntityExtension
0.00% covered (danger)
0.00%
0 / 80
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 1
 load
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 prepend
0.00% covered (danger)
0.00%
0 / 78
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3declare(strict_types=1);
4
5namespace Satag\AmicronEntityBundle\DependencyInjection;
6
7use Satag\AmicronEntityBundle\Doctrine\AmicronBooleanIntType;
8use Satag\AmicronEntityBundle\Doctrine\AmicronBooleanType;
9use Satag\AmicronEntityBundle\Doctrine\AmicronDecimalType;
10use Satag\AmicronEntityBundle\Doctrine\Base64Blob;
11use Satag\AmicronEntityBundle\Doctrine\Utf8String;
12use Satag\AmicronEntityBundle\Doctrine\Utf8Text;
13use Satag\AmicronEntityBundle\DQL\CastAsDate;
14use Satag\AmicronEntityBundle\DQL\CastAsDateTime;
15use Satag\AmicronEntityBundle\DQL\DateDiff;
16use Satag\AmicronEntityBundle\Entity\Benutzer;
17use Satag\DoctrineFirebirdDriver\Driver\Firebird\ConnectionWrapper;
18use Satag\DoctrineFirebirdDriver\Driver\Firebird\Driver;
19use Satag\DoctrineFirebirdDriver\ORM\Mapping\FirebirdQuoteStrategy;
20use Symfony\Component\Config\FileLocator;
21use Symfony\Component\DependencyInjection\ContainerBuilder;
22use Symfony\Component\DependencyInjection\Extension\Extension;
23use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
24use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
25
26class SatagAmicronEntityExtension extends Extension implements PrependExtensionInterface
27{
28    public function load(array $configs, ContainerBuilder $container): void
29    {
30        $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
31        $loader->load('service.xml');
32    }
33
34    public function prepend(ContainerBuilder $container): void
35    {
36        if (isset($container->getExtensions()['framework'])) {
37            $container->prependExtensionConfig('framework', [
38                'validation' => [
39                    'auto_mapping' => [
40                        'Satag\AmicronEntityBundle\Entity\\' => [],
41                    ],
42                ],
43            ]);
44        }
45
46        if (isset($container->getExtensions()['doctrine'])) {
47            $container->prependExtensionConfig('doctrine', [
48                'dbal' => [
49                    'types' => [
50                        'string' => Utf8String::class,
51                        'text' => Utf8Text::class,
52                        'utf8_text' => Utf8Text::class,
53                        'blob_base64' => Base64Blob::class,
54                        'boolean' => AmicronBooleanType::class,
55                        'amicron_boolean' => AmicronBooleanType::class,
56                        'boolean_int' => AmicronBooleanIntType::class,
57                        'amicron_boolean_int' => AmicronBooleanIntType::class,
58                        'amicron_decimal' => AmicronDecimalType::class,
59                    ],
60                    'driver_class' => Driver::class,
61                    'wrapper_class' => ConnectionWrapper::class,
62                    'charset' => 'ISO8859_1',
63                    'host' => '%env(DBHOST)%',
64                    'port' => '%env(DBPORT)%',
65                    'dbname' => '%env(DBNAME)%',
66                    'user' => '%env(DBUSER)%',
67                    'password' => '%env(DBPASSWORD)%',
68                ],
69                'orm' => [
70                    'enable_native_lazy_objects' => true,
71                    'auto_generate_proxy_classes' => false,
72                    'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware',
73                    'quote_strategy' => FirebirdQuoteStrategy::class,
74                    'controller_resolver' => [
75                        'auto_mapping' => false,
76                    ],
77                    'mappings' => [
78                        'SatagAmicronEntityBundle' => [
79                            'is_bundle' => false,
80                            'type' => 'attribute',
81                            'dir' => __DIR__ . '/../Entity',
82                            'prefix' => 'Satag\AmicronEntityBundle\Entity',
83                            'alias' => 'SatagAmicronEntityBundle',
84                        ],
85                    ],
86                    'dql' => [
87                        'string_functions' => [
88                            'CAST_AS_DATE' => CastAsDate::class,
89                            'CAST_AS_DATETIME' => CastAsDateTime::class,
90                        ],
91                        'numeric_functions' => [
92                            'DATEDIFF' => DateDiff::class,
93                        ],
94                    ],
95                ],
96            ]);
97        }
98
99        if (isset($container->getExtensions()['security'])) {
100            $container->prependExtensionConfig('security', [
101                'password_hashers' => [
102                    Benutzer::class => [
103                        'algorithm' => 'sha256',
104                        'hash_algorithm' => 'sha256',
105                        'encode_as_base64' => false,
106                        'iterations' => 1,
107                    ],
108                ],
109                'providers' => [
110                    'satag_amicron_entity_user_provider' => [
111                        'entity' => [
112                            'class' => Benutzer::class,
113                            'property' => 'kuerzel',
114                        ],
115                    ],
116                ],
117            ]);
118        }
119    }
120}