function search_api_federated_solr_form_search_api_federated_solr_search_app_settings_alter in Search API Federated Solr 8
Implements hook_form_FORM_ID_alter() for search_api_federated_solr_search_settings_form.
Validates whether or not the search app's chosen index has a site_name property and alters the search app settings form accordingly.
See also
\Drupal\search_api_federated_solr\Form\SearchApiFederatedSolrSearchAppSettingsForm
File
- ./
search_api_federated_solr.module, line 126 - Contains hook implementations for the Federated Solr Search API Module.
Code
function search_api_federated_solr_form_search_api_federated_solr_search_app_settings_alter(&$form, FormStateInterface $form_state) {
if ($search_index_id = $form['search_index']['#default_value']) {
$config = \Drupal::configFactory()
->getEditable('search_api_federated_solr.search_app.settings');
$index_config = \Drupal::config('search_api.index.' . $search_index_id);
// Determine if the index has a site name property, which could have been
// added / removed since last form load.
$site_name_property = $index_config
->get('field_settings.site_name.configuration.site_name');
$config
->set('index.has_site_name_property', $site_name_property ? TRUE : FALSE);
// If the index doesn't have a site name property.
if (!$site_name_property) {
// Reset the search app config options.
$form['site_name_property']['#value'] = '';
$form['set_search_site']['#default_value'] = 0;
$config
->set('facet.site_name.set_default', 0);
}
else {
// Ensure the hidden form field reflects lack of site name property.
$form['site_name_property']['#value'] = 'true';
}
$config
->save();
}
}