You are here

varbase.install in Varbase: The Ultimate Drupal CMS Starter Kit (Bootstrap Ready) 8.4

Install, update and uninstall functions for the Varbase installation profile.

File

varbase.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the Varbase installation profile.
 */
use Symfony\Component\Yaml\Yaml;
use Drupal\user\Entity\User;
use Drupal\user\RoleInterface;
use Drupal\shortcut\Entity\Shortcut;

/**
 * Implements hook_install().
 *
 * Perform actions to set up the site for this profile.
 *
 * @see system_install()
 */
function varbase_install() {

  // Set front page to "node".
  \Drupal::configFactory()
    ->getEditable('system.site')
    ->set('page.front', '/node')
    ->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', USER_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(array(
    'shortcut_set' => 'default',
    'title' => t('Add content'),
    'weight' => 0,
    'link' => array(
      'uri' => 'internal:/node/add',
    ),
  ));
  $shortcut
    ->save();
  $shortcut = Shortcut::create(array(
    'shortcut_set' => 'default',
    'title' => t('All content'),
    'weight' => 1,
    'link' => array(
      'uri' => 'internal:/admin/content',
    ),
  ));
  $shortcut
    ->save();
  $shortcut = Shortcut::create(array(
    'shortcut_set' => 'default',
    'title' => t('All media'),
    'weight' => 2,
    'link' => array(
      'uri' => 'internal:/admin/content/media',
    ),
  ));
  $shortcut
    ->save();
  $shortcut = Shortcut::create(array(
    'shortcut_set' => 'default',
    'title' => t('Taxonomy'),
    'weight' => 3,
    'link' => array(
      'uri' => 'internal:/admin/structure/taxonomy',
    ),
  ));
  $shortcut
    ->save();
  $shortcut = Shortcut::create(array(
    'shortcut_set' => 'default',
    'title' => t('Permissions'),
    'weight' => 4,
    'link' => array(
      'uri' => 'internal:/admin/people/permissions',
    ),
  ));
  $shortcut
    ->save();

  // Allow all users to use search.
  user_role_grant_permissions(RoleInterface::ANONYMOUS_ID, array(
    'search content',
  ));
  user_role_grant_permissions(RoleInterface::AUTHENTICATED_ID, array(
    'search content',
  ));

  // 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::entityDefinitionUpdateManager()
    ->applyUpdates();

  // Activate Varbase Bootstrap Paragraphs Settings in the active config.
  if (\Drupal::moduleHandler()
    ->moduleExists('varbase_bootstrap_paragraphs')) {
    $profile_path = drupal_get_path('profile', 'varbase') . '/config/optional/';
    $config_path = $profile_path . 'varbase_bootstrap_paragraphs.settings.yml';
    $config_content = file_get_contents($config_path);
    $config_data = (array) Yaml::parse($config_content);
    $config_factory = \Drupal::configFactory()
      ->getEditable('varbase_bootstrap_paragraphs.settings');
    $config_factory
      ->setData($config_data)
      ->save(TRUE);
  }

  // If Varbase Tour were enabled then redirect to the homepage with activ tour.
  if (isset($GLOBALS['homepage_with_varbase_tour']) && $GLOBALS['homepage_with_varbase_tour'] == TRUE) {
    $homepage_with_tour = "/?tour";
    $response = new Symfony\Component\HttpFoundation\RedirectResponse($homepage_with_tour);
    $response
      ->send();
    exit;
    include_once __DIR__ . '/../../core/includes/install.core.inc';
    include_once __DIR__ . '/../../core/includes/install.inc';
    install_goto('?tour');
  }
}

/**
 * Uninstall not needed feature modules as they had been moved to the profile.
 *
 * - varbase_user: Provide User related configuration. configs moved to profile.
 * - varbase_site: Provides site components. configs moved to profile.
 */
function varbase_update_8001() {

  // Read the extension configuration.
  $modules_data = \Drupal::config('core.extension')
    ->get('module');

  // Unset the varbase_user feature module.
  if (isset($modules_data['varbase_user'])) {
    unset($modules_data['varbase_user']);
  }

  // Unset the varbase_site feature module.
  if (isset($modules_data['varbase_site'])) {
    unset($modules_data['varbase_site']);
  }

  // Save the configuration.
  \Drupal::configFactory()
    ->getEditable('core.extension')
    ->set('module', $modules_data)
    ->save();
}

/**
 * Uninstall Layout plugin, then enables Layout Discovery.
 */
function varbase_update_8002() {
  if (\Drupal::moduleHandler()
    ->moduleExists('layout_plugin')) {
    \Drupal::service('module_installer')
      ->uninstall([
      'layout_plugin',
    ], FALSE);
  }
  if (!\Drupal::moduleHandler()
    ->moduleExists('layout_discovery')) {
    \Drupal::service('module_installer')
      ->install([
      'layout_discovery',
    ], FALSE);
  }
}

