You are here

function audit_log_elastic_search_settings_validate in Audit Log 7

Validate the setting form submission.

Parameters

array $form: Form array.

array $form_state: Form state array.

1 string reference to 'audit_log_elastic_search_settings_validate'
audit_log_elastic_search_settings in modules/audit_log_elastic_search/audit_log_elastic_search.admin.inc
Render admin form.

File

modules/audit_log_elastic_search/audit_log_elastic_search.admin.inc, line 45
Hook implemenations for the Audit elastic search logging module.

Code

function audit_log_elastic_search_settings_validate(array $form, array &$form_state) {
  $values = $form_state['values'];
  if (!empty($form_state['triggering_element']['#ajax']) || empty($values['audit_log_elastic_search_cluster_id']['index'])) {
    return;
  }
  $client = elasticsearch_connector_get_client_by_id($values['audit_log_elastic_search_cluster_id']['cluster_id']);
  $index_name = audit_log_elastic_search_get_realindex_name($values['audit_log_elastic_search_cluster_id']['index']);
  $alias_name = audit_log_elastic_search_get_index_name($values['audit_log_elastic_search_cluster_id']['index']);
  $old_type_name = variable_get('audit_log_elastic_search_type', NULL);
  $type_name = audit_log_elastic_search_get_type_name($values['audit_log_elastic_search_type']);
  if ($client) {
    if (!$client
      ->indices()
      ->exists(array(
      'index' => $index_name,
    ))) {
      form_set_error('audit_log_elastic_search_cluster_id', t("The index doesn't exists. Please created it before continue."));
    }
    else {
      if (!$client
        ->indices()
        ->existsType(array(
        'index' => $index_name,
        'type' => $type_name,
      ))) {
        audit_log_elastic_search_create_type($client, $index_name, $type_name);
      }

      // Alias.
      if (!$client
        ->indices()
        ->existsAlias(array(
        'index' => $index_name,
        'name' => $alias_name,
      ))) {
        try {
          audit_log_elastic_search_create_alias($client, $index_name, $alias_name);
        } catch (Exception $e) {
          error_log($e
            ->getMessage());
        }
      }
      if (isset($old_type_name) && $old_type_name != $type_name) {
        try {
          $client
            ->indices()
            ->deleteMapping(array(
            'index' => $index_name,
            'type' => $old_type_name,
          ));
          drupal_set_message(t('The old type @type has been successfully deleted.', array(
            '@type' => $old_type_name,
          )));
        } catch (Exception $e) {
          error_log($e
            ->getMessage());
        }
      }
    }
  }
  else {
    form_set_error('audit_log_elastic_search_cluster_id', t('Cannot connect to the cluster for some reason! Please contact your system administrator.'));
  }
}