diff --git a/core/includes/module.inc b/core/includes/module.inc index 287b818..0ea8e7e 100644 --- a/core/includes/module.inc +++ b/core/includes/module.inc @@ -480,25 +480,19 @@ function module_enable($module_list, $enable_dependencies = TRUE) { $disabled_config = config('system.module.disabled'); foreach ($module_list as $module) { // Only process modules that are not already enabled. - $enabled = TRUE; - $weight = 0; - if (!$schema_store->get($module)) { - $enabled = FALSE; - } - elseif (!$module_config->get("enabled.$module")) { - $enabled = FALSE; - $weight = $disabled_config->get($module); - } + $enabled = $module_config->get("enabled.$module") !== NULL; if (!$enabled) { + $weight = $disabled_config->get($module); + if ($weight === NULL) { + $weight = 0; + } $module_config ->set("enabled.$module", $weight) ->set('enabled', module_config_sort($module_config->get('enabled'))) ->save(); - if ($weight) { - $disabled_config - ->clear($module) - ->save(); - } + $disabled_config + ->clear($module) + ->save(); // Load the module's code. drupal_load('module', $module); module_load_install($module); @@ -623,7 +617,6 @@ function module_disable($module_list, $disable_dependents = TRUE) { ->save(); $module_config ->clear("enabled.$module") - ->set('enabled', module_config_sort($module_config->get('enabled'))) ->save(); $invoke_modules[] = $module; watchdog('system', '%module module disabled.', array('%module' => $module), WATCHDOG_INFO); diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/ModuleEnable.php b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleEnable.php new file mode 100644 index 0000000..b2d08fc --- /dev/null +++ b/core/modules/system/lib/Drupal/system/Tests/Module/ModuleEnable.php @@ -0,0 +1,47 @@ + 'Module enable', + 'description' => 'Tests module_enable().', + 'group' => 'Module', + ); + } + + /** + * Tests enabling User module once more. + * + * Regression: The installer might enable a module twice due to automatic + * dependency resolution. A bug caused the stored weight for User module to + * be an array. + */ + function testEnableUserTwice() { + module_enable(array('user'), FALSE); + $this->assertIdentical(config('system.module')->get('enabled.user'), '0'); + } + + /** + * Tests recorded schema versions of early installed modules in the installer. + */ + function testRequiredModuleSchemaVersions() { + $version = drupal_get_installed_schema_version('system', TRUE); + $this->assertTrue($version > 0, 'System module version is > 0.'); + $version = drupal_get_installed_schema_version('user', TRUE); + $this->assertTrue($version > 0, 'User module version is > 0.'); + } + +}