/**
  * Simulates Drupal's module_enable()
  *
  * @see module_enable()
  *
  * @param string[] $module_list
  *   Array of module names.
  * @param bool $enable_dependencies
  *   TRUE, if dependencies should be enabled too.
  *
  * @return bool
  */
 function moduleEnable(array $module_list, $enable_dependencies = TRUE)
 {
     if ($enable_dependencies) {
         $module_list = $this->moduleEnableCheckDependencies($module_list);
     }
     if (empty($module_list)) {
         // Nothing to do. All modules already enabled.
         return TRUE;
     }
     $modules_installed = array();
     $modules_enabled = array();
     foreach ($module_list as $module) {
         if (1 == $this->systemTable->moduleGetStatus($module)) {
             // Already installed + enabled, do nothing.
             continue;
         }
         if (-1 == $this->systemTable->moduleGetSchemaVersion($module)) {
             // Install this module.
             $this->enableModule($module, TRUE);
             $modules_installed[] = $module;
             $modules_enabled[] = $module;
         } else {
             // Enable the module.
             $this->enableModule($module, FALSE);
             $modules_enabled[] = $module;
         }
     }
     // If any modules were newly installed, invoke hook_modules_installed().
     if (!empty($modules_installed)) {
         $this->hookSystem->moduleInvokeAll('modules_installed', $modules_installed);
     }
     // If any modules were newly enabled, invoke hook_modules_enabled().
     if (!empty($modules_enabled)) {
         $this->hookSystem->moduleInvokeAll('modules_enabled', $modules_enabled);
     }
     return TRUE;
 }