@@ -26,13 +26,14 @@ public function getClassRewriteConflicts()
26
26
$ type = $ preference ->getAttribute ('type ' );
27
27
if ($ for && $ type ) {
28
28
if (!isset ($ conflicts [$ for ])) {
29
- $ conflicts [$ for ] = [
30
- 'classes ' => []
31
- ];
29
+ $ conflicts [$ for ] = [];
32
30
}
33
31
34
- if (!in_array ($ type , $ conflicts [$ for ]['classes ' ])) {
35
- $ conflicts [$ for ]['classes ' ][] = $ type ;
32
+ if (!isset ($ conflicts [$ for ][$ scope ])) {
33
+ $ conflicts [$ for ][$ scope ] = [];
34
+ }
35
+ if (!in_array ($ type , $ conflicts [$ for ][$ scope ])) {
36
+ $ conflicts [$ for ][$ scope ][] = $ type ;
36
37
}
37
38
}
38
39
}
@@ -41,23 +42,45 @@ public function getClassRewriteConflicts()
41
42
}
42
43
}
43
44
44
- foreach ($ conflicts as $ origClass => $ item ) {
45
- $ hasNoMagentoClasses = false ;
46
- foreach ($ item ['classes ' ] as $ class ) {
47
- if (strpos ($ class , 'Magento \\' ) !== 0 && strpos ($ class , '\\Magento \\' ) !== 0 ) {
48
- $ hasNoMagentoClasses = true ;
45
+ foreach ($ conflicts as $ for => $ scopeClasses ) {
46
+ foreach ($ scopeClasses as $ scope => $ classes ) {
47
+ $ hasNoMagentoClasses = false ;
48
+ foreach ($ classes as $ class ) {
49
+ if (strpos ($ class , 'Magento \\' ) !== 0 && strpos ($ class , '\\Magento \\' ) !== 0 ) {
50
+ $ hasNoMagentoClasses = true ;
51
+ }
52
+ }
53
+
54
+ if (!$ hasNoMagentoClasses ) {
55
+ unset($ conflicts [$ for ][$ scope ]);
56
+ }
57
+
58
+ if ($ scope != 'global ' ) {
59
+ $ isInGlobal = (isset ($ conflicts [$ for ]['global ' ]) && count ($ conflicts [$ for ]['global ' ]));
60
+ if (!$ isInGlobal && count ($ classes ) < 2 ) {
61
+ unset($ conflicts [$ for ][$ scope ]);
62
+ }
49
63
}
50
- }
51
64
52
- if (!$ hasNoMagentoClasses ) {
53
- unset($ conflicts [$ origClass ]);
65
+ if (strpos ($ for , 'Interface ' ) !== false && count ($ classes ) < 2 ) {
66
+ unset($ conflicts [$ for ][$ scope ]);
67
+ }
54
68
}
69
+ }
70
+
71
+ $ result = [];
72
+ foreach ($ conflicts as $ for => $ scopeClasses ) {
73
+ foreach ($ scopeClasses as $ scope => $ classes ) {
74
+ if (!isset ($ result [$ for ])) {
75
+ $ result [$ for ] = [
76
+ 'classes ' => []
77
+ ];
78
+ }
55
79
56
- if (strpos ($ origClass , 'Interface ' ) !== false && count ($ item ['classes ' ]) < 2 ) {
57
- unset($ conflicts [$ origClass ]);
80
+ $ result [$ for ]['classes ' ] = array_merge ($ result [$ for ]['classes ' ], $ classes );
58
81
}
59
82
}
60
83
61
- return $ conflicts ;
84
+ return $ result ;
62
85
}
63
86
}
0 commit comments