summaryrefslogtreecommitdiff
path: root/modules/system/system.admin.inc
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2010-05-06 06:26:42 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2010-05-06 06:26:42 +0000
commitdf45d5e5ce3077f56b9468fe8022de61b68ce355 (patch)
tree545f8e8c4f603510a2b2b20a402da5f834abc739 /modules/system/system.admin.inc
parent77c361620463b2b5a859bbb1cd2bbceca6349d15 (diff)
downloadbrdo-df45d5e5ce3077f56b9468fe8022de61b68ce355.tar.gz
brdo-df45d5e5ce3077f56b9468fe8022de61b68ce355.tar.bz2
#490400 by jpmckinney: Fixed modules with dependencies whose .info file sets required=TRUE cannot be enabled.
Diffstat (limited to 'modules/system/system.admin.inc')
-rw-r--r--modules/system/system.admin.inc16
1 files changed, 9 insertions, 7 deletions
diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 4b59973bd..3f386d8ab 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -822,20 +822,21 @@ function system_modules($form, $form_state = array()) {
$files = system_rebuild_module_data();
// Remove hidden modules from display list.
- foreach ($files as $filename => $file) {
+ $visible_files = $files;
+ foreach ($visible_files as $filename => $file) {
if (!empty($file->info['hidden']) || !empty($file->info['required'])) {
- unset($files[$filename]);
+ unset($visible_files[$filename]);
}
}
- uasort($files, 'system_sort_modules_by_info_name');
+ uasort($visible_files, 'system_sort_modules_by_info_name');
// If the modules form was submitted, then system_modules_submit() runs first
// and if there are unfilled required modules, then $form_state['storage'] is
// filled, triggering a rebuild. In this case we need to display a
// confirmation form.
if (!empty($form_state['storage'])) {
- return system_modules_confirm_form($files, $form_state['storage']);
+ return system_modules_confirm_form($visible_files, $form_state['storage']);
}
$modules = array();
@@ -845,7 +846,7 @@ function system_modules($form, $form_state = array()) {
$help_arg = module_exists('help') ? drupal_help_arg() : FALSE;
// Iterate through each of the modules.
- foreach ($files as $filename => $module) {
+ foreach ($visible_files as $filename => $module) {
$extra = array();
$extra['enabled'] = (bool) $module->status;
// If this module requires other modules, add them to the array.
@@ -854,7 +855,8 @@ function system_modules($form, $form_state = array()) {
$extra['requires'][$requires] = t('@module (<span class="admin-missing">missing</span>)', array('@module' => drupal_ucfirst($requires)));
$extra['disabled'] = TRUE;
}
- else {
+ // Only display visible modules.
+ elseif (isset($visible_files[$requires])) {
$requires_name = $files[$requires]->info['name'];
if ($incompatible_version = drupal_check_incompatibility($v, str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $files[$requires]->info['version']))) {
$extra['requires'][$requires] = t('@module (<span class="admin-missing">incompatible with</span> version @version)', array(
@@ -911,7 +913,7 @@ function system_modules($form, $form_state = array()) {
// impossible to disable this one.
foreach ($module->required_by as $required_by => $v) {
// Hidden modules are unset already.
- if (isset($files[$required_by])) {
+ if (isset($visible_files[$required_by])) {
if ($files[$required_by]->status == 1) {
$extra['required_by'][] = t('@module (<span class="admin-enabled">enabled</span>)', array('@module' => $files[$required_by]->info['name']));
$extra['disabled'] = TRUE;