From f1295fed9ae5d09a11b0340f3c53e5fadbe672c5 Mon Sep 17 00:00:00 2001 From: Alex Barth <alex_b@53995.no-reply.drupal.org> Date: Mon, 20 Sep 2010 18:27:52 +0000 Subject: [PATCH] Fix deleting. --- plugins/FeedsNodeProcessor.inc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/FeedsNodeProcessor.inc b/plugins/FeedsNodeProcessor.inc index 576e5f05..ffec337a 100644 --- a/plugins/FeedsNodeProcessor.inc +++ b/plugins/FeedsNodeProcessor.inc @@ -89,16 +89,18 @@ class FeedsNodeProcessor extends FeedsProcessor { */ public function clear(FeedsBatch $batch, FeedsSource $source) { if (!$batch->getTotal(FEEDS_CLEARING)) { - $total = db_query("SELECT COUNT(nid) FROM {feeds_node_item} WHERE id = :id AND feed_nid =:nid", array(':id' => $source->id, ':nid' => $source->feed_nid))->fetchField(); + $total = db_query("SELECT COUNT(n.nid) FROM {node} n JOIN {feeds_node_item} fn ON n.nid = fn.nid WHERE fn.id = :id AND fn.feed_nid = :nid", array(':id' => $source->id, ':nid' => $source->feed_nid))->fetchField(); $batch->setTotal(FEEDS_CLEARING, $total); } $count = variable_get('feeds_node_batch_size', FEEDS_NODE_BATCH_SIZE); - $nodes = db_query_range("SELECT nid FROM {feeds_node_item} WHERE id = :id AND feed_nid =:nid", 0, $count, array(':id' => $source->id, ':nid' => $source->feed_nid)); + $nids = array(); + $nodes = db_query_range("SELECT n.nid FROM {node} n JOIN {feeds_node_item} fn ON n.nid = fn.nid WHERE fn.id = :id AND fn.feed_nid = :nid", 0, $count, array(':id' => $source->id, ':nid' => $source->feed_nid)); foreach ($nodes as $node) { - node_delete($node->nid); + $nids[] = $node->nid; $batch->deleted++; } - if (db_query_range("SELECT 1 FROM {feeds_node_item} WHERE id = :id AND feed_nid =:nid", 0, 1, array(':id' => $source->id, ':nid' => $source->feed_nid))->fetchField()) { + node_delete_multiple($nids); + if (db_query_range("SELECT 1 FROM {node} n JOIN {feeds_node_item} fn ON n.nid = fn.nid WHERE fn.id = :id AND fn.feed_nid = :nid", 0, 1, array(':id' => $source->id, ':nid' => $source->feed_nid))->fetchField()) { $batch->setProgress(FEEDS_CLEARING, $batch->deleted); return; } -- GitLab