You are here

function ModuleEnable::moduleEnable in X Autoload 7.5

Simulates Drupal's module_enable()

Parameters

string[] $module_list: Array of module names.

bool $enable_dependencies: TRUE, if dependencies should be enabled too.

Return value

bool

See also

module_enable()

File

tests/src/VirtualDrupal/ModuleEnable.php, line 84

Class

ModuleEnable

Namespace

Drupal\xautoload\Tests\VirtualDrupal

Code

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;
}