Index: modules/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum.module,v
retrieving revision 1.239
diff -U3 -r1.239 forum.module
--- modules/forum.module 23 Mar 2005 21:53:10 -0000 1.239
+++ modules/forum.module 26 Mar 2005 03:09:09 -0000
@@ -32,6 +32,14 @@
}
/**
+ * Implementation of hook_info().
+ */
+function forum_info($key) {
+ $info['depends'] = array('comment', 'node');
+ return $info[$key];
+}
+
+/**
* Implementation of hook_access().
*/
function forum_access($op, $node) {
Index: modules/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system.module,v
retrieving revision 1.202
diff -U3 -r1.202 system.module
--- modules/system.module 23 Mar 2005 20:26:21 -0000 1.202
+++ modules/system.module 26 Mar 2005 03:09:10 -0000
@@ -499,11 +499,46 @@
return $output;
}
+/**
+ * Resolve dependencies between modules.
+ */
+function system_module_dependencies(&$edit) {
+ $new_module = FALSE;
+ foreach ($edit['status'] as $module => $status) {
+ if ($status) {
+ drupal_load('module', $module);
+ $enabled = array();
+ foreach ((array) module_invoke($module, 'info', 'depends') as $required) {
+ if (!$edit['status'][$required]) {
+ $edit['status'][$required] = 1;
+ $enabled[] = $required;
+ }
+ }
+ if (!empty($enabled)) {
+ $new_module = TRUE;
+ if (count($enabled) == 1) {
+ drupal_set_message(t('%enabled module has been enabled for you because %module needs it to work properly. There may be new permissions and settings available for %enabled module.', array ('%module' => ''. $module .'', '%enabled' => ''. implode(', ', $enabled) .'')));
+ }
+ else {
+ drupal_set_message(t('%enabled modules has been enabled for you because %module needs them to work properly. There may be new permissions and settings available for %enabled modules.', array ('%module' => ''. $module .'', '%enabled' => ''. implode(', ', $enabled) .'')));
+ }
+ }
+ }
+ }
+ // New modules have been enabled, also check their dependencies.
+ if ($new_module) {
+ 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