From 9945bca5288ab004ff99701361350b6f250afa10 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Sat, 31 Jul 2004 11:17:27 +0000 Subject: - Patch #9650 by Adrian: this change introduces a module_load function, which maintains a list of modules that have already been loaded in a static array, and will not load another module of the same name, or if the file does not exist. Modules can be stored anywhere, as there is now a set of functions called module_get_filename, and module_set_filename .. which allow system_listing and module_list to specify the locations of the files. A new function module_load_all() replaces the hardcoded includes in module_init, and loads all modules which have been enabled, using module_load. module_listing no longer includes files itself, instead it just keeps the listing (and sets the filenames). This patch is a requirement for the multisite configuration patch, as overriding modules are currently being loaded due to the only protection of loading them is include_once. --- modules/system.module | 4 +++- modules/system/system.module | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/system.module b/modules/system.module index 265ae2b85..9ea7daac2 100644 --- a/modules/system.module +++ b/modules/system.module @@ -245,7 +245,9 @@ function system_listing($type) { } foreach ($files as $filename => $file) { - include_once($filename); + module_set_filename($file->name, $filename); + module_load($file->name); + if ($type == 'module') { $info->name = module_invoke($file->name, 'help', 'admin/modules#name') ? module_invoke($file->name, 'help', 'admin/modules#name') : module_invoke($file->name, 'system', 'name') ? module_invoke($file->name, 'system', 'name') : $file->name; $info->description = module_invoke($file->name, 'help', 'admin/modules#description') ? module_invoke($file->name, 'help', 'admin/modules#description') : module_invoke($file->name, 'system', 'description'); diff --git a/modules/system/system.module b/modules/system/system.module index 265ae2b85..9ea7daac2 100644 --- a/modules/system/system.module +++ b/modules/system/system.module @@ -245,7 +245,9 @@ function system_listing($type) { } foreach ($files as $filename => $file) { - include_once($filename); + module_set_filename($file->name, $filename); + module_load($file->name); + if ($type == 'module') { $info->name = module_invoke($file->name, 'help', 'admin/modules#name') ? module_invoke($file->name, 'help', 'admin/modules#name') : module_invoke($file->name, 'system', 'name') ? module_invoke($file->name, 'system', 'name') : $file->name; $info->description = module_invoke($file->name, 'help', 'admin/modules#description') ? module_invoke($file->name, 'help', 'admin/modules#description') : module_invoke($file->name, 'system', 'description'); -- cgit v1.2.3