function commons_install_additional_modules in Drupal Commons 7.3
Task callback: uses Batch API to enable modules based on user selection.
Creates all demo content if requested and installs optional modules that providing additional functionality to the base install.
File
- ./
commons.install, line 278 - Install, update and uninstall functions for the Commons install profile.
Code
function commons_install_additional_modules() {
$selected_extras = variable_get('commons_selected_extras', array());
$modules = array();
if (!empty($selected_extras['acquia_agent'])) {
$modules[] = 'acquia_agent';
}
if (!empty($selected_extras['acquia_search'])) {
$modules[] = 'acquia_search';
}
if (!empty($selected_extras['acquia_spi'])) {
$modules[] = 'acquia_spi';
}
if (!empty($selected_extras['og_access'])) {
$modules[] = 'og_access';
}
// Resolve the dependencies now, so that module_enable() doesn't need
// to do it later for each individual module (which kills performance).
$files = system_rebuild_module_data();
$modules_sorted = array();
foreach ($modules as $module) {
if ($files[$module]->requires) {
// Create a list of dependencies that haven't been installed yet.
$dependencies = array_keys($files[$module]->requires);
$dependencies = array_filter($dependencies, '_commons_filter_dependencies');
// Add them to the module list.
$modules = array_merge($modules, $dependencies);
}
}
$modules = array_unique($modules);
foreach ($modules as $module) {
$modules_sorted[$module] = $files[$module]->sort;
}
arsort($modules_sorted);
$operations = array();
// Enable the selected modules.
foreach ($modules_sorted as $module => $weight) {
$operations[] = array(
'_commons_enable_module',
array(
$module,
$files[$module]->info['name'],
),
);
}
// Create the example content.
if (!empty($selected_extras['example_content'])) {
// Create the demo users.
$operations[] = array(
'_commons_create_demo_users',
array(
t('Created demo users.'),
),
);
// Create the demo taxonomy terms.
$operations[] = array(
'_commons_create_demo_taxonomy_terms',
array(
t('Created taxonomy terms.'),
),
);
// Create the demo groups.
$operations[] = array(
'_commons_create_demo_groups',
array(
t('Created demo groups.'),
),
);
// Create the demo content.
$operations[] = array(
'_commons_create_demo_content',
array(
t('Created demo content.'),
),
);
}
// Convert the administrator into a group.
$operations[] = array(
'_commons_convert_administrator_to_group',
array(
t('Converted administrator into a group.'),
),
);
$batch = array(
'title' => !empty($selected_extras['example_content']) ? st('Installing example content') : st('Installing additional functionality'),
'operations' => $operations,
'file' => drupal_get_path('profile', 'commons') . '/commons.install_callbacks.inc',
);
return $batch;
}