get all dependencies
This commit is contained in:
@ -51,4 +51,40 @@ class ModuleShopService extends ModuleService
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function getAllDependencies(string $slug, array $depArr = []): array
|
||||
{
|
||||
$query = ModuleShop::query();
|
||||
|
||||
$query->select('ms1.*')
|
||||
->from('module_shop as ms1')
|
||||
->leftJoin('module_shop as ms2', function ($join) {
|
||||
$join->on('ms1.slug', '=', 'ms2.slug')
|
||||
->on('ms1.id', '<', 'ms2.id');
|
||||
})
|
||||
->where('ms2.slug', '=', null);
|
||||
|
||||
$query->where('ms1.slug', $slug);
|
||||
|
||||
$module = $query->first();
|
||||
|
||||
if ($module){
|
||||
if ($module->dependence !== null){
|
||||
$moduleDependencies = explode(",", $module->dependence);
|
||||
foreach ($moduleDependencies as $dependency){
|
||||
if (!in_array($dependency, $depArr)){
|
||||
$depArr[] = $dependency;
|
||||
$depArrTmp = self::getAllDependencies($dependency, $depArr);
|
||||
foreach ($depArrTmp as $item){
|
||||
if (!in_array($item, $depArr)){
|
||||
$depArr[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array_diff($depArr, [$slug]);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user