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