@@ -66,14 +66,38 @@ public function __construct(Report $report)
66
66
$ this ->report = $ report ;
67
67
}
68
68
69
- private function reportAddedModuleConfig (array $ moduleConfig ): array
69
+ /**
70
+ * Process a new configuration file
71
+ *
72
+ * @param array $moduleConfig
73
+ * @return array
74
+ */
75
+ private function addedModuleConfig (array $ moduleConfig ): array
70
76
{
71
- return [];
77
+ $ changes = [];
78
+ foreach ($ moduleConfig as $ moduleName => $ records ) {
79
+ foreach ($ records as $ record ) {
80
+ $ changes [] = $ this ->addedRecord ($ moduleName , $ record ['name ' ]);
81
+ }
82
+ }
83
+ return $ changes ;
72
84
}
73
85
86
+ /**
87
+ * Process removed configuration file
88
+ *
89
+ * @param array $moduleConfig
90
+ * @return array
91
+ */
74
92
private function removedModuleConfig (array $ moduleConfig ): array
75
93
{
76
- return [];
94
+ $ changes = [];
95
+ foreach ($ moduleConfig as $ moduleName => $ records ) {
96
+ foreach ($ records as $ record ) {
97
+ $ changes [] = $ this ->removedRecord ($ moduleName , $ record ['name ' ]);
98
+ }
99
+ }
100
+ return $ changes ;
77
101
}
78
102
79
103
/**
@@ -113,6 +137,8 @@ private function removedRecord(string $moduleName, string $recordName): array
113
137
}
114
138
115
139
/**
140
+ * Register removed field
141
+ *
116
142
* @param string $moduleName
117
143
* @param string $recordName
118
144
* @param string $fieldName
@@ -135,6 +161,8 @@ private function removedField(string $moduleName, string $recordName, string $fi
135
161
}
136
162
137
163
/**
164
+ * Register a new field
165
+ *
138
166
* @param string $moduleName
139
167
* @param string $recordName
140
168
* @param string $fieldName
@@ -157,6 +185,8 @@ private function addedField(string $moduleName, string $recordName, string $fiel
157
185
}
158
186
159
187
/**
188
+ * Register field change
189
+ *
160
190
* @param string $moduleName
161
191
* @param string $recordName
162
192
* @param string $fieldName
@@ -197,7 +227,7 @@ private function analyzeRecord(string $moduleName, $beforeRecord, $afterRecord):
197
227
if ($ beforeRecord ['field ' ][$ fieldName ]['type ' ] != $ afterRecord ['field ' ][$ fieldName ]['type ' ]
198
228
|| $ beforeRecord ['field ' ][$ fieldName ]['repeated ' ] != $ afterRecord ['field ' ][$ fieldName ]['repeated ' ]
199
229
) {
200
- $ this ->changedField ($ moduleName , $ beforeRecord ['name ' ], $ fieldName );
230
+ $ changes [] = $ this ->changedField ($ moduleName , $ beforeRecord ['name ' ], $ fieldName );
201
231
}
202
232
}
203
233
$ diff = array_merge (
@@ -236,10 +266,13 @@ private function analyzeModuleConfig(string $moduleName, array $beforeModuleConf
236
266
array_keys ($ afterModuleConfig )
237
267
);
238
268
foreach ($ commonRecords as $ recordName ) {
239
- $ changes += $ this ->analyzeRecord (
240
- $ moduleName ,
241
- $ beforeModuleConfig [$ recordName ],
242
- $ afterModuleConfig [$ recordName ]
269
+ $ changes = array_merge (
270
+ $ changes ,
271
+ $ this ->analyzeRecord (
272
+ $ moduleName ,
273
+ $ beforeModuleConfig [$ recordName ],
274
+ $ afterModuleConfig [$ recordName ]
275
+ )
243
276
);
244
277
}
245
278
$ diff = array_merge (
@@ -298,12 +331,47 @@ public function analyze($registryBefore, $registryAfter)
298
331
array_keys ($ registryAfter ->data ['etSchema ' ])
299
332
);
300
333
foreach ($ commonModules as $ moduleName ) {
301
- $ changes += $ this ->analyzeModuleConfig (
302
- $ moduleName ,
303
- $ registryBefore ->data ['etSchema ' ][$ moduleName ],
304
- $ registryAfter ->data ['etSchema ' ][$ moduleName ]
334
+ $ changes = array_merge (
335
+ $ changes ,
336
+ $ this ->analyzeModuleConfig (
337
+ $ moduleName ,
338
+ $ registryBefore ->data ['etSchema ' ][$ moduleName ],
339
+ $ registryAfter ->data ['etSchema ' ][$ moduleName ]
340
+ )
305
341
);
306
342
}
343
+
344
+ $ changes = array_merge (
345
+ $ changes ,
346
+ $ this ->removedModuleConfig (
347
+ array_intersect_key (
348
+ $ registryBefore ->data ['etSchema ' ],
349
+ array_flip (
350
+ array_diff (
351
+ array_keys ($ registryBefore ->data ['etSchema ' ]),
352
+ array_keys ($ registryAfter ->data ['etSchema ' ])
353
+ )
354
+ )
355
+ )
356
+ )
357
+ );
358
+
359
+ $ changes = array_merge (
360
+ $ changes ,
361
+ $ this ->addedModuleConfig (
362
+ array_intersect_key (
363
+ $ registryAfter ->data ['etSchema ' ],
364
+ array_flip (
365
+ array_diff (
366
+ array_keys ($ registryAfter ->data ['etSchema ' ]),
367
+ array_keys ($ registryBefore ->data ['etSchema ' ])
368
+ )
369
+ )
370
+ )
371
+ )
372
+ );
373
+
374
+
307
375
$ this ->reportChanges ($ changes );
308
376
return $ this ->report ;
309
377
}
0 commit comments