? feedapi-help-avoid-face-bashing-377382-10.patch
? feedapi-trap-missing-parser-377382-5.patch
? feedapi_2.patch
? feedapi_node-respect-default-node-settings-179884-10.patch
? feedapi_node-yet-more-notices-375033-12.patch
? validate_turned_off_submodule.patch
? parser_simplepie/simplepie.inc
Index: feedapi.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/feedapi/feedapi.module,v
retrieving revision 1.23.2.119.2.45
diff -u -p -r1.23.2.119.2.45 feedapi.module
--- feedapi.module	21 Feb 2009 15:38:19 -0000	1.23.2.119.2.45
+++ feedapi.module	22 Feb 2009 04:50:10 -0000
@@ -124,7 +124,7 @@ function feedapi_nodeapi(&$node, $op, $t
         $node->feed->processors = _feedapi_format_settings($node->feed->settings, 'processors');
         if (count($node->feed->parsers) < 1) {
           if (user_access('administer content types')) {
-            form_set_error('', t('There is no enabled parser for this content-type. Before using it for creating feeds, you need to properly configure the content-type.'));
+            form_set_error('', t('There are no enabled parsers for this content type. In order to import feed items, you need to select a feed parser from the <a href="@url">content type settings</a>.', array('@url' => url("admin/content/node-type/$node->type"))));
           }
           else {
             form_set_error('', t('There is no parser enabled for this content-type. Contact your site administrator for help.'));
@@ -906,11 +906,14 @@ function _feedapi_call_parsers($feed, $p
       }
     }
   }
-  for ($i = 0; $i < count($feed->items); $i++) {
-    $feed->items[$i]->title = _feedapi_process_text($feed->items[$i]->title, array());
-    $feed->items[$i]->description = _feedapi_process_text($feed->items[$i]->description, $allowed);
-    if ($feed->items[$i]->options->timestamp == 0) {
-      $feed->items[$i]->options->timestamp = time();
+  
+  if (isset($feed->items)) {
+    for ($i = 0; $i < count($feed->items); $i++) {
+      $feed->items[$i]->title = _feedapi_process_text($feed->items[$i]->title, array());
+      $feed->items[$i]->description = _feedapi_process_text($feed->items[$i]->description, $allowed);
+      if ($feed->items[$i]->options->timestamp == 0) {
+        $feed->items[$i]->options->timestamp = time();
+      }
     }
   }
 
@@ -1263,6 +1266,15 @@ function feedapi_get_settings($node_type
   // Fallback: node_type.
   if (isset($node_type) && is_string($node_type)) {
     if ($settings = variable_get('feedapi_settings_'. $node_type, FALSE)) {
+      // Sanitize data right now, tricky users may turned off the module
+      foreach (array('parsers', 'processors') as $type) {
+        $modules = array_keys($settings[$type]);
+        foreach ($modules as $module) {
+          if (!module_exists($module)) {
+            unset($settings['parsers'][$module]);
+          }
+        }
+      }
       return $settings;
     }
   }