/**
 * Disable display suite switch view mode module.
 */
function varbase_update_8003() {
  if (\Drupal::moduleHandler()
    ->moduleExists('ds_switch_view_mode')) {
    \Drupal::service('module_installer')
      ->uninstall([
      'ds_switch_view_mode',
    ], FALSE);
  }
}

/**
 * Enable node edit protection module.
 */
function varbase_update_8004() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('node_edit_protection')) {
    \Drupal::service('module_installer')
      ->install([
      'node_edit_protection',
    ], FALSE);
  }
}

/**
 * Enable Settings Tray module.
 */
function varbase_update_8005() {

  // Read the extension configuration.
  $modules_data = \Drupal::config('core.extension')
    ->get('module');

  // Unset the outside_in module.
  if (isset($modules_data['outside_in'])) {
    unset($modules_data['outside_in']);
  }

  // Save the configuration.
  \Drupal::configFactory()
    ->getEditable('core.extension')
    ->set('module', $modules_data)
    ->save();
  if (!\Drupal::moduleHandler()
    ->moduleExists('settings_tray')) {
    \Drupal::service('module_installer')
      ->install([
      'settings_tray',
    ], FALSE);
  }
}

/**
 * Enable content lock module.
 */
function varbase_update_8006() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('content_lock')) {
    \Drupal::service('module_installer')
      ->install([
      'content_lock',
    ], FALSE);
  }
}

/**
 * Enable content lock timeout module.
 */
function varbase_update_8007() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('content_lock_timeout')) {
    \Drupal::service('module_installer')
      ->install([
      'content_lock_timeout',
    ], FALSE);
  }
}

/**
 * Enable entityqueue module.
 */
function varbase_update_8008() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('entityqueue')) {
    \Drupal::service('module_installer')
      ->install([
      'entityqueue',
    ], FALSE);
  }
}

/**
 * Enable Crop API module.
 */
function varbase_update_8009() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('crop')) {
    \Drupal::service('module_installer')
      ->install([
      'crop',
    ], FALSE);
  }
}

/**
 * Enable focal point module.
 */
function varbase_update_8010() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('focal_point')) {
    \Drupal::service('module_installer')
      ->install([
      'focal_point',
    ], FALSE);
  }
}

/**
 * Enable mail system module.
 */
function varbase_update_8011() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('mailsystem')) {
    \Drupal::service('module_installer')
      ->install([
      'mailsystem',
    ], FALSE);
  }
}

/**
 * Enable SMTP Authentication Support module.
 */
function varbase_update_8012() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('smtp')) {
    \Drupal::service('module_installer')
      ->install([
      'smtp',
    ], FALSE);
  }
}

/**
 * Enable DropzoneJS module.
 */
function varbase_update_8013() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('dropzonejs')) {
    \Drupal::service('module_installer')
      ->install([
      'dropzonejs',
    ], FALSE);
  }
}

/**
 * Enable DropzoneJS entity browser widget module.
 */
function varbase_update_8014() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('dropzonejs_eb_widget')) {
    \Drupal::service('module_installer')
      ->install([
      'dropzonejs_eb_widget',
    ], FALSE);
  }
}

/**
 * Enable Enhanced Entity Browser module.
 */
function varbase_update_8015() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('entity_browser_enhanced')) {
    \Drupal::service('module_installer')
      ->install([
      'entity_browser_enhanced',
    ], FALSE);
  }
}

/**
 * Enable Image Optimize (or ImageAPI Optimize) module.
 */
function varbase_update_8016() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('imageapi_optimize')) {
    \Drupal::service('module_installer')
      ->install([
      'imageapi_optimize',
    ], FALSE);
  }
}

/**
 * Enable Libraries module.
 */
function varbase_update_8017() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('libraries')) {
    \Drupal::service('module_installer')
      ->install([
      'libraries',
    ], FALSE);
  }
}

/**
 * Enable ACE Editor module.
 */
function varbase_update_8018() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('ace_editor')) {
    \Drupal::service('module_installer')
      ->install([
      'ace_editor',
    ], FALSE);
  }
}

/**
 * Enable Menu Block module.
 */
function varbase_update_8019() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('menu_block')) {
    \Drupal::service('module_installer')
      ->install([
      'menu_block',
    ], FALSE);
  }
}

/**
 * Enable Persistent Login module.
 */
function varbase_update_8020() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('persistent_login')) {
    \Drupal::service('module_installer')
      ->install([
      'persistent_login',
    ], FALSE);
  }
}

/**
 * Enable Rabbit Hole module.
 */
