varbase_core-8.x-8.18/modules/varbase_security/varbase_security.install
modules/varbase_security/varbase_security.install
<?php /** * @file * Install, update and uninstall functions for the Varbase Security. */ use Symfony\Component\Yaml\Yaml; use Drupal\Core\Config\InstallStorage; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Config\FileStorage; use Drupal\varbase\Entity\VarbaseEntityDefinitionUpdateManager; /** * Implements hook_install(). */ function varbase_security_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'])) { \Drupal::service('module_installer')->install($module_info_data['install'], 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); } } } // --------------------------------------------------------------------------- // 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 = [ 'core.entity_form_display.user.user.default', ]; 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); } }