protected function ModulesListForm::buildModuleList in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/modules/system/src/Form/ModulesListForm.php \Drupal\system\Form\ModulesListForm::buildModuleList()
Helper function for building a list of modules to install.
Parameters
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array An array of modules to install and their dependencies.
1 call to ModulesListForm::buildModuleList()
- ModulesListForm::submitForm in core/
modules/ system/ src/ Form/ ModulesListForm.php - Form submission handler.
File
- core/
modules/ system/ src/ Form/ ModulesListForm.php, line 364 - Contains \Drupal\system\Form\ModulesListForm.
Class
- ModulesListForm
- Provides module installation interface.
Namespace
Drupal\system\FormCode
protected function buildModuleList(FormStateInterface $form_state) {
$packages = $form_state
->getValue('modules');
// Build a list of modules to install.
$modules = array(
'install' => array(),
'dependencies' => array(),
);
// Required modules have to be installed.
// @todo This should really not be handled here.
$data = system_rebuild_module_data();
foreach ($data as $name => $module) {
if (!empty($module->required) && !$this->moduleHandler
->moduleExists($name)) {
$modules['install'][$name] = $module->info['name'];
}
}
// First, build a list of all modules that were selected.
foreach ($packages as $items) {
foreach ($items as $name => $checkbox) {
if ($checkbox['enable'] && !$this->moduleHandler
->moduleExists($name)) {
$modules['install'][$name] = $data[$name]->info['name'];
}
}
}
// Add all dependencies to a list.
while (list($module) = each($modules['install'])) {
foreach (array_keys($data[$module]->requires) as $dependency) {
if (!isset($modules['install'][$dependency]) && !$this->moduleHandler
->moduleExists($dependency)) {
$modules['dependencies'][$module][$dependency] = $data[$dependency]->info['name'];
$modules['install'][$dependency] = $data[$dependency]->info['name'];
}
}
}
// Make sure the install API is available.
include_once DRUPAL_ROOT . '/core/includes/install.inc';
// Invoke hook_requirements('install'). If failures are detected, make
// sure the dependent modules aren't installed either.
foreach (array_keys($modules['install']) as $module) {
if (!drupal_check_module($module)) {
unset($modules['install'][$module]);
foreach (array_keys($data[$module]->required_by) as $dependent) {
unset($modules['install'][$dependent]);
unset($modules['dependencies'][$dependent]);
}
}
}
return $modules;
}