function apachesolr_index_nodeapi_mass_delete in Apache Solr Search 7
Same name and namespace in other branches
- 8 apachesolr.index.inc \apachesolr_index_nodeapi_mass_delete()
- 6.3 apachesolr.index.inc \apachesolr_index_nodeapi_mass_delete()
Mass delete nodes from the solr indexer tables. TODO: This always assumes the default environment!
Parameters
array $nodes:
string $table:
Return value
boolean true if we mass updated, false if failed
1 call to apachesolr_index_nodeapi_mass_delete()
- apachesolr_index_node_check_table in ./
apachesolr.index.inc - hook_cron() helper to try to make the index table consistent with their respective entity table.
File
- ./
apachesolr.index.inc, line 1523 - Functions related to Apache Solr indexing operations.
Code
function apachesolr_index_nodeapi_mass_delete(array $nodes, $table = NULL) {
if (empty($nodes)) {
return TRUE;
}
if (empty($table)) {
$table = apachesolr_get_indexer_table('node');
}
$env_id = apachesolr_default_environment();
if (apachesolr_index_env_is_readonly($env_id)) {
apachesolr_index_report_readonly($env_id);
return FALSE;
}
$ids = array();
$nids = array();
foreach ($nodes as $node) {
$ids[] = apachesolr_document_id($node->nid);
$nids[] = $node->nid;
}
try {
$solr = apachesolr_get_solr($env_id);
$solr
->deleteByMultipleIds($ids);
apachesolr_set_last_index_updated($env_id, REQUEST_TIME);
// There was no exception, so update the table.
db_delete($table)
->condition('entity_id', $nids, 'IN')
->execute();
return TRUE;
} catch (Exception $e) {
apachesolr_log_exception($env_id, $e);
return FALSE;
}
}