function node_delete_multiple in Drupal 7
Deletes multiple nodes.
Parameters
$nids: An array of node IDs.
4 calls to node_delete_multiple()
- BookTestCase::testBookDelete in modules/
book/ book.test - Tests the access for deleting top-level book nodes.
- node_delete in modules/
node/ node.module - Deletes a node.
- node_multiple_delete_confirm_submit in modules/
node/ node.admin.inc - Form submission handler for node_multiple_delete_confirm().
- node_user_delete in modules/
node/ node.module - Implements hook_user_delete().
File
- modules/
node/ node.module, line 1244 - The core that allows content to be submitted to the site. Modules and scripts may programmatically submit nodes using the usual form API pattern.
Code
function node_delete_multiple($nids) {
$transaction = db_transaction();
if (!empty($nids)) {
$nodes = node_load_multiple($nids, array());
try {
foreach ($nodes as $nid => $node) {
// Call the node-specific callback (if any):
node_invoke($node, 'delete');
module_invoke_all('node_delete', $node);
module_invoke_all('entity_delete', $node, 'node');
field_attach_delete('node', $node);
// Remove this node from the search index if needed.
// This code is implemented in node module rather than in search module,
// because node module is implementing search module's API, not the other
// way around.
if (module_exists('search')) {
search_reindex($nid, 'node');
}
}
// Delete after calling hooks so that they can query node tables as needed.
db_delete('node')
->condition('nid', $nids, 'IN')
->execute();
db_delete('node_revision')
->condition('nid', $nids, 'IN')
->execute();
db_delete('history')
->condition('nid', $nids, 'IN')
->execute();
db_delete('node_access')
->condition('nid', $nids, 'IN')
->execute();
} catch (Exception $e) {
$transaction
->rollback();
watchdog_exception('node', $e);
throw $e;
}
// Clear the page and block and node_load_multiple caches.
entity_get_controller('node')
->resetCache();
}
}