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());
}
}