--- 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' => '<em>'. $module .'</em>', '%requirements' => '<em>'. implode("', '", $on) .'</em>')));
+        }
+      }
+      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' => '<em>'. $module .'</em>', '%requirements' => '<em>'. $requirements .'</em>')));
+      }
+    }
+  }
+  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) {
