--- modules/system/system.module 2008-08-14 01:59:09.000000000 +0200 +++ modules/system/system.module 2008-08-28 14:59:48.000000000 +0200 @@ -1429,6 +1429,22 @@ } } +function system_module_get_module_recursive_dependencies($modules, $name) +{ + $dependencies = array(); + if(isset($modules[$name])) { + $module = $modules[$name]; + if(!$module->status && isset($module->info['dependencies']) && is_array($module->info['dependencies'])) { + foreach($module->info['dependencies'] as $dependency) { + $dependencies[] = $dependency; + $dependencies = array_merge($dependencies, + system_module_get_module_recursive_dependencies($modules, $dependency)); + } + } + } + return $dependencies; +} + function system_module_build_dependencies($modules, $form_values) { static $dependencies; @@ -1443,6 +1459,9 @@ $dependencies[$name] = array(); } $dependencies[$name][] = $dependency; + $dependencies[$name] = array_unique( + array_merge($dependencies[$name], + system_module_get_module_recursive_dependencies($modules, $name))); } } }