varbase_admin.install in Varbase Core 8.8
Install, update and uninstall functions for the Varbase admin.
File
modules/varbase_admin/varbase_admin.installView source
<?php
/**
* @file
* Install, update and uninstall functions for the Varbase admin.
*/
use Symfony\Component\Yaml\Yaml;
use Drupal\Core\Config\InstallStorage;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\Config\FileStorage;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;
use Drupal\shortcut\Entity\Shortcut;
use Drupal\varbase\Entity\VarbaseEntityDefinitionUpdateManager;
use Drupal\user\UserInterface;
/**
* Implements hook_install().
*/
function varbase_admin_install() {
$module_name = preg_replace('/_install$/', '', __FUNCTION__);
$module_path = Drupal::service('module_handler')
->getModule($module_name)
->getPath();
// Processer for install: in [$module_name].info.yml file.
// ---------------------------------------------------------------------------.
$module_info_file = $module_path . '/' . $module_name . '.info.yml';
if (file_exists($module_info_file)) {
$module_info_data = (array) Yaml::parse(file_get_contents($module_info_file));
if (isset($module_info_data['install']) && is_array($module_info_data['install'])) {
foreach ($module_info_data['install'] as $module) {
if (!\Drupal::moduleHandler()
->moduleExists($module)) {
\Drupal::service('module_installer')
->install([
$module,
], TRUE);
}
}
}
}
// Install optional configs.
$optional_install_path = $module_path . '/' . InstallStorage::CONFIG_OPTIONAL_DIRECTORY;
if (is_dir($optional_install_path)) {
$config_installer = \Drupal::service('config.installer');
$config_installer
->installDefaultConfig('module', $module_name);
// Create field storage configs first in active config.
$storage_config_files = \Drupal::service('file_system')
->scanDirectory($optional_install_path, '/^field.storage.*\\.(yml)$/i');
if (isset($storage_config_files) && is_array($storage_config_files)) {
foreach ($storage_config_files as $storage_config_file) {
$storage_config_file_content = file_get_contents(DRUPAL_ROOT . '/' . $storage_config_file->uri);
$storage_config_file_data = (array) Yaml::parse($storage_config_file_content);
$config_factory = \Drupal::configFactory()
->getEditable($storage_config_file->name);
$config_factory
->setData($storage_config_file_data)
->save(TRUE);
}
}
// Install any optional config the module 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);
}
}
}
// ---------------------------------------------------------------------------
// Assign user 1 the "administrator" role.
$user = User::load(1);
$user->roles[] = 'administrator';
$user
->save();
// Restrict user registration to admin role creation.
\Drupal::configFactory()
->getEditable('user.settings')
->set('register', UserInterface::REGISTER_ADMINISTRATORS_ONLY)
->save(TRUE);
// Allow authenticated users to use shortcuts.
user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, [
'access shortcuts',
]);
// Populate the default shortcut set.
$shortcut = Shortcut::create([
'shortcut_set' => 'default',
'title' => t('Add content'),
'weight' => 0,
'link' => [
'uri' => 'internal:/node/add',
],
]);
$shortcut
->save();
$shortcut = Shortcut::create([
'shortcut_set' => 'default',
'title' => t('All content'),
'weight' => 1,
'link' => [
'uri' => 'internal:/admin/content',
],
]);
$shortcut
->save();
$shortcut = Shortcut::create([
'shortcut_set' => 'default',
'title' => t('All media'),
'weight' => 2,
'link' => [
'uri' => 'internal:/admin/content/media',
],
]);
$shortcut
->save();
$shortcut = Shortcut::create([
'shortcut_set' => 'default',
'title' => t('Taxonomy'),
'weight' => 3,
'link' => [
'uri' => 'internal:/admin/structure/taxonomy',
],
]);
$shortcut
->save();
$shortcut = Shortcut::create([
'shortcut_set' => 'default',
'title' => t('Permissions'),
'weight' => 4,
'link' => [
'uri' => 'internal:/admin/people/permissions',
],
]);
$shortcut
->save();
// Enable the admin theme.
\Drupal::configFactory()
->getEditable('node.settings')
->set('use_admin_theme', TRUE)
->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(VarbaseEntityDefinitionUpdateManager::class)
->applyUpdates();
// Have forced configs import after the entity and definitions updates.
$forced_configs_import_after_entity_updates = [
'views.view.content',
'views.view.user_admin_people',
];
foreach ($forced_configs_import_after_entity_updates as $config_name) {
$config_path = $optional_install_path . '/' . $config_name . '.yml';
$config_content = file_get_contents($config_path);
$config_data = (array) Yaml::parse($config_content);
$config_factory = \Drupal::configFactory()
->getEditable($config_name);
$config_factory
->setData($config_data)
->save(TRUE);
}
}
/**
* Enable Length Indicator module.
*/
function varbase_admin_update_8602() {
/** @var \Drupal\update_helper\Updater $updateHelper */
$updateHelper = \Drupal::service('update_helper.updater');
// Execute configuration update definitions with logging of success.
$updateHelper
->executeUpdate('varbase_core', 'varbase_admin_update_8602');
// Output logged messages to related channel of update execution.
return $updateHelper
->logger()
->output();
}
/**
* Enable Admin Toolbar Links Access Filter module.
*/
function varbase_admin_update_8603() {
if (!\Drupal::moduleHandler()
->moduleExists('admin_toolbar_links_access_filter')) {
\Drupal::service('module_installer')
->install([
'admin_toolbar_links_access_filter',
], FALSE);
}
}
/**
* Enable [Events log track] module.
*/
function varbase_admin_update_8604() {
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track')) {
\Drupal::service('module_installer')
->install([
'event_log_track',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_file')) {
\Drupal::service('module_installer')
->install([
'event_log_track_file',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_media')) {
\Drupal::service('module_installer')
->install([
'event_log_track_media',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_user')) {
\Drupal::service('module_installer')
->install([
'event_log_track_user',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_taxonomy')) {
\Drupal::service('module_installer')
->install([
'event_log_track_taxonomy',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_node')) {
\Drupal::service('module_installer')
->install([
'event_log_track_node',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_menu')) {
\Drupal::service('module_installer')
->install([
'event_log_track_menu',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('event_log_track_auth')) {
\Drupal::service('module_installer')
->install([
'event_log_track_auth',
], FALSE);
}
}
/**
* Issue #3152698: Switch from [Event Log Track] to [Admin Audit Trail] module.
*/
function varbase_admin_update_8605() {
// ---------------------------------------------------------------------------
// Inastall all Admin Audit Trail moduels.
// ---------------------------------------------------------------------------.
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail') && \Drupal::moduleHandler()
->moduleExists('event_log_track')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_file') && \Drupal::moduleHandler()
->moduleExists('event_log_track_file')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_file',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_media') && \Drupal::moduleHandler()
->moduleExists('event_log_track_media')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_media',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_user') && \Drupal::moduleHandler()
->moduleExists('event_log_track_user')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_user',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_taxonomy') && \Drupal::moduleHandler()
->moduleExists('event_log_track_taxonomy')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_taxonomy',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_node') && \Drupal::moduleHandler()
->moduleExists('event_log_track_node')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_node',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_menu') && \Drupal::moduleHandler()
->moduleExists('event_log_track_menu')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_menu',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_auth') && \Drupal::moduleHandler()
->moduleExists('event_log_track_auth')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_auth',
], FALSE);
}
if (!\Drupal::moduleHandler()
->moduleExists('admin_audit_trail_workflows') && \Drupal::moduleHandler()
->moduleExists('event_log_track_workflows')) {
\Drupal::service('module_installer')
->install([
'admin_audit_trail_workflows',
], FALSE);
}
// Migrate logs from the event_log_track table to admin_audit_trail table.
// ---------------------------------------------------------------------------.
if (\Drupal::moduleHandler()
->moduleExists('event_log_track')) {
$fields = [
'lid',
'type',
'operation',
'path',
'ref_numeric',
'ref_char',
'description',
'uid',
'ip',
'created',
];
$event_log_track_query = \Drupal::database()
->select('event_log_track', 'event_log_track');
$event_log_track_query
->fields('event_log_track', $fields);
$event_log_track_result = $event_log_track_query
->execute();
while ($event_log_track_row_values = $event_log_track_result
->fetchAssoc()) {
$result = \Drupal::database()
->insert('admin_audit_trail')
->fields($fields)
->values($event_log_track_row_values)
->execute();
unset($result);
}
}
// Uninstall all Event Log Track moduels.
// ---------------------------------------------------------------------------.
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_file')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_file',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_media')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_media',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_user')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_user',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_taxonomy')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_taxonomy',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_node')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_node',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_menu')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_menu',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_auth')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_auth',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track_workflows')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track_workflows',
], FALSE);
}
if (\Drupal::moduleHandler()
->moduleExists('event_log_track')) {
\Drupal::service('module_installer')
->uninstall([
'event_log_track',
], FALSE);
}
}
Functions
Name![]() |
Description |
---|---|
varbase_admin_install | Implements hook_install(). |
varbase_admin_update_8602 | Enable Length Indicator module. |
varbase_admin_update_8603 | Enable Admin Toolbar Links Access Filter module. |
varbase_admin_update_8604 | Enable [Events log track] module. |
varbase_admin_update_8605 | Issue #3152698: Switch from [Event Log Track] to [Admin Audit Trail] module. |