function apachesolr_nan_nan_settings_form_submit in Apache Solr Not-A-Node 7.2
Same name and namespace in other branches
- 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);
}
}
}