1 | <?php |
||
2 | |||
3 | namespace Dtc\QueueBundle\DependencyInjection; |
||
4 | |||
5 | use Symfony\Component\Config\Definition\Builder\TreeBuilder; |
||
0 ignored issues
–
show
|
|||
6 | |||
7 | trait RedisConfiguration |
||
8 | { |
||
9 | 10 | protected function addPredis() |
|
10 | { |
||
11 | 10 | $treeBuilder = new TreeBuilder('predis'); |
|
12 | |||
13 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
14 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
15 | } else { |
||
16 | // BC layer for symfony/config 4.1 and older |
||
17 | $rootNode = $treeBuilder->root('predis'); |
||
18 | } |
||
19 | |||
20 | $rootNode |
||
21 | 10 | ->children() |
|
22 | 10 | ->scalarNode('dsn')->defaultNull()->end() |
|
23 | 10 | ->append($this->addPredisArgs()) |
|
24 | 10 | ->end() |
|
25 | 10 | ->validate()->ifTrue(function ($node) { |
|
26 | 1 | if (isset($node['dsn']) && (isset($node['connection_parameters']['host']) || isset($node['connection_parameters']['port']))) { |
|
27 | return true; |
||
28 | } |
||
29 | |||
30 | 1 | return false; |
|
31 | 10 | })->thenInvalid('if dsn is set, do not use connection_parameters for predis (and vice-versa)')->end(); |
|
32 | |||
33 | 10 | return $rootNode; |
|
34 | } |
||
35 | |||
36 | 4 | protected function checkPredis(array $node) |
|
37 | { |
||
38 | 4 | if ((isset($node['predis']['dsn']) || isset($node['predis']['connection_parameters']['host'])) && |
|
39 | 4 | (isset($node['snc_redis']['type']) || isset($node['phpredis']['host']))) { |
|
40 | return true; |
||
41 | } |
||
42 | |||
43 | 4 | return false; |
|
44 | } |
||
45 | |||
46 | 4 | protected function checkSncPhpRedis(array $node) |
|
47 | { |
||
48 | 4 | if (isset($node['snc_redis']['type']) && |
|
49 | 4 | isset($node['phpredis']['host'])) { |
|
50 | return true; |
||
51 | } |
||
52 | |||
53 | 4 | return false; |
|
54 | } |
||
55 | |||
56 | 10 | protected function addRedis() |
|
57 | { |
||
58 | 10 | $treeBuilder = new TreeBuilder('redis'); |
|
59 | |||
60 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
61 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
62 | } else { |
||
63 | // BC layer for symfony/config 4.1 and older |
||
64 | $rootNode = $treeBuilder->root('redis'); |
||
65 | } |
||
66 | |||
67 | $rootNode |
||
68 | 10 | ->addDefaultsIfNotSet() |
|
69 | 10 | ->children() |
|
70 | 10 | ->scalarNode('prefix')->defaultValue('dtc_queue_')->end() |
|
71 | 10 | ->append($this->addSncRedis()) |
|
72 | 10 | ->append($this->addPredis()) |
|
73 | 10 | ->append($this->addPhpRedisArgs()) |
|
74 | 10 | ->end() |
|
75 | 10 | ->validate()->ifTrue(function ($node) { |
|
76 | 4 | if ($this->checkPredis($node)) { |
|
77 | return true; |
||
78 | } |
||
79 | 4 | if ($this->checkSncPhpRedis($node)) { |
|
80 | return true; |
||
81 | } |
||
82 | |||
83 | 4 | return false; |
|
84 | 10 | })->thenInvalid('only one of [snc_redis | predis | phpredis] should be set')->end(); |
|
85 | |||
86 | 10 | return $rootNode; |
|
87 | } |
||
88 | |||
89 | 10 | protected function addPhpRedisArgs() |
|
90 | { |
||
91 | 10 | $treeBuilder = new TreeBuilder('phpredis'); |
|
92 | |||
93 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
94 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
95 | } else { |
||
96 | // BC layer for symfony/config 4.1 and older |
||
97 | $rootNode = $treeBuilder->root('phpredis'); |
||
98 | } |
||
99 | |||
100 | $rootNode |
||
101 | 10 | ->addDefaultsIfNotSet() |
|
102 | 10 | ->children() |
|
103 | 10 | ->scalarNode('host')->end() |
|
104 | 10 | ->integerNode('port')->defaultValue(6379)->end() |
|
105 | 10 | ->floatNode('timeout')->defaultValue(0)->end() |
|
106 | 10 | ->integerNode('retry_interval')->defaultNull()->end() |
|
107 | 10 | ->floatNode('read_timeout')->defaultValue(0)->end() |
|
108 | 10 | ->scalarNode('auth')->end() |
|
109 | 10 | ->end() |
|
110 | 10 | ->validate()->ifTrue(function ($node) { |
|
111 | 2 | if (!empty($node) && !isset($node['host'])) { |
|
112 | return true; |
||
113 | } |
||
114 | |||
115 | 2 | return false; |
|
116 | 10 | })->thenInvalid('phpredis host should be set')->end(); |
|
117 | |||
118 | 10 | return $rootNode; |
|
119 | } |
||
120 | |||
121 | 10 | protected function addPredisArgs() |
|
122 | { |
||
123 | 10 | $treeBuilder = new TreeBuilder('connection_parameters'); |
|
124 | |||
125 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
126 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
127 | } else { |
||
128 | // BC layer for symfony/config 4.1 and older |
||
129 | $rootNode = $treeBuilder->root('connection_parameters'); |
||
130 | } |
||
131 | |||
132 | $rootNode |
||
133 | 10 | ->addDefaultsIfNotSet() |
|
134 | 10 | ->children() |
|
135 | 10 | ->scalarNode('scheme')->defaultValue('tcp')->end() |
|
136 | 10 | ->scalarNode('host')->defaultNull()->end() |
|
137 | 10 | ->integerNode('port')->defaultNull()->end() |
|
138 | 10 | ->scalarNode('path')->defaultNull()->end() |
|
139 | 10 | ->scalarNode('database')->defaultNull()->end() |
|
140 | 10 | ->scalarNode('password')->defaultNull()->end() |
|
141 | 10 | ->booleanNode('async')->defaultFalse()->end() |
|
142 | 10 | ->booleanNode('persistent')->defaultFalse()->end() |
|
143 | 10 | ->floatNode('timeout')->defaultValue(5.0)->end() |
|
144 | 10 | ->floatNode('read_write_timeout')->defaultNull()->end() |
|
145 | 10 | ->scalarNode('alias')->defaultNull()->end() |
|
146 | 10 | ->integerNode('weight')->defaultNull()->end() |
|
147 | 10 | ->booleanNode('iterable_multibulk')->defaultFalse()->end() |
|
148 | 10 | ->booleanNode('throw_errors')->defaultTrue()->end() |
|
149 | 10 | ->end() |
|
150 | 10 | ->validate()->ifTrue(function ($node) { |
|
151 | 1 | if (isset($node['host']) && !isset($node['port'])) { |
|
152 | return true; |
||
153 | } |
||
154 | 1 | if (isset($node['port']) && !isset($node['host'])) { |
|
155 | return true; |
||
156 | } |
||
157 | |||
158 | 1 | return false; |
|
159 | 10 | })->thenInvalid('predis connection_parameters host and port should both be set')->end(); |
|
160 | |||
161 | 10 | return $rootNode; |
|
162 | } |
||
163 | |||
164 | 10 | protected function addSncRedis() |
|
165 | { |
||
166 | 10 | $treeBuilder = new TreeBuilder('snc_redis'); |
|
167 | |||
168 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
169 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
170 | } else { |
||
171 | // BC layer for symfony/config 4.1 and older |
||
172 | $rootNode = $treeBuilder->root('snc_redis'); |
||
173 | } |
||
174 | |||
175 | $rootNode |
||
176 | 10 | ->children() |
|
177 | 10 | ->enumNode('type') |
|
178 | 10 | ->values(['predis', 'phpredis']) |
|
179 | 10 | ->defaultNull()->end() |
|
180 | 10 | ->scalarNode('alias') |
|
181 | 10 | ->defaultNull()->end() |
|
182 | 10 | ->end() |
|
183 | 10 | ->validate()->ifTrue(function ($node) { |
|
184 | 1 | if (isset($node['type']) && !isset($node['alias'])) { |
|
185 | 1 | return true; |
|
186 | } |
||
187 | 1 | if (isset($node['alias']) && !isset($node['type'])) { |
|
188 | 1 | return true; |
|
189 | } |
||
190 | |||
191 | 1 | return false; |
|
192 | 10 | })->thenInvalid('if alias or type is set, then both must be set')->end(); |
|
193 | |||
194 | 10 | return $rootNode; |
|
195 | } |
||
196 | } |
||
197 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths