You are here

varbase_blog.install in Varbase Blog (Corporate Blog) 9.0.x

Install, update and uninstall functions for the varbase blog module.

File

varbase_blog.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the varbase blog module.
 */
use Symfony\Component\Yaml\Yaml;
use Drupal\Core\Config\InstallStorage;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\Config\FileStorage;

/**
 * Implements hook_install().
 */
function varbase_blog_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);

    // 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);
      }
    }
  }

  // ---------------------------------------------------------------------------.
  // Forced configs import on install.
  $forced_configs = [
    'views.view.taxonomy_term',
    'taxonomy.vocabulary.tags',
    'core.entity_view_display.taxonomy_term.tags.default',
    'core.entity_view_display.taxonomy_term.tags.full',
  ];
  foreach ($forced_configs as $config_name) {
    $config_path = $optional_install_path . '/' . $config_name . '.yml';
    if (file_exists($config_path)) {
      $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);
    }
  }
}

/**
 * Issue #3222053: Fix to allow content editors to use stored selected layouts.
 *
 * On the Full content display mode with layout builder.
 */
function varbase_blog_update_9001() {
  $config_factory = \Drupal::configFactory()
    ->getEditable('core.entity_view_display.node.varbase_blog.full');
  $varbase_blog_full_data = $config_factory
    ->get();
  if (isset($varbase_blog_full_data['third_party_settings']) && isset($varbase_blog_full_data['third_party_settings']['layout_library']) && isset($varbase_blog_full_data['third_party_settings']['layout_library']['enable']) && $varbase_blog_full_data['third_party_settings']['layout_library']['enable'] == FALSE) {
    $varbase_blog_full_data['third_party_settings']['layout_library']['enable'] = TRUE;
    $config_factory
      ->setData($varbase_blog_full_data)
      ->save(TRUE);
  }
}

Functions

Namesort descending Description
varbase_blog_install Implements hook_install().
varbase_blog_update_9001 Issue #3222053: Fix to allow content editors to use stored selected layouts.