diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 1ba254b7637024eb5da3172e8c4f2550fbe1d8a6..a7307ef7088dc090e4813a797ce2570f37f6fe64 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ Feeds 6.x 1.0 xxxxxxxxxxxxxxxxxxxx ---------------------------------- +- #755544 Monkey Master: Keep batch processing when mapping fails. - alex_b: Reset import schedule after deleting items from feed. - #653412 rbrandon: Do not create items older than expiry time. - #725392 nicholasThompson: FeedsBatch does not check feeds folder exists before diff --git a/plugins/FeedsNodeProcessor.inc b/plugins/FeedsNodeProcessor.inc index 0ef4778be6baf1f0758c085da81e58fa547e7a5f..c06f8830bb561d2743d639605ffc671b6539bdb4 100644 --- a/plugins/FeedsNodeProcessor.inc +++ b/plugins/FeedsNodeProcessor.inc @@ -41,10 +41,6 @@ class FeedsNodeProcessor extends FeedsProcessor { // If updating populate nid and vid avoiding an expensive node_load(). $node->nid = $nid; $node->vid = db_result(db_query("SELECT vid FROM {node} WHERE nid = %d", $nid)); - $batch->updated++; - } - else { - $batch->created++; } // Populate and prepare node object. @@ -66,11 +62,21 @@ class FeedsNodeProcessor extends FeedsProcessor { $node->log = 'Created/updated by FeedsNodeProcessor'; $node->uid = 0; - // Execute mappings from $item to $node. - $this->map($item, $node); - - // Save the node. - node_save($node); + // Map and save nodes. If errors occur don't stop but report them. + try { + $this->map($item, $node); + node_save($node); + if (!empty($nid)) { + $batch->updated++; + } + else { + $batch->created++; + } + } + catch (Exception $e) { + drupal_set_message($e->getMessage(), 'warning'); + watchdog('feeds', $e->getMessage(), array(), WATCHDOG_WARNING); + } } $processed++;