diff options
Diffstat (limited to 'includes/module.inc')
-rw-r--r-- | includes/module.inc | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/includes/module.inc b/includes/module.inc index 53f4d3e37..9d71a5095 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -130,7 +130,30 @@ function module_rebuild_cache() { db_query("INSERT INTO {system} (name, description, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $file->name, $file->info['description'], 'module', $file->filename, $file->status, $file->throttle, $bootstrap); } } + $files = _module_build_dependents($files); + return $files; +} +/** + * Find dependents; modules that are required by other modules. + * Adds an array of dependents to the $file->info array. + * + * @return + * The list of files array with dependents added where applicable. + */ +function _module_build_dependents($files) { + foreach ($files as $filename => $file) { + if (is_array($file->info['dependencies'])) { + foreach ($file->info['dependencies'] as $dependency) { + if (!empty($files[$dependency]) && is_array($files[$dependency]->info)) { + if (!isset($files[$dependency]->info['dependents'])) { + $files[$dependency]->info['dependents'] = array(); + } + $files[$dependency]->info['dependents'][] = $filename; + } + } + } + } return $files; } @@ -148,8 +171,18 @@ function module_rebuild_cache() { * and variable_set() for that. * - You may not use double-quotes in a value. * + * Information stored in the module.info file: + * name - The real name of the module for display purposes. + * description - A brief description of the module. + * dependencies - A space delimited list of the short names (shortname) of other modules this module depends on. + * + * Example of .info file: + * name = Forum + * description = Enables threaded discussions about general topics. + * dependencies = taxonomy comment + * * @param $filename - * The file we are parsing. Accepts file with relative or absolute path. + * The file we are parsing. Accepts file with relative or absolute path. * @return * The info array. */ @@ -159,6 +192,9 @@ function _module_parse_info_file($filename) { if (file_exists($filename)) { $info = parse_ini_file($filename); } + if (isset($info['dependencies'])) { + $info['dependencies'] = explode(" ", $info['dependencies']); + } return $info; } |