acquia_cms_search-1.3.0/acquia_cms_search.install

acquia_cms_search.install
<?php

/**
 * @file
 * Contains installation routines for Acquia CMS Search.
 */

use Drupal\node\Entity\NodeType;

/**
 * Implements hook_install().
 */
function acquia_cms_search_install($is_syncing) {
  if (!$is_syncing) {
    // Add permission to the following roles,
    // so that search autocomplete functionality is accessible.
    // This will also fix search box design issue if site studio being use.
    user_role_grant_permissions('anonymous', [
      'use search_api_autocomplete for search',
    ]);
    user_role_grant_permissions('authenticated', [
      'use search_api_autocomplete for search',
    ]);

    // Retroactively enable indexing for any content types that existed before
    // this module was installed.
    $node_types = NodeType::loadMultiple();
    array_walk($node_types, 'acquia_cms_search_node_type_insert');
    $enabled_modules = \Drupal::service('module_handler')->getModuleList();
    $enabled_modules = array_keys($enabled_modules);
    _acquia_cms_search_add_category_facet($enabled_modules);
  }
}

/**
 * Implements hook_module_preinstall().
 */
function acquia_cms_search_module_preinstall($module) {
  \Drupal::service('acquia_cms_common.utility')->setModulePreinstallTriggered($module);
}

/**
 * Added enforced dependency in site studio templates for Acquia CMS Search.
 *
 * Implements hook_update_N().
 */
function acquia_cms_search_update_8001() {
  $moduleHandler = \Drupal::service('module_handler');
  if ($moduleHandler->moduleExists('acquia_cms_site_studio')) {
    $module_path = \Drupal::service('extension.list.module')->getPath('acquia_cms_search');
    $directory = $module_path . '/config/pack_acquia_cms_search';
    if (is_dir($directory)) {
      $files = \Drupal::service('file_system')->scanDirectory($directory, '/.*\.yml$/');
      foreach ($files as $file) {
        $sitestudio_template = \Drupal::configFactory()->getEditable($file->name);
        if ($sitestudio_template && is_null($sitestudio_template->get('dependencies.enforced.module')) && $sitestudio_template->get('status')) {
          $sitestudio_template->set('dependencies.enforced.module', [
            'acquia_cms_search',
            'acquia_cms_site_studio',
          ]);
          $sitestudio_template->save(TRUE);
        }
      }
    }
  }
}

/**
 * Deletes the Site Studio configurations containing invalid data.
 *
 * Implements hook_update_N().
 */
function acquia_cms_search_update_8002() {
  $moduleHandler = \Drupal::service('module_handler');
  if ($moduleHandler->moduleExists('acquia_cms_site_studio')) {
    $module_path = \Drupal::service('extension.list.module')->getPath('acquia_cms_search');
    $directories = [
      $module_path . '/config/pack_acquia_cms_search',
    ];
    foreach ($directories as $directory) {
      if (is_dir($directory)) {
        $files = \Drupal::service('file_system')->scanDirectory($directory, '/.*\.yml$/');
        foreach ($files as $file) {
          $sitestudio_template = \Drupal::configFactory()->getEditable($file->name);
          if ($sitestudio_template && !$sitestudio_template->isNew() && !$sitestudio_template->get("uuid") && !$sitestudio_template->get("id")) {
            $sitestudio_template->delete();
            \Drupal::logger("acquia_cms_search")->notice(
              sprintf("The configuration `%s` deleted containing invalid data.", $file->name)
            );
          }
        }
      }
    }
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc