You are here

function search_api_federated_solr_search_block_form_submit in Search API Federated Solr 7

Same name and namespace in other branches
  1. 7.3 search_api_federated_solr.module \search_api_federated_solr_search_block_form_submit()
  2. 7.2 search_api_federated_solr.module \search_api_federated_solr_search_block_form_submit()

Create custom search form handler.

File

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

Code

function search_api_federated_solr_search_block_form_submit($form, &$form_state) {
  $search_path = variable_get('search_api_federated_solr_path', 'search-app');

  // Define default search app qs params (i.e. search term).
  $qs_params = [
    'search' => $form_state['values']['q'],
  ];

  // If there is a site name and it should be set by default, add it as qs param.
  $is_site_name_property = variable_get('search_api_federated_solr_has_site_name_property');
  $set_default_site = variable_get('search_api_federated_solr_set_search_site');
  if ($is_site_name_property == 'true' && $set_default_site) {
    $search_index = variable_get('search_api_federated_solr_search_index');

    // Get the index configuration object.
    $index = search_api_index_load($search_index);

    // Get the domain machine name from Domain Access.
    if (function_exists('domain_get_domain')) {
      $domain = domain_get_domain()['machine_name'];
    }

    // If the site is using Domain Access and there's an altered site name.
    if (isset($domain) && !empty($index->options['data_alter_callbacks']['site_name']['settings']['domain'][$domain])) {

      // Lookup the altered site name matching the domain and set it.
      $domain_site_name = $index->options['data_alter_callbacks']['site_name']['settings']['domain'][$domain];
      $qs_params['sm_site_name'] = $domain_site_name;
    }
    elseif (!empty($index->options['data_alter_callbacks']['site_name']['settings']['site_name'])) {
      $site_name = $index->options['data_alter_callbacks']['site_name']['settings']['site_name'];
      $qs_params['sm_site_name'] = $site_name;
    }
    else {
      $qs_params['sm_site_name'] = variable_get('site_name');
    }
  }

  // Redirect to the search app path with necessary qs params.
  drupal_goto($search_path, [
    'query' => $qs_params,
  ]);
}