You are here

varbase_heroslider_media.install in Media Hero Slider 8.6

Install, update and uninstall functions for the varbase hero slider media.

File

varbase_heroslider_media.install
View source
<?php

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

/**
 * Implements hook_install().
 */
function varbase_heroslider_media_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 = file_scan_directory($optional_install_path, '/^.*\\.(settings.yml)$/i');
    $settings_config_filenames = array();
    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);
    }
  }

  // ---------------------------------------------------------------------------
}

/**
 * Implements hook_requirements().
 */
function varbase_heroslider_media_requirements($phase) {
  $requirements = [];
  $path = DRUPAL_ROOT . '/libraries/slick/slick/slick.min.js';

  // Is the library found in the root libraries path.
  $library_found = file_exists($path);

  // If library is not found, then look in the current profile libraries path.
  if (!$library_found) {
    $profile_path = drupal_get_path('profile', drupal_get_profile());
    $profile_path .= '/libraries/slick/slick/slick.min.js';

    // Is the library found in the current profile libraries path.
    $library_found = file_exists($profile_path);
  }
  if (!$library_found) {
    $requirements['slick_library'] = array(
      'title' => t('Slick library missing'),
      'description' => t('Media Hero Slider requires the slick.min.js library.
        Download it (https://github.com/kenwheeler/slick) and place it in the
        libraries folder (/libraries)'),
      'severity' => REQUIREMENT_ERROR,
    );
  }
  return $requirements;
}