You are here

function apachesolr_nan_nan_settings_form_submit in Apache Solr Not-A-Node 7.2

Same name and namespace in other branches
  1. 7 apachesolr_nan.admin.inc \apachesolr_nan_nan_settings_form_submit()

function apachesolr_nan_nan_settings_form_submit().

Submit form for admin page.

See also

apachesolr_nan_nan_settings_form().

apachesolr_nan_nan_settings_form_validate().

File

./apachesolr_nan.admin.inc, line 186
Administrative functions and form builders for Apache Solr NAN Search.

Code

function apachesolr_nan_nan_settings_form_submit($form, &$form_state) {
  $current_nans = entity_load('apachesolr_nan', FALSE);
  $old_env = variable_get('apachesolr_nan_nan_env', apachesolr_default_environment());
  if ($form_state['values']['environment'] != $old_env) {

    // We switched environments so clean everything out of the other one.
    if (!empty($current_nans)) {
      foreach ($current_nans as $nan) {
        apachesolr_index_delete_entity_from_index($old_env, 'apachesolr_nan', $nan);
      }
    }
  }

  // Set the new environment.
  $env = $form_state['values']['environment'];
  variable_set('apachesolr_nan_nan_env', $env);
  if (!empty($form_state['items'])) {
    foreach ($form_state['values']['item'] as $key => $item) {
      unset($form_state['values']['item'][$key]['delete']);
    }
    $items = array_values($form_state['values']['item']);
  }
  else {
    $items = array();
  }

  // Keep list of previous paths in the DB.
  $old_paths = array();
  foreach ($current_nans as $nan) {
    $old_paths[] = $nan->path;
  }

  // Save adds/changes into the database.
  $new_paths = array();
  $saved = FALSE;
  foreach ($items as $item) {
    $new_paths[] = $item['path'];
    apachesolr_nan_write_entity($item);
    $saved = TRUE;
  }
  if ($saved) {
    drupal_set_message(t('Your paths have been updated or added.'));
  }

  // Find any removed elements and delete them.
  $delete_paths = array_diff($old_paths, $new_paths);
  if (!empty($delete_paths)) {
    module_load_include('inc', 'apachesolr', 'apachesolr.index');
    $deleted = array();
    foreach ($delete_paths as $path) {
      if (apachesolr_nan_delete_entity($env, $path)) {
        watchdog('ApacheSolr NAN search', 'The Apachesolr NAN path %path was deleted', array(
          '%path' => $path,
        ));
      }
      else {
        drupal_set_message(t('There was a problem removing the page from the index.'), 'error');
        watchdog('ApacheSolr NAN search', 'The Apachesolr NAN path %path could not be deleted', array(
          '%path' => $path,
        ), WATCHDOG_ERROR);
      }
      $deleted[] = $path;
    }
  }
  if ($deleted > 0) {
    drupal_set_message(t('The following paths were deleted:'));
    foreach ($deleted as $removed_path) {
      drupal_set_message($removed_path);
    }
  }
}