You are here

public function SearchApiStandard::submitOptionsForm in Search API 8

Handle any special handling on the validate form.

Overrides ArgumentPluginBase::submitOptionsForm

File

src/Plugin/views/argument/SearchApiStandard.php, line 122

Class

SearchApiStandard
Defines a contextual filter for applying Search API conditions.

Namespace

Drupal\search_api\Plugin\views\argument

Code

public function submitOptionsForm(&$form, FormStateInterface $form_state) {
  $option_values =& $form_state
    ->getValue('options');
  if (empty($option_values)) {
    return;
  }

  // Let the plugins make submit modifications if necessary.
  if (!empty($option_values['default_argument_type'])) {
    $default_id = $option_values['default_argument_type'];
    $plugin = $this
      ->getPlugin('argument_default', $default_id);
    if ($plugin) {
      $options =& $option_values['argument_default'][$default_id];
      $plugin
        ->submitOptionsForm($form['argument_default'][$default_id], $form_state, $options);

      // Copy the now submitted options to their final resting place so they get saved.
      $option_values['default_argument_options'] = $options;
    }
  }

  // If the 'Specify validation criteria' checkbox is not checked, reset the
  // validation options.
  if (empty($option_values['specify_validation'])) {
    $option_values['validate']['type'] = 'none';

    // We need to keep the empty array of options for the 'None' plugin as
    // it will be needed later.
    $option_values['validate']['options'] = [
      'none' => [],
    ];
    $option_values['validate']['fail'] = 'not found';
  }
  if (!empty($option_values['validate']['type'])) {
    $sanitized_id = $option_values['validate']['type'];

    // Correct ID for js sanitized version.
    $option_values['validate']['type'] = $validate_id = static::decodeValidatorId($sanitized_id);
    $plugin = $this
      ->getPlugin('argument_validator', $validate_id);
    if ($plugin) {
      $options =& $option_values['validate']['options'][$sanitized_id];
      $plugin
        ->submitOptionsForm($form['validate']['options'][$sanitized_id], $form_state, $options);

      // Copy the now submitted options to their final resting place so they get saved.
      $option_values['validate_options'] = $options;
    }
  }

  // Clear out the content of title if it's not enabled.
  if (empty($option_values['title_enable'])) {
    $option_values['title'] = '';
  }
}