-
-
Notifications
You must be signed in to change notification settings - Fork 48
/
varbase.install
80 lines (71 loc) · 3.37 KB
/
varbase.install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
* @file
* Install, update and uninstall functions for the Varbase installation profile.
*/
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Yaml\Yaml;
use Drupal\Core\Config\InstallStorage;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\Config\FileStorage;
use Vardot\Entity\EntityDefinitionUpdateManager;
/**
* Implements hook_install().
*
* Perform actions to set up the site for this profile.
*
* @see system_install()
*/
function varbase_install() {
// Install optional configs.
$config_installer = \Drupal::service('config.installer');
$optional_install_path = \Drupal::service('extension.list.profile')->getPath('varbase') . '/' . InstallStorage::CONFIG_OPTIONAL_DIRECTORY;
if (is_dir($optional_install_path)) {
// Install any optional config the profile provides.
$storage = new FileStorage($optional_install_path, StorageInterface::DEFAULT_COLLECTION);
$config_installer->installOptionalConfig($storage, '');
// Have the .settings.yml configs into the active config.
$settings_config_files = \Drupal::service('file_system')->scanDirectory($optional_install_path, '/^.*(settings.yml)$/i');
if (isset($settings_config_files) && is_array($settings_config_files)) {
foreach ($settings_config_files as $settings_config_file) {
$settings_config_file_content = file_get_contents(DRUPAL_ROOT . '/' . $settings_config_file->uri);
$settings_config_file_data = (array) Yaml::parse($settings_config_file_content);
$config_factory = \Drupal::configFactory()->getEditable($settings_config_file->name);
$config_factory->setData($settings_config_file_data)->save(TRUE);
}
}
}
// ---------------------------------------------------------------------------
// Set front page to "node".
\Drupal::configFactory()->getEditable('system.site')->set('page.front', '/node')->save(TRUE);
// Disable Aggregate CSS files.
\Drupal::configFactory()->getEditable('system.performance')->set('css.preprocess', 0)->save(TRUE);
// Disable Aggregate JavaScript files
\Drupal::configFactory()->getEditable('system.performance')->set('js.preprocess', 0)->save(TRUE);
// Entity updates to clear up any mismatched entity and/or field definitions
// And Fix changes were detected in the entity type and field definitions.
\Drupal::classResolver()
->getInstanceFromDefinition(EntityDefinitionUpdateManager::class)
->applyUpdates();
// Full flash and clear cash and rebuilding newly created routes.
// After install of extra modules by install: in the .info.yml files.
// In Varbase profile and all Varbase components.
// ---------------------------------------------------------------------------
// * Necessary initialization for the entire system.
// * Account for changed config by the end install.
// * Flush all persistent caches.
// * Flush asset file caches.
// * Wipe the Twig PHP Storage cache.
// * Rebuild module and theme data.
// * Clear all plugin caches.
// * Rebuild the menu router based on all rebuilt data.
drupal_flush_all_caches();
// If Varbase Tour were enabled then redirect to the homepage with active tour.
if (isset($GLOBALS['homepage_with_varbase_tour'])
&& $GLOBALS['homepage_with_varbase_tour'] == TRUE) {
$homepage_with_tour = "/?tour";
$response = new RedirectResponse($homepage_with_tour);
$response->send();
exit;
}
}