function varbase_assemble_extra_components in Varbase: The Ultimate Drupal CMS Starter Kit (Bootstrap Ready) 8.7
Same name and namespace in other branches
- 8.8 varbase.profile \varbase_assemble_extra_components()
- 8.4 varbase.profile \varbase_assemble_extra_components()
- 8.5 varbase.profile \varbase_assemble_extra_components()
- 8.6 varbase.profile \varbase_assemble_extra_components()
- 9.0.x varbase.profile \varbase_assemble_extra_components()
Batch job to assemble Varbase extra components.
Parameters
array $install_state: The current install state.
Return value
array The batch job definition.
File
- ./
varbase.profile, line 98 - Enables modules and site configuration for a Varbase site installation.
Code
function varbase_assemble_extra_components(array &$install_state) {
// Default Varbase components, which must be installed.
$default_components = ConfigBit::getList('configbit/default.components.varbase.bit.yml', 'install_default_components', TRUE, 'dependencies', 'profile', 'varbase');
$batch = [];
// Install default components first.
foreach ($default_components as $default_component) {
$batch['operations'][] = [
'varbase_assemble_extra_component_then_install',
(array) $default_component,
];
}
// Install selected extra features.
$selected_extra_features = [];
$selected_extra_features_configs = [];
if (isset($install_state['varbase']['extra_features_values'])) {
$selected_extra_features = $install_state['varbase']['extra_features_values'];
}
if (isset($install_state['varbase']['extra_features_configs'])) {
$selected_extra_features_configs = $install_state['varbase']['extra_features_configs'];
}
// Get the list of extra features config bits.
$extraFeatures = ConfigBit::getList('configbit/extra.components.varbase.bit.yml', 'show_extra_components', TRUE, 'dependencies', 'profile', 'varbase');
// If we do have selected extra features.
if (count($selected_extra_features) && count($extraFeatures)) {
// Have batch processes for each selected extra features.
foreach ($selected_extra_features as $extra_feature_key => $extra_feature_checked) {
if ($extra_feature_checked) {
// If the extra feature was a module and not enabled, then enable it.
if (!\Drupal::moduleHandler()
->moduleExists($extra_feature_key)) {
// Add the checked extra feature to the batch process to be enabled.
$batch['operations'][] = [
'varbase_assemble_extra_component_then_install',
(array) $extra_feature_key,
];
}
if (count($selected_extra_features_configs) && isset($extraFeatures[$extra_feature_key]['config_form']) && $extraFeatures[$extra_feature_key]['config_form'] == TRUE && isset($extraFeatures[$extra_feature_key]['formbit'])) {
$formbit_file_name = drupal_get_path('profile', 'varbase') . '/' . $extraFeatures[$extra_feature_key]['formbit'];
if (file_exists($formbit_file_name)) {
// Added the selected extra feature configs to the batch process
// with the same function name in the formbit.
$batch['operations'][] = [
'varbase_save_editable_config_values',
(array) [
$extra_feature_key,
$formbit_file_name,
$selected_extra_features_configs,
],
];
}
}
}
}
// Hide Wornings and status messages.
$batch['operations'][] = [
'varbase_hide_warning_and_status_messages',
(array) TRUE,
];
// Fix entity updates to clear up any mismatched entity.
$batch['operations'][] = [
'varbase_fix_entity_update',
(array) TRUE,
];
}
// Install selected Demo content.
$selected_demo_content = [];
$selected_demo_content_configs = [];
if (isset($install_state['varbase']['demo_content_values'])) {
$selected_demo_content = $install_state['varbase']['demo_content_values'];
}
if (isset($install_state['varbase']['demo_content_configs'])) {
$selected_demo_content_configs = $install_state['varbase']['demo_content_configs'];
}
// Get the list of demo content config bits.
$demoContent = ConfigBit::getList('configbit/demo.content.varbase.bit.yml', 'show_demo', TRUE, 'dependencies', 'profile', 'varbase');
// If we do have demo_content and we have selected demo_content.
if (count($selected_demo_content) && count($demoContent)) {
// Have batch processes for each selected demo content.
foreach ($selected_demo_content as $demo_content_key => $demo_content_checked) {
if ($demo_content_checked) {
// If the demo content was a module and not enabled, then enable it.
if (!\Drupal::moduleHandler()
->moduleExists($demo_content_key)) {
// Add the checked demo content to the batch process to be enabled.
$batch['operations'][] = [
'varbase_assemble_extra_component_then_install',
(array) $demo_content_key,
];
}
if (count($selected_demo_content_configs) && isset($demoContent[$demo_content_key]['config_form']) && $demoContent[$demo_content_key]['config_form'] == TRUE && isset($demoContent[$demo_content_key]['formbit'])) {
$formbit_file_name = drupal_get_path('profile', 'varbase') . '/' . $demoContent[$demo_content_key]['formbit'];
if (file_exists($formbit_file_name)) {
// Added the selected development configs to the batch process
// with the same function name in the formbit.
$batch['operations'][] = [
'varbase_save_editable_config_values',
(array) [
$demo_content_key,
$formbit_file_name,
$selected_demo_content_configs,
],
];
}
}
}
}
// Hide Wornings and status messages.
$batch['operations'][] = [
'varbase_hide_warning_and_status_messages',
(array) TRUE,
];
// Fix entity updates to clear up any mismatched entity.
$batch['operations'][] = [
'varbase_fix_entity_update',
(array) TRUE,
];
}
// Uninstall list of not needed modules after the config had been loaded.
// To be loaded from a ConfigBit yml file.
$uninstall_components = [
'varbase_default_content',
];
if (count($uninstall_components) > 0) {
foreach ($uninstall_components as $uninstall_component) {
$batch['operations'][] = [
'varbase_uninstall_component',
(array) $uninstall_component,
];
}
}
return $batch;
}