Issues (7)

src/Config/ConfigurationTrait.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace WebnetFr\DatabaseAnonymizer\Config;
4
5
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
6
7
/**
8
 * @author Vlad Riabchenko <[email protected]>
9
 */
10
trait ConfigurationTrait
11
{
12
    /**
13
     * @param ArrayNodeDefinition $node
14
     *
15
     * @author Vlad Riabchenko <[email protected]>
16
     */
17
    public function configureAnonymizer(ArrayNodeDefinition $node)
18
    {
19
        $node
20
            ->children()
21
                ->arrayNode('defaults')
22
                    ->scalarPrototype()->end()
23
                ->end()
0 ignored issues
show
The method end() does not exist on Symfony\Component\Config...der\NodeParentInterface. It seems like you code against a sub-type of said class. However, the method does not exist in Symfony\Component\Config...ion\Builder\TreeBuilder. Are you sure you never get one of those? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

23
                ->/** @scrutinizer ignore-call */ end()
Loading history...
24
                ->arrayNode('tables')
25
                    ->arrayPrototype()
26
                        ->children()
27
                            ->booleanNode('truncate')->defaultFalse()->end()
28
                            ->arrayNode('primary_key')
29
                                ->scalarPrototype()->end()
30
                            ->end()
31
                            ->arrayNode('fields')
32
                                ->arrayPrototype()
33
                                    ->variablePrototype()->end()
34
                                ->end()
35
                            ->end() // fields
36
                        ->end()
37
                    ->end()
38
                ->end() // tables
39
            ->end()
40
            ->beforeNormalization()
41
            // Pass default table configuration to field configuration.
42
            // defaults:
43
            //        locale: fr_FR
44
            //        seed: seed_key
45
            //    tables:
46
            //        user:
47
            //            fields:
48
            //                name:
49
            //                    generator: first_name
50
            //                    # locale "fr_FR" will be set here.
51
            //                    # seed "seed_key" will be set here.
52
            //                lastname:
53
            //                    generator: first_name
54
            //                    locale: en_EN
55
            //                    seed: lastname_seed_key
56
            //                    # locale "en_EN" overwrites default value fr_FR.
57
            //                    # seed "lastname_seed_key" overwrites default value "seed_key".
58
            ->ifTrue(static function ($v) {
59
                return \is_array($v) && \array_key_exists('defaults', $v) && \is_array($v['defaults']);
60
            })
61
            ->then(static function ($c) {
62
                if (isset($c['tables'])) {
63
                    foreach ($c['tables'] as &$tableConfig) {
64
                        if ($tableConfig['fields']) {
65
                            foreach ($tableConfig['fields'] as &$fieldConfig) {
66
                                if (isset($c['defaults'])) {
67
                                    foreach ($c['defaults'] as $defaultKey => $defaultValue) {
68
                                        if (!\array_key_exists($defaultKey, $fieldConfig)) {
69
                                            $fieldConfig[$defaultKey] = $defaultValue;
70
                                        }
71
                                    }
72
                                }
73
                            }
74
                        }
75
                    }
76
                }
77
78
                return $c;
79
            })
80
            ->end()
81
        ;
82
    }
83
}
84