--- system.module?rev=1.202 2005-03-25 23:48:35.000000000 +0100 +++ system.module 2005-03-26 00:15:25.000000000 +0100 @@ -499,11 +499,45 @@ function system_module_listing() { return $output; } +function system_module_dependencies(&$edit) { + $more = FALSE; + foreach ($edit['status'] as $module => $status) { + if ($status) { + drupal_load('module', $module); + $requirements = module_invoke($module, 'install', 'depends'); + if (is_array($requirements)) { + $on = array(); + foreach ($requirements as $requirement) { + if (!$edit['status'][$requirement]) { + $edit['status'][$requirement] = 1; + $on[] = $requirement; + } + } + if (!empty($on)) { + $more = TRUE; + drupal_set_message(t("Because %module depends on functionality offered by %requirements these modules are also enabled to omit possible problems.", array ('%module' => ''. $module .'', '%requirements' => ''. implode("', '", $on) .''))); + } + } + elseif (!empty($requirements) && !$edit['status'][$requirements]) { + $edit['status'][$requirements] = 1; + $more = TRUE; + drupal_set_message(t("Because %module depends on functionality offered by %requirements, this module is also enabled to omit possible problems.", array ('%module' => ''. $module .'', '%requirements' => ''. $requirements .''))); + } + } + } + if ($more) { + system_module_dependencies($edit); + } +} + function system_listing_save($edit = array()) { $op = $_POST['op']; $edit = $_POST['edit']; if ($op == t('Save configuration')) { + if ($edit['type'] == 'module') { + system_module_dependencies($edit); + } db_query("UPDATE {system} SET status = 0 WHERE type = '%s'", $edit['type']); foreach ($edit['status'] as $name => $status) { // Make certain that the default theme is enabled to avoid user error --- forum.module?rev=1.239 2005-03-25 23:49:49.000000000 +0100 +++ forum.module 2005-03-26 00:15:46.000000000 +0100 @@ -32,6 +32,14 @@ function forum_node_name($node) { } /** + * Implementation of hook_install(). + */ +function forum_install($key) { + $info['depends'] = array('comment', 'node'); + return $info[$key]; +} + +/** * Implementation of hook_access(). */ function forum_access($op, $node) {