function install_profile_modules in Drupal 7
Same name and namespace in other branches
- 8 core/includes/install.core.inc \install_profile_modules()
- 9 core/includes/install.core.inc \install_profile_modules()
Installs required modules via a batch process.
Parameters
$install_state: An array of information about the current installation state.
Return value
The batch definition.
1 string reference to 'install_profile_modules'
- install_system_module in includes/
install.core.inc - Installation task; install the Drupal system module.
File
- includes/
install.core.inc, line 1407 - API functions for installing Drupal.
Code
function install_profile_modules(&$install_state) {
$modules = variable_get('install_profile_modules', array());
$files = system_rebuild_module_data();
variable_del('install_profile_modules');
// Always install required modules first. Respect the dependencies between
// the modules.
$required = array();
$non_required = array();
// Although the profile module is marked as required, it needs to go after
// every dependency, including non-required ones. So clear its required
// flag for now to allow it to install late.
$files[$install_state['parameters']['profile']]->info['required'] = FALSE;
// Add modules that other modules depend on.
foreach ($modules as $module) {
if ($files[$module]->requires) {
$modules = array_merge($modules, array_keys($files[$module]->requires));
}
}
$modules = array_unique($modules);
foreach ($modules as $module) {
if (!empty($files[$module]->info['required'])) {
$required[$module] = $files[$module]->sort;
}
else {
$non_required[$module] = $files[$module]->sort;
}
}
arsort($required);
arsort($non_required);
$operations = array();
foreach ($required + $non_required as $module => $weight) {
$operations[] = array(
'_install_module_batch',
array(
$module,
$files[$module]->info['name'],
),
);
}
$batch = array(
'operations' => $operations,
'title' => st('Installing @drupal', array(
'@drupal' => drupal_install_profile_distribution_name(),
)),
'error_message' => st('The installation has encountered an error.'),
'finished' => '_install_profile_modules_finished',
);
return $batch;
}