Rebuild, save, and return data about all currently available modules.
Array of all available modules and their data.
function system_rebuild_module_data() {
$modules_cache =& drupal_static(__FUNCTION__);
// Only rebuild once per request. $modules and $modules_cache cannot be
// combined into one variable, because the $modules_cache variable is reset by
// reference from system_list_reset() during the rebuild.
if (!isset($modules_cache)) {
$modules = _system_rebuild_module_data();
$files = array();
ksort($modules);
// Add name, status, weight, and schema version.
$enabled_modules = (array) config('system.module')
->get('enabled');
$disabled_modules = (array) config('system.module.disabled')
->get();
$all_modules = $enabled_modules + $disabled_modules;
foreach ($modules as $module => $record) {
$record->name = $module;
$record->weight = isset($all_modules[$module]) ? $all_modules[$module] : 0;
$record->status = (int) isset($enabled_modules[$module]);
$record->schema_version = SCHEMA_UNINSTALLED;
$files[$module] = $record->filename;
}
$modules = _module_build_dependencies($modules);
$modules_cache = $modules;
// Store filenames to allow system_list() and drupal_get_filename() to
// retrieve them without having to rebuild or scan the filesystem.
state()
->set('system.module.files', $files);
}
return $modules_cache;
}