@@ -127,23 +127,34 @@ private function hasOverrides(PackageFile $parentFile, Package $package)
127
127
$ parentFile ->getPackage ()->getPath (),
128
128
$ parentFile ->getExtension ()
129
129
);
130
- $ parentFiles = $ this ->collectFileMap ($ parentFile ->getFileName (), $ map );
131
- $ currentPackageLessFiles = $ package ->getFilesByType ('less ' );
132
- $ currentPackageCssFiles = $ package ->getFilesByType ('css ' );
133
130
/** @var PackageFile[] $currentPackageFiles */
134
- $ currentPackageFiles = array_merge ($ currentPackageLessFiles , $ currentPackageCssFiles );
131
+ $ currentPackageFiles = array_merge ($ package -> getFilesByType ( ' less ' ) , $ package -> getFilesByType ( ' css ' ) );
135
132
136
133
foreach ($ currentPackageFiles as $ file ) {
137
- if (in_array ($ file ->getDeployedFileName (), $ parentFiles )) {
134
+ if ($ this -> inParentFiles ($ file ->getDeployedFileName (), $ parentFile -> getFileName (), $ map )) {
138
135
return true ;
139
136
}
140
137
}
138
+ return false ;
139
+ }
141
140
142
- $ intersections = array_intersect ($ parentFiles , array_keys ($ currentPackageFiles ));
143
- if ($ intersections ) {
144
- return true ;
141
+ /**
142
+ * @param string $fileName
143
+ * @param string $parentFile
144
+ * @param array $map
145
+ * @return bool
146
+ */
147
+ private function inParentFiles ($ fileName , $ parentFile , $ map )
148
+ {
149
+ if (isset ($ map [$ parentFile ])) {
150
+ if (in_array ($ fileName , $ map [$ parentFile ])) {
151
+ return true ;
152
+ } else {
153
+ foreach ($ map [$ parentFile ] as $ pFile ) {
154
+ return $ this ->inParentFiles ($ fileName , $ pFile , $ map );
155
+ }
156
+ }
145
157
}
146
-
147
158
return false ;
148
159
}
149
160
@@ -186,25 +197,6 @@ private function buildMap($filePath, $packagePath, $contentType)
186
197
return $ this ->map ;
187
198
}
188
199
189
- /**
190
- * Flatten map tree into simple array
191
- *
192
- * Original map file information structure in form of tree,
193
- * and to have checking of overridden files simpler we need to flatten that tree
194
- *
195
- * @param string $fileName
196
- * @param array $map
197
- * @return array
198
- */
199
- private function collectFileMap ($ fileName , array $ map )
200
- {
201
- $ result = isset ($ map [$ fileName ]) ? $ map [$ fileName ] : [];
202
- foreach ($ result as $ fName ) {
203
- $ result = array_merge ($ result , $ this ->collectFileMap ($ fName , $ map ));
204
- }
205
- return array_unique ($ result );
206
- }
207
-
208
200
/**
209
201
* Return normalized path
210
202
*
0 commit comments