diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-10-08 15:36:18 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-10-08 15:36:18 +0000 |
commit | 332c4ab574a94770e222c09ef217fbee61968b4f (patch) | |
tree | c6b165e3b3cce18a657a8bb7f989e5765d88271b /modules/node | |
parent | ca709290cc6e8345a358f44636928fc4db86db6b (diff) | |
download | brdo-332c4ab574a94770e222c09ef217fbee61968b4f.tar.gz brdo-332c4ab574a94770e222c09ef217fbee61968b4f.tar.bz2 |
- Patch #597336 by hunmonk: node_delete_multiple() barfs if no nids are passed.
Diffstat (limited to 'modules/node')
-rw-r--r-- | modules/node/node.module | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/modules/node/node.module b/modules/node/node.module index c0cf14b68..04cffb91f 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -974,36 +974,38 @@ function node_delete($nid) { * An array of node IDs. */ function node_delete_multiple($nids) { - $nodes = node_load_multiple($nids, array()); - - 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(); + if (!empty($nids)) { + $nodes = node_load_multiple($nids, array()); - foreach ($nodes as $nid => $node) { - // Call the node-specific callback (if any): - node_invoke($node, 'delete'); - module_invoke_all('node_delete', $node); - field_attach_delete('node', $node); + 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(); - // 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'); + foreach ($nodes as $nid => $node) { + // Call the node-specific callback (if any): + node_invoke($node, 'delete'); + module_invoke_all('node_delete', $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'); + } } - } - // Clear the page and block and node_load_multiple caches. - cache_clear_all(); - entity_get_controller('node')->resetCache(); + // Clear the page and block and node_load_multiple caches. + cache_clear_all(); + entity_get_controller('node')->resetCache(); + } } /** |