summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/node/node.module21
1 files changed, 11 insertions, 10 deletions
diff --git a/modules/node/node.module b/modules/node/node.module
index 1bc4c835f..a66e55f68 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1138,16 +1138,6 @@ function node_delete_multiple($nids) {
if (!empty($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();
-
foreach ($nodes as $nid => $node) {
// Call the node-specific callback (if any):
node_invoke($node, 'delete');
@@ -1163,6 +1153,17 @@ function node_delete_multiple($nids) {
}
}
+ // 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();
+
// Clear the page and block and node_load_multiple caches.
cache_clear_all();
entity_get_controller('node')->resetCache();