function varbase_update_8021() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('rabbit_hole')) {
    \Drupal::service('module_installer')
      ->install([
      'rabbit_hole',
    ], FALSE);
  }
}

/**
 * Enable Rabbit Hole nodes module.
 */
function varbase_update_8022() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('rh_node')) {
    \Drupal::service('module_installer')
      ->install([
      'rh_node',
    ], FALSE);
  }
}

/**
 * Enable Rabbit Hole taxonomy module.
 */
function varbase_update_8023() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('rh_taxonomy')) {
    \Drupal::service('module_installer')
      ->install([
      'rh_taxonomy',
    ], FALSE);
  }
}

/**
 * Enable Fast 404 module.
 */
function varbase_update_8024() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('fast404')) {
    \Drupal::service('module_installer')
      ->install([
      'fast404',
    ], FALSE);
  }
}

/**
 * Enable Views Bootstrap module.
 */
function varbase_update_8025() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('views_bootstrap')) {
    \Drupal::service('module_installer')
      ->install([
      'views_bootstrap',
    ], FALSE);
  }
}

/**
 * Enable Varbase Security module.
 */
function varbase_update_8026() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('varbase_security')) {
    \Drupal::service('module_installer')
      ->install([
      'varbase_security',
    ], FALSE);
  }
}

/**
 * Enable Varbase SEO module.
 */
function varbase_update_8027() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('varbase_seo')) {
    \Drupal::service('module_installer')
      ->install([
      'varbase_seo',
    ], FALSE);
  }
}

/**
 * Enable Max length module.
 */
function varbase_update_8028() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('maxlength')) {
    \Drupal::service('module_installer')
      ->install([
      'maxlength',
    ], FALSE);
  }
}

/**
 * Enable Menu position module.
 */
function varbase_update_8029() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('menu_position')) {
    \Drupal::service('module_installer')
      ->install([
      'menu_position',
    ], FALSE);
  }
}

/**
 * Enable Better Exposed Filters module.
 */
function varbase_update_8030() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('better_exposed_filters')) {
    \Drupal::service('module_installer')
      ->install([
      'better_exposed_filters',
    ], FALSE);
  }
}

/**
 * Enable Link Attributes widget module.
 */
function varbase_update_8031() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('link_attributes')) {
    \Drupal::service('module_installer')
      ->install([
      'link_attributes',
    ], FALSE);
  }
}

/**
 * Add Field Description.
 */
function varbase_update_8032() {
  $profile_path = drupal_get_path('profile', 'varbase') . '/config/install/';
  $configs['field.storage.block_content.field_description'] = $profile_path . 'field.storage.block_content.field_description.yml';
  $configs['field.storage.node.field_description'] = $profile_path . 'field.storage.node.field_description.yml';
  $configs['field.storage.taxonomy_term.field_description'] = $profile_path . 'field.storage.taxonomy_term.field_description.yml';
  foreach ($configs as $name => $config_path) {
    $data = (array) Yaml::parse($config_path);
    $config = \Drupal::configFactory()
      ->getEditable($name);
    $config
      ->setData($data)
      ->save(TRUE);
  }
}

/**
 * Enabled "Create new revision" for Basic block.
 */
function varbase_update_8033() {
  $profile_path = drupal_get_path('profile', 'varbase') . '/config/install/';
  $config_path = $profile_path . 'block_content.type.basic.yml';
  $data = (array) Yaml::parse($config_path);
  $config = \Drupal::configFactory()
    ->getEditable('block_content.type.basic');
  $config
    ->setData($data)
    ->save(TRUE);
}

/**
 * Enable Config Filter module.
 */
function varbase_update_8034() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('config_filter')) {
    \Drupal::service('module_installer')
      ->install([
      'config_filter',
    ], FALSE);
  }
}

/**
 * Enable Config Ignore module.
 */
function varbase_update_8035() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('config_ignore')) {
    \Drupal::service('module_installer')
      ->install([
      'config_ignore',
    ], FALSE);
  }
}

/**
 * Init config settings for which general config to ignore with config ignore.
 */
function varbase_update_8036() {
  $profile_path = drupal_get_path('profile', 'varbase') . '/config/install/';
  $config_path = $profile_path . 'config_ignore.settings.yml';
  $data = (array) Yaml::parse($config_path);
  $config = \Drupal::configFactory()
    ->getEditable('config_ignore.settings');
  $config
    ->setData($data)
    ->save(TRUE);
}

/**
 * Enable Entityqueue Form Widget module.
 */
function varbase_update_8037() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('entityqueue_form_widget')) {
    \Drupal::service('module_installer')
      ->install([
      'entityqueue_form_widget',
    ], FALSE);
  }
}

/**
 * Enable Entity clone module.
 */
