You are here

function acquia_search_multi_subs_environment_edit_form_submit in Acquia Search Multiple Indexes 7

Form submission handler for apachesolr_environment_edit_form().

Adds the values to the environment variable array so Acquia Search will work.

See also

acquia_search_multi_subs_get_settings_form()

acquia_search_multi_subs_environment_edit_form_validate()

1 string reference to 'acquia_search_multi_subs_environment_edit_form_submit'
acquia_search_multi_subs_form_apachesolr_environment_edit_form_alter in lib/Drupal/Apachesolr/acquia_search_multi_subs.apachesolr.inc
Implements hook_form_FORM_ID_alter() for apachesolr_environment_edit_form().

File

lib/Drupal/Apachesolr/acquia_search_multi_subs.apachesolr.inc, line 161
Contains code specific to the Apache Solr Search Integration module.

Code

function acquia_search_multi_subs_environment_edit_form_submit(array $form, array &$form_state) {
  $fv =& $form_state['values'];
  $fv['conf'] = array_merge($fv['conf'], $fv['acquia_override_subscription']);

  // Only activate if the checkbox has been enabled and there is valid content.
  // Add our overrides to the configuration.
  if (empty($fv['conf']['acquia_override_auto_switch'])) {

    // If the acquia_override_selector is "Other" use user-supplied id/key/corename.
    if ($fv['conf']['acquia_override_selector'] == 'other') {
      $identifier = $fv['conf']['acquia_override_subscription_id'];
      $key = $fv['conf']['acquia_override_subscription_key'];
      $corename = $fv['conf']['acquia_override_subscription_corename'];
    }
    elseif ($fv['conf']['acquia_override_selector'] == 'default') {

      // If the acquia_override_selector is "default" use default corename.
      $identifier = acquia_agent_settings('acquia_identifier');
      $key = acquia_agent_settings('acquia_key');
      $corename = acquia_agent_settings('acquia_identifier');
    }
    else {

      // Selected a specific core.
      $identifier = acquia_agent_settings('acquia_identifier');
      $key = acquia_agent_settings('acquia_key');
      $corename = $fv['conf']['acquia_override_selector'];
    }

    // Set the derived key for this environment.
    $subscription = acquia_agent_get_subscription(array(), $identifier, $key);
    $derived_key_salt = $subscription['derived_key_salt'];
    $derived_key = _acquia_search_multi_subs_create_derived_key($derived_key_salt, $corename, $key);
    $fv['conf']['acquia_search_key'] = $derived_key;
    $override_values = array();
    $override_values['env_id'] = $form['env_id']['#default_value'];
    $override_values['name'] = $fv['name'];
    $override_values['acquia_subscription_id'] = $identifier;
    $override_values['acquia_subscription_key'] = $key;
    $override_values['acquia_subscription_corename'] = $corename;

    // Merge with our defaults.
    $fv = array_merge($fv, acquia_search_get_environment($override_values));
    $search_host = acquia_search_multi_subs_get_hostname($corename);
    $fv['url'] = 'http://' . $search_host . variable_get('acquia_search_path', '/solr/' . $corename);
    if (empty($fv['conf']['acquia_override_auto_switch'])) {

      // Unset our apachesolr_environments variable. This overrides certain
      // configurations and makes sure that we do not accidentially override the
      // server configs if auto switch is set to disabled.
      variable_del('apachesolr_environments');
    }
  }
  else {

    // Remove any manual configuration so we can auto-set the environment.
    unset($fv['conf']['acquia_search_key']);
    unset($fv['conf']['acquia_subscription_id']);
    unset($fv['conf']['acquia_subscription_key']);
    apachesolr_environment_variable_del($fv['env_id'], 'acquia_search_key');
    apachesolr_environment_variable_del($fv['env_id'], 'acquia_override_subscription_id');
    apachesolr_environment_variable_del($fv['env_id'], 'acquia_override_subscription_key');
    apachesolr_environment_variable_del($fv['env_id'], 'acquia_override_subscription_corename');
    $fv = array_merge($fv, acquia_search_get_environment());
  }
}