You are here

search_api_federated_solr.install in Search API Federated Solr 8.3

Contains install and update hooks for the Federated Solr Search API Module.

File

search_api_federated_solr.install
View source
<?php

/**
 * @file
 * Contains install and update hooks for the Federated Solr Search API Module.
 */
use Drupal\Core\Url;

/**
 * Uninstalls dependencies.
 */
function search_api_federated_solr_uninstall() {
  $entity = \Drupal::entityTypeManager()
    ->getStorage('image_style')
    ->load('search_api_federated_solr_image');
  if (!empty($entity)) {
    $entity
      ->delete();
  }
}

/**
 * Sets default values for autocomplete-related config.
 */
function search_api_federated_solr_update_8001(&$sandbox) {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory
    ->getEditable('search_api_federated_solr.search_app.settings');

  // Set the autocomplete config defaults.
  $config
    ->set('autocomplete.isEnabled', 0);
  $config
    ->set('autocomplete.url', '');
  $config
    ->set('autocomplete.appendWildcard', 0);
  $config
    ->set('autocomplete.suggestionRows', '');
  $config
    ->set('autocomplete.mode', 'result');
  $config
    ->set('autocomplete.result.titleText', '');
  $config
    ->set('autocomplete.result.hideDirectionsText', 0);

  // Set the hidden facet/filter defaults.
  $config
    ->set('facet.site_name.is_hidden', false);
  $config
    ->set('facet.federated_terms.is_hidden', false);
  $config
    ->set('facet.federated_type.is_hidden', false);
  $config
    ->set('filter.federated_date.is_hidden', false);

  // Set the index defaults for property flags.
  $config
    ->set('index.has_federated_date_property', false);
  $config
    ->set('index.has_federated_term_property', false);
  $config
    ->set('index.has_federated_type_property', false);
  $config
    ->save(TRUE);
}

/**
 * Configures the search proxy (enabled) and app + block autocomplete proxies (disabled).
 */
function search_api_federated_solr_update_8002(&$sandbox) {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory
    ->getEditable('search_api_federated_solr.search_app.settings');

  // Enable the proxy by default.
  $config
    ->set('proxy.isDisabled', 0);

  // Set the autocomplete proxy config.
  // Disable the autocomplete proxy to respect current endpoint?
  $config
    ->set('autocomplete.proxy.isDisabled', 0);
  if ($config
    ->get('autocomplete.isEnabled')) {

    // If autocomplete enabled, respect current url by setting as direct url.
    $direct_url = $config
      ->get('autocomplete.url');
    $config
      ->set('autocomplete.proxy.isDisabled', 1);
    $config
      ->set('autocomplete.direct.url', $direct_url);
  }

  // Set autocomplete basic auth config.
  $config
    ->set('autocomplete.username', '');
  $config
    ->set('autocomplete.password', '');
  $config
    ->set('autocomplete.use_search_app_creds', 0);
  $config
    ->set('index.query_fields', []);

  // Remove legacy stored urls as they are now computed.
  $config
    ->clear('autocomplete.url');
  $config
    ->clear('autocomplete.proxy.url');
  $config
    ->clear('index.server_url');
  $config
    ->clear('proxy.url');
  $config
    ->save(TRUE);

  // Configure block autocomplete proxy.
  if ($block = \Drupal\block\Entity\Block::load('federatedsearchpageformblock')) {
    $block_config = $config_factory
      ->getEditable('block.block.federatedsearchpageformblock');
    $block_config
      ->set('settings.autocomplete.proxyIsDisabled', 0);

    // Add the string to be replaced with the query value to proxy url.
    // Default direct url to server url + params.
    if ($block_config
      ->get('settings.autocomplete.isEnabled')) {

      // If autocomplete enabled, respect current url by setting as direct url.
      $block_direct_url = $block_config
        ->get('settings.autocomplete.url');
      $block_config
        ->set('settings.autocomplete.proxyIsDisabled', 1);
      $block_config
        ->set('settings.autocomplete.directUrl', $block_direct_url);
    }

    // Remove legacy stored autocomplete.url as it is now computed.
    $block_config
      ->clear('settings.autocomplete.url');
    $block_config
      ->save(TRUE);
  }
}

/**
 * Configures debug (disabled) and query field validation (enabled) for the proxy.
 */
function search_api_federated_solr_update_8003(&$sandbox) {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory
    ->getEditable('search_api_federated_solr.search_app.settings');

  // Enable the proxy by default.
  $config
    ->set('proxy.debug', FALSE);

  // Enable validating custom query fields against the schema by default.
  $config
    ->set('index.validate_query_fields', TRUE);
  $config
    ->save(TRUE);
}

/**
 * Configures the restricted site list..
 */
function search_api_federated_solr_update_8004(&$sandbox) {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory
    ->getEditable('search_api_federated_solr.search_app.settings');

  // Set the new options.
  $config
    ->set('facet.site_name.allowed_sites', []);
  $config
    ->set('facet.site_name.site_list', []);
  $config
    ->save(TRUE);
}

Functions

Namesort descending Description
search_api_federated_solr_uninstall Uninstalls dependencies.
search_api_federated_solr_update_8001 Sets default values for autocomplete-related config.
search_api_federated_solr_update_8002 Configures the search proxy (enabled) and app + block autocomplete proxies (disabled).
search_api_federated_solr_update_8003 Configures debug (disabled) and query field validation (enabled) for the proxy.
search_api_federated_solr_update_8004 Configures the restricted site list..