function apachesolr_nan_nan_settings_form_submit in Apache Solr Not-A-Node 7
Same name and namespace in other branches
- 7.2 apachesolr_nan.admin.inc \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 181 - Administrative functions and form builders for Apache Solr NAN Search.
Code
function apachesolr_nan_nan_settings_form_submit($form, &$form_state) {
$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.
$ids = db_select('apachesolr_nan_index_paths', 'p')
->fields('p', array(
'id',
))
->execute()
->fetchCol();
if (!empty($ids)) {
foreach ($ids as $id) {
apachesolr_index_delete_entity_from_index($old_env, 'node', $id);
}
}
}
// 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();
}
// Set the items into the database;
$paths = db_select('apachesolr_nan_index_paths', 'p')
->fields('p', array(
'id',
'path',
))
->execute()
->fetchAllKeyed();
$new_paths = array();
$saved = FALSE;
foreach ($items as $item) {
$new_paths[] = $item['path'];
if ($key = array_search($item['path'], $paths)) {
$record = $item + array(
'id' => $key,
);
drupal_write_record('apachesolr_nan_index_paths', $record, array(
'id',
));
$saved = TRUE;
}
else {
drupal_write_record('apachesolr_nan_index_paths', $item);
$saved = TRUE;
}
}
if ($saved) {
drupal_set_message(t('Your paths have beed updated or added.'));
}
// Find the removed elements and delete them.
$delete = array_diff($paths, $new_paths);
$delete_keys = array_keys($delete);
if (!empty($delete_keys)) {
module_load_include('inc', 'apachesolr', 'apachesolr.index');
foreach ($delete_keys as $key) {
$id = (int) $key * -1;
if (apachesolr_index_delete_entity_from_index($env, 'node', $id)) {
watchdog('ApacheSolr NAN search', 'The apache solr non-node item %id was deleted', array(
'%id' => $id,
));
}
else {
drupal_set_message(t('There was a problem removing the page from the index.'), 'error');
watchdog('ApacheSolr NAN search', 'The apache solr non-node item %id could not be deleted', array(
'%id' => $id,
), WATCHDOG_ERROR);
}
}
}
if (!empty($delete_keys)) {
$deleted = db_delete('apachesolr_nan_index_paths')
->condition('id', $delete_keys, 'IN')
->execute();
if ($deleted > 0) {
drupal_set_message(t('The following paths were deleted:'));
foreach ($delete as $removed_path) {
drupal_set_message($removed_path);
}
}
}
}