Skip to content

Commit 2c49169

Browse files
authored
Merge pull request #5 from magefan/5202-scope-considered-during-detection
add scope detection
2 parents 7676222 + c1a5a75 commit 2c49169

File tree

2 files changed

+43
-18
lines changed

2 files changed

+43
-18
lines changed

Model/Config/Reader/Dom.php

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@ public function getClassRewriteConflicts()
2626
$type = $preference->getAttribute('type');
2727
if ($for && $type) {
2828
if (!isset($conflicts[$for])) {
29-
$conflicts[$for] = [
30-
'classes' => []
31-
];
29+
$conflicts[$for] = [];
3230
}
3331

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;
3637
}
3738
}
3839
}
@@ -41,23 +42,45 @@ public function getClassRewriteConflicts()
4142
}
4243
}
4344

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+
}
4963
}
50-
}
5164

52-
if (!$hasNoMagentoClasses) {
53-
unset($conflicts[$origClass]);
65+
if (strpos($for, 'Interface') !== false && count($classes) < 2) {
66+
unset($conflicts[$for][$scope]);
67+
}
5468
}
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+
}
5579

56-
if (strpos($origClass, 'Interface') !== false && count($item['classes']) < 2) {
57-
unset($conflicts[$origClass]);
80+
$result[$for]['classes'] = array_merge($result[$for]['classes'], $classes);
5881
}
5982
}
6083

61-
return $conflicts;
84+
return $result;
6285
}
6386
}

view/adminhtml/templates/list.phtml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
* Glory to Ukraine! Glory to the heroes!
77
*/
88
?>
9-
9+
<?php
10+
/** @var $block \Magefan\ConflictDetector\Block\Adminhtml\ConflictList */
11+
?>
1012
<?php
1113
$classRewriteConflicts = $block->getClassRewriteConflicts()
1214
?>
@@ -66,4 +68,4 @@
6668
<p>
6769
<br/><br/><br/><br/>
6870
Created by <a href="https://magefan.com" target="_blank">Magefan</a>.
69-
</p>
71+
</p>

0 commit comments

Comments
 (0)