You are here

function module_blacklist_form_system_modules_alter in Module Blacklist 8

Implements hook_form_FORM_ID_alter().

File

./module_blacklist.module, line 39
Module Blacklist implementation of hooks.

Code

function module_blacklist_form_system_modules_alter(&$form, FormStateInterface $form_state, $form_id) {
  $module_blacklist = Settings::get('module_blacklist');
  if (!$module_blacklist) {

    // Skips if the blacklist is empty.
    return;
  }
  foreach ($form['modules'] as $module_package => $modules) {
    if (!is_array($modules)) {
      continue;
    }
    foreach ($modules as $module_name => $module_info) {

      // Checks whether the module is blacklisted.
      if (!in_array($module_name, $module_blacklist)) {
        continue;
      }

      // Skips modules that are already enabled, even if it is blacklisted.
      if ($form['modules'][$module_package][$module_name]['enable']['#default_value'] === TRUE) {
        continue;
      }

      // Alters the module form row, disabling the module installation.
      $form['modules'][$module_package][$module_name]['enable']['#disabled'] = TRUE;
      $form['modules'][$module_package][$module_name]['name']['#markup'] .= " (blocked)";
      $form['modules'][$module_package][$module_name]['description']['#markup'] .= ' ' . t('WARNING: The installation of this module is being blocked by Module Blacklist.');
    }
  }
}