summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/module.inc42
1 files changed, 38 insertions, 4 deletions
diff --git a/includes/module.inc b/includes/module.inc
index fecb9c68a..150b776b8 100644
--- a/includes/module.inc
+++ b/includes/module.inc
@@ -103,8 +103,13 @@ function module_rebuild_cache() {
ksort($files);
foreach ($files as $filename => $file) {
- drupal_get_filename('module', $file->name, $file->filename);
- drupal_load('module', $file->name);
+ $file->info = _module_parse_info_file(dirname($file->filename) .'/'. $file->name .'.info');
+ // Skip modules that don't provide info.
+ if (empty($file->info)) {
+ unset($files[$filename]);
+ continue;
+ }
+ $files[$filename]->info = $file->info;
// log the critical hooks implemented by this module
$bootstrap = 0;
@@ -116,12 +121,13 @@ function module_rebuild_cache() {
}
// Update the contents of the system table:
+ // TODO: We shouldn't actually need this description field anymore. Remove me next release.
if (isset($file->status) || (isset($file->old_filename) && $file->old_filename != $file->filename)) {
- db_query("UPDATE {system} SET description = '%s', name = '%s', filename = '%s', bootstrap = %d WHERE filename = '%s'", $file->description, $file->name, $file->filename, $bootstrap, $file->old_filename);
+ db_query("UPDATE {system} SET description = '%s', name = '%s', filename = '%s', bootstrap = %d WHERE filename = '%s'", $file->info['description'], $file->name, $file->filename, $bootstrap, $file->old_filename);
}
else {
// This is a new module.
- db_query("INSERT INTO {system} (name, description, type, filename, status, throttle, bootstrap) VALUES ('%s', '%s', '%s', '%s', %d, %d, %d)", $file->name, $file->description, 'module', $file->filename, $file->status, $file->throttle, $bootstrap);
+ 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);
}
}
@@ -153,6 +159,34 @@ function module_parse_meta_file($filename) {
}
/**
+ * Parse Drupal info file format.
+ * Uses ini parser provided by php's parse_ini_file().
+ *
+ * Files should use the ini format to specify values.
+ * e.g.
+ * key = "value"
+ * key2 = value2
+ *
+ * Some things to be aware of:
+ * - This function is NOT for placing arbitrary module-specific settings. Use variable_get()
+ * and variable_set() for that.
+ * - You may not use double-quotes in a value.
+ *
+ * @param $filename
+ * The file we are parsing. Accepts file with relative or absolute path.
+ * @return
+ * The info array.
+ */
+function _module_parse_info_file($filename) {
+ $info = array();
+
+ if (file_exists($filename)) {
+ $info = parse_ini_file($filename);
+ }
+ return $info;
+}
+
+/**
* Determine whether a given module exists.
*
* @param $module