You are here

function search_api_federated_solr_map_variables in Search API Federated Solr 7.2

Same name and namespace in other branches
  1. 7.3 search_api_federated_solr.module \search_api_federated_solr_map_variables()
1 call to search_api_federated_solr_map_variables()
search_api_federated_solr_block_variables in ./search_api_federated_solr.module
Gets and transforms D7 variables for use with the JS code.

File

./search_api_federated_solr.module, line 776
search_api_federated_solr.module Contains hook implementations for the Federated Solr Search API Module.

Code

function search_api_federated_solr_map_variables($variables) {
  $mode = $variables['search_api_federated_solr_autocomplete_block_mode'];
  $proxy_disabled = $variables['search_api_federated_solr_autocomplete_block_disable_query_proxy'];
  $direct_url = $variables['search_api_federated_solr_autocomplete_block_url'];
  if ($proxy_disabled) {

    // Default to provided username and password.
    $username = $variables['search_api_federated_solr_autocomplete_block_username'];
    $password = $variables['search_api_federated_solr_autocomplete_block_password'];

    // If we should use search app credentials, get them.
    $use_search_app_creds = $variables['search_api_federated_solr_autocomplete_block_use_search_app_creds'];
    if ($use_search_app_creds) {
      $username = variable_get('search_api_federated_solr_search_index_basic_auth_username');
      $password = variable_get('search_api_federated_solr_search_index_basic_auth_password');
    }

    // Set encoded credentials if provided.
    if ($username && $password) {

      // Set creds.
      $autocomplete['userpass'] = base64_encode($username . ':' . $password);
    }

    // Supply the necessary search term + format params for the solr server endpoint.
    $params = '?q=[val]&wt=json';
  }
  else {

    // Supply the necessary search term + format params for the proxy endpoint.
    $params = '?search=[val]&wt=json';

    // Remove direct url value if the proxy is enabled.
    $direct_url = '';

    // @TODO: Add the sitename restriction logic from the proxy controller.
  }

  // Do not append params to directly supplied urls (i.e. views endpoints)
  if ($direct_url) {
    $params = '';
  }

  // Determine the autocomplete endpoint based on block config.
  $url = search_api_federated_solr_get_endpoint_url($proxy_disabled, $direct_url, $params);

  // Set autocomplete variables.
  $autocomplete['url'] = $url;
  $autocomplete['directUrl'] = $direct_url;
  $autocomplete['isEnabled'] = $variables['search_api_federated_solr_autocomplete_block_is_enabled'];
  $autocomplete['appendWildcard'] = $variables['search_api_federated_solr_autocomplete_block_is_append_wildcard'];
  if ($variables['search_api_federated_solr_autocomplete_block_num_chars']) {
    $autocomplete['numChars'] = $variables['search_api_federated_solr_autocomplete_block_num_chars'];
  }
  if ($variables['search_api_federated_solr_autocomplete_block_suggestion_rows']) {
    $autocomplete['suggestionRows'] = $variables['search_api_federated_solr_autocomplete_block_suggestion_rows'];
  }
  $autocomplete['mode'] = $mode;
  $autocomplete['result'] = [];
  $title_text = $variables['search_api_federated_solr_autocomplete_block_' . $mode . '_title_text'] ? $variables['search_api_federated_solr_autocomplete_block_' . $mode . '_title_text'] : "What are you looking for?";
  $autocomplete['result']['titleText'] = $title_text;
  $autocomplete['result']['hideDirectionsText'] = $variables['search_api_federated_solr_autocomplete_block_' . $mode . '_hide_directions_text'];

  // Set the constraints for allowed sites.
  if ($allowed_sites = variable_get('search_api_federated_solr_allowed_sites')) {
    $list = [];
    $sites = array_keys(array_filter($allowed_sites));
    foreach ($sites as $site) {
      $list[] = '"' . $site . '"';
    }
    $autocomplete['sm_site_name'] = '(' . implode(' OR ', $list) . ')';
  }
  return $autocomplete;
}