? 955236-1_error_handling.patch
? feeds-patch.diff
? libraries/simplepie.inc
? tests/feeds/.DS_Store
Index: includes/FeedsSource.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds/includes/FeedsSource.inc,v
retrieving revision 1.26.2.8
diff -u -p -r1.26.2.8 FeedsSource.inc
--- includes/FeedsSource.inc	26 Oct 2010 03:05:58 -0000	1.26.2.8
+++ includes/FeedsSource.inc	28 Oct 2010 21:50:35 -0000
@@ -328,6 +328,8 @@ class FeedsSource extends FeedsConfigura
    */
   public function import() {
     $this->acquireLock();
+    set_error_handler(array($this, 'importError'));
+
     try {
       // Fetch.
       if (empty($this->fetcher_result) || FEEDS_BATCH_COMPLETE == $this->progressParsing()) {
@@ -354,6 +356,8 @@ class FeedsSource extends FeedsConfigura
       unset($this->fetcher_result, $this->state);
     }
     $this->save();
+    restore_error_handler();
+
     if (isset($e)) {
       throw $e;
     }
@@ -376,6 +380,8 @@ class FeedsSource extends FeedsConfigura
    */
   public function clear() {
     $this->acquireLock();
+    set_error_handler(array($this, 'clearError'));
+
     try {
       $this->importer->fetcher->clear($this);
       $this->importer->parser->clear($this);
@@ -391,6 +397,8 @@ class FeedsSource extends FeedsConfigura
       unset($this->state);
     }
     $this->save();
+    restore_error_handler();
+
     if (isset($e)) {
       throw $e;
     }
@@ -398,6 +406,28 @@ class FeedsSource extends FeedsConfigura
   }
 
   /**
+   * Handles errors on import.
+   */
+  public function importError() {
+    $this->log('import', $message, array(), WATCHDOG_ERROR);
+    module_invoke_all('feeds_after_import', $this);
+    unset($this->state);
+    $this->save();
+    _drupal_error_handler($error_level, $message, $filename, $line, $context);
+  }
+
+  /**
+   * Handles errors on clear.
+   */
+  public function clearError() {
+    $this->log('clear', $message, array(), WATCHDOG_ERROR);
+    module_invoke_all('feeds_after_clear', $this);
+    unset($this->state);
+    $this->save();
+    _drupal_error_handler($error_level, $message, $filename, $line, $context);
+  }
+
+  /**
    * Report progress as float between 0 and 1. 1 = FEEDS_BATCH_COMPLETE.
    */
   public function progressParsing() {
