You are here

function acquia_search_form_apachesolr_environment_edit_form_alter in Acquia Connector 7.3

Same name and namespace in other branches
  1. 7 acquia_search/acquia_search.module \acquia_search_form_apachesolr_environment_edit_form_alter()
  2. 7.2 acquia_search/acquia_search.module \acquia_search_form_apachesolr_environment_edit_form_alter()

Implements hook_form_FORM_ID_alter().

File

acquia_search/acquia_search.module, line 478
Integration between Acquia Drupal and Acquia's hosted solr search service.

Code

function acquia_search_form_apachesolr_environment_edit_form_alter(&$form, $form_state) {

  // Gets environment from form, gets connection status to Acquia Search.
  $env_id = isset($form['env_id']['#default_value']) ? $form['env_id']['#default_value'] : '';
  $environment = $env_id ? apachesolr_environment_load($env_id) : FALSE;

  // Add message to Acquia-connected indexes.
  if ($environment && acquia_search_environment_connected($environment)) {
    acquia_search_add_form_status_message($form, $form_state, $environment);
    if (acquia_search_is_environment_overridden_to_read_only($environment)) {
      $dsm = acquia_search_get_read_only_mode_warning($environment);
      drupal_set_message($dsm, 'warning', FALSE);

      // Avoid accidental saving of overridden values into the Database.
      $form['conf']['apachesolr_read_only']['#disabled'] = TRUE;
      $form['conf']['apachesolr_read_only']['#type'] = 'hidden';
    }
    $form['url']['#disabled'] = TRUE;
    $form['env_id']['#disabled'] = TRUE;
  }

  // Don't let the user delete the initial environment.
  $acquia_solr_environment = FALSE;
  if ($env_id == ACQUIA_SEARCH_ENVIRONMENT_ID || $env_id == ACQUIA_SEARCH_V3_ENVIRONMENT_ID) {
    $form['name']['#disabled'] = TRUE;
    $form['actions']['delete']['#access'] = FALSE;
    $acquia_solr_environment = TRUE;
  }

  // Adding solr core select option.
  $solr_core = '';
  if ($environment['env_id'] == ACQUIA_SEARCH_ENVIRONMENT_ID) {
    $solr_core = ACQUIA_SEARCH_SOLR_CORE_V2;
  }
  elseif ($environment['env_id'] == ACQUIA_SEARCH_V3_ENVIRONMENT_ID) {
    $solr_core = ACQUIA_SEARCH_SOLR_CORE_V3;
  }
  $form_element['acquia_search_api']['acquia_search_solr_core'] = [
    '#title' => t('Acquia Search Solr core'),
    '#type' => 'select',
    '#options' => [
      ACQUIA_SEARCH_SOLR_CORE_V2 => 'Solr 6 and below',
      ACQUIA_SEARCH_SOLR_CORE_V3 => 'Solr 7 and above',
    ],
    '#empty_value' => '',
    '#empty_option' => t('- None -'),
    '#default_value' => $solr_core,
    '#description' => t('Select version of Solr Core.'),
    '#disabled' => $acquia_solr_environment,
    '#ajax' => [
      'callback' => '_acquia_make_environment_url',
      'event' => 'change',
      'wrapper' => 'acquia_search_environment_values',
    ],
  ];
  array_unshift($form, $form_element['acquia_search_api']);
  $form['#prefix'] = '<div id="acquia_search_environment_values">';
  $form['#suffix'] = '</div>';
  $acquia_environment = acquia_search_get_environment();

  // Override default values.
  foreach ($acquia_environment as $key => $value) {
    $environment[$key] = $value;
  }
  $environment['env_id'] = ACQUIA_SEARCH_ENVIRONMENT_ID;
  $environment['name'] = t('Acquia Search');
  $form['actions']['save']['#submit'][] = 'acquia_search_solr_settings_form_new_environment_submit';
  $form['actions']['save_edit']['#submit'] = [
    'acquia_search_solr_settings_form_new_environment_submit',
  ];
  $form['actions']['save']['#validate'][] = 'acquia_search_environment_edit_form_validate';
}