function varbase_update_8038() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('entity_clone')) {
    \Drupal::service('module_installer')
      ->install([
      'entity_clone',
    ], FALSE);
  }
}

/**
 * Enable Autocomplete Deluxe module.
 */
function varbase_update_8039() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('autocomplete_deluxe')) {
    \Drupal::service('module_installer')
      ->install([
      'autocomplete_deluxe',
    ], FALSE);
  }
}

/**
 * Add Color Configs to the Available styles for Varbase Bootstrap Paragraphs.
 */
function varbase_update_8040() {

  // Activate Varbase Bootstrap Paragraphs Settings in the active config.
  if (\Drupal::moduleHandler()
    ->moduleExists('varbase_bootstrap_paragraphs')) {
    $profile_path = drupal_get_path('profile', 'varbase') . '/config/optional/';
    $config_path = $profile_path . 'varbase_bootstrap_paragraphs.settings.yml';
    $config_content = file_get_contents($config_path);
    $config_data = (array) Yaml::parse($config_content);
    $config_factory = \Drupal::configFactory()
      ->getEditable('varbase_bootstrap_paragraphs.settings');
    $config_factory
      ->setData($config_data)
      ->save(TRUE);
  }
}

/**
 * Enable Varbase Tour module.
 */
function varbase_update_8041() {
  if (!\Drupal::moduleHandler()
    ->moduleExists('varbase_tour')) {
    \Drupal::service('module_installer')
      ->install([
      'varbase_tour',
    ], FALSE);
  }
}

/**
 * Enable Settings Tray module as outside_in had been renamed settings_tray.
 */
function varbase_update_8042() {

  // Read the extension configuration.
  $modules_data = \Drupal::config('core.extension')
    ->get('module');

  // Unset the outside_in module.
  if (isset($modules_data['outside_in'])) {
    unset($modules_data['outside_in']);
  }

  // Save the configuration.
  \Drupal::configFactory()
    ->getEditable('core.extension')
    ->set('module', $modules_data)
    ->save();
  if (!\Drupal::moduleHandler()
    ->moduleExists('settings_tray')) {
    \Drupal::service('module_installer')
      ->install([
      'settings_tray',
    ], FALSE);
  }
}

Functions

Namesort descending Description
varbase_install Implements hook_install().
varbase_update_8001 Uninstall not needed feature modules as they had been moved to the profile.
varbase_update_8002 Uninstall Layout plugin, then enables Layout Discovery.
varbase_update_8003 Disable display suite switch view mode module.
varbase_update_8004 Enable node edit protection module.
varbase_update_8005 Enable Settings Tray module.
varbase_update_8006 Enable content lock module.
varbase_update_8007 Enable content lock timeout module.
varbase_update_8008 Enable entityqueue module.
varbase_update_8009 Enable Crop API module.
varbase_update_8010 Enable focal point module.
varbase_update_8011 Enable mail system module.
varbase_update_8012 Enable SMTP Authentication Support module.
varbase_update_8013 Enable DropzoneJS module.
varbase_update_8014 Enable DropzoneJS entity browser widget module.
varbase_update_8015 Enable Enhanced Entity Browser module.
varbase_update_8016 Enable Image Optimize (or ImageAPI Optimize) module.
varbase_update_8017 Enable Libraries module.
varbase_update_8018 Enable ACE Editor module.
varbase_update_8019 Enable Menu Block module.
varbase_update_8020 Enable Persistent Login module.
varbase_update_8021 Enable Rabbit Hole module.
varbase_update_8022 Enable Rabbit Hole nodes module.
varbase_update_8023 Enable Rabbit Hole taxonomy module.
varbase_update_8024 Enable Fast 404 module.
varbase_update_8025 Enable Views Bootstrap module.
varbase_update_8026 Enable Varbase Security module.
varbase_update_8027 Enable Varbase SEO module.
varbase_update_8028 Enable Max length module.
varbase_update_8029 Enable Menu position module.
varbase_update_8030 Enable Better Exposed Filters module.
varbase_update_8031 Enable Link Attributes widget module.
varbase_update_8032 Add Field Description.
varbase_update_8033 Enabled "Create new revision" for Basic block.
varbase_update_8034 Enable Config Filter module.
varbase_update_8035 Enable Config Ignore module.
varbase_update_8036 Init config settings for which general config to ignore with config ignore.
varbase_update_8037 Enable Entityqueue Form Widget module.
varbase_update_8038 Enable Entity clone module.
varbase_update_8039 Enable Autocomplete Deluxe module.
varbase_update_8040 Add Color Configs to the Available styles for Varbase Bootstrap Paragraphs.
varbase_update_8041 Enable Varbase Tour module.
varbase_update_8042 Enable Settings Tray module as outside_in had been renamed settings_tray.