You are here

public function FederatedSearchPageFormBlock::blockSubmit in Search API Federated Solr 8.2

Same name and namespace in other branches
  1. 8.3 src/Plugin/Block/FederatedSearchPageFormBlock.php \Drupal\search_api_federated_solr\Plugin\Block\FederatedSearchPageFormBlock::blockSubmit()
  2. 4.x src/Plugin/Block/FederatedSearchPageFormBlock.php \Drupal\search_api_federated_solr\Plugin\Block\FederatedSearchPageFormBlock::blockSubmit()

Adds block type-specific submission handling for the block form.

Note that this method takes the form structure and form state for the full block configuration form as arguments, not just the elements defined in BlockPluginInterface::blockForm().

Parameters

array $form: The form definition array for the full block configuration form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Overrides BlockPluginTrait::blockSubmit

See also

\Drupal\Core\Block\BlockPluginInterface::blockForm()

\Drupal\Core\Block\BlockPluginInterface::blockValidate()

File

src/Plugin/Block/FederatedSearchPageFormBlock.php, line 362

Class

FederatedSearchPageFormBlock
Provides a "Federated Search Page Form" block.

Namespace

Drupal\search_api_federated_solr\Plugin\Block

Code

public function blockSubmit($form, FormStateInterface $form_state) {
  parent::blockSubmit($form, $form_state);
  $values = $form_state
    ->getValues();

  // Define return object.
  $autocomplete = [];

  // Set autocomplete options.
  $autocomplete_is_enabled = $values['autocomplete']['autocomplete_is_enabled'];

  // If enabled, set the autocomplete options.
  if ($autocomplete_is_enabled) {

    // Cache form values that we'll use more than once.
    $autocomplete_mode = $values['autocomplete']['autocomplete_mode'];

    // Default to the form values
    $username = $values['autocomplete']['direct']['basic_auth']['username'];
    $password = $values['autocomplete']['direct']['basic_auth']['password'];
    $use_search_app_creds = $values['autocomplete']['direct']['basic_auth']['use_search_app_creds'];

    // Add basic auth credentials
    if ($use_search_app_creds) {
      $app_config = \Drupal::config('search_api_federated_solr.search_app.settings');
      $username = $app_config
        ->get('index.username');
      $password = $app_config
        ->get('index.password');
    }

    // Set the actual autocomplete config options.
    $autocomplete['isEnabled'] = $autocomplete_is_enabled;
    $autocomplete['proxyIsDisabled'] = $values['autocomplete']['disable_query_proxy'];
    $autocomplete['directUrl'] = $autocomplete['proxyIsDisabled'] ? $values['autocomplete']['direct']['autocomplete_url'] : '';
    $autocomplete['use_search_app_creds'] = $use_search_app_creds;
    if ($username) {
      $autocomplete['username'] = $username;
    }
    if ($password) {
      $autocomplete['password'] = $password;
    }
    if ($username && $password) {
      $autocomplete['userpass'] = base64_encode($username . ':' . $password);
    }
    if ($values['autocomplete']['autocomplete_is_append_wildcard']) {
      $autocomplete['appendWildcard'] = $values['autocomplete']['autocomplete_is_append_wildcard'];
    }
    if ($values['autocomplete']['autocomplete_suggestion_rows']) {
      $autocomplete['suggestionRows'] = $values['autocomplete']['autocomplete_suggestion_rows'];
    }
    if ($values['autocomplete']['autocomplete_num_chars']) {
      $autocomplete['numChars'] = $values['autocomplete']['autocomplete_num_chars'];
    }
    if ($autocomplete_mode) {
      $autocomplete['mode'] = $autocomplete_mode;
      if ($values['autocomplete']['autocomplete_mode_title_text']) {
        $autocomplete[$autocomplete_mode]['titleText'] = $values['autocomplete']['autocomplete_mode_title_text'];
      }
      if ($values['autocomplete']['autocomplete_mode_hide_directions']) {
        $autocomplete[$autocomplete_mode]['hideDirectionsText'] = $values['autocomplete']['autocomplete_mode_hide_directions'];
      }
    }
  }
  $this->configuration['autocomplete'] = $autocomplete;
}