Index: feedapi_eparser.install
===================================================================
RCS file: /cvs/drupal/contributions/modules/feedapi_eparser/feedapi_eparser.install,v
retrieving revision 1.4
diff -u -r1.4 feedapi_eparser.install
--- feedapi_eparser.install	14 Aug 2009 22:34:18 -0000	1.4
+++ feedapi_eparser.install	26 Aug 2009 15:16:21 -0000
@@ -41,6 +41,12 @@
         'not null' => TRUE,
         'serialize' => TRUE,
       ),
+      'settings' => array(
+        'type' => 'text',
+        'size' => 'big',
+        'not null' => TRUE,
+        'default' => '',
+      ),
     ),
     'primary key' => array('nid'),
   );
@@ -63,4 +69,13 @@
 function feedapi_eparser_uninstall() {
   // Drop database schema.
   drupal_uninstall_schema('feedapi_eparser');
+}
+
+/**
+ * Add a new field to store plugins settings
+ */
+function feedapi_eparser_update_6102() {
+  $ret = array();
+  db_add_field($ret, 'feedapi_eparser_node', 'settings', array('type' => 'text', 'size' => 'big', 'not null' => TRUE, 'default' => ''));
+  return $ret;
 }
\ No newline at end of file
Index: feedapi_eparser.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/feedapi_eparser/feedapi_eparser.module,v
retrieving revision 1.13
diff -u -r1.13 feedapi_eparser.module
--- feedapi_eparser.module	17 Aug 2009 22:36:21 -0000	1.13
+++ feedapi_eparser.module	26 Aug 2009 15:32:33 -0000
@@ -65,6 +65,7 @@
         $record->type = $node->feedapi_eparser['feed_type'];
         $record->download = $node->feedapi_eparser['download'];
         $record->namespaces = array_filter(array_values($node->feedapi_eparser['namespaces']));
+        $record->settings = isset($node->feedapi_eparser['settings']) ? serialize($node->feedapi_eparser['settings']) : '';
 
         // To update or not update. That is the question.
         // Quick cached node load to see whats up with our settings.
@@ -75,12 +76,13 @@
         break;
 
       case 'load':
-        if ($settings = db_fetch_object(db_query('SELECT type, namespaces, download FROM {feedapi_eparser_node} WHERE nid = %d', $node->nid))) {
+        if ($settings = db_fetch_object(db_query('SELECT type, namespaces, download, settings FROM {feedapi_eparser_node} WHERE nid = %d', $node->nid))) {
           //
           $info['eparse'] = new stdClass();
           $info['eparse']->type = $settings->type;
           $info['eparse']->download = $settings->download;
           $info['eparse']->namespaces = unserialize($settings->namespaces);
+          $info['eparse']->settings = unserialize($settings->settings);
           return $info;
         }
         break;
@@ -172,6 +174,21 @@
     '#options' => $namespace_options,
     '#default_value' => $default_namespaces,
   );
+  
+  $type = $form['#node']->eparse->type;
+  
+  $plugins = array_unique(array_map(create_function('$type', 'return $type["module"];'), $types));
+  
+  foreach ($plugins as $module) {
+    if ($extra_settings = module_invoke($module, 'eparser_settings_form', $form['#node']->eparse->settings)) {
+      if (! isset($form['feedapi_eparser']['settings'])) {
+        $form['feedapi_eparser']['settings'] = array();
+      }
+      
+      // Works fine until two plugins use the same $key for their inputs
+      $form['feedapi_eparser']['settings'] += $extra_settings;
+    }
+  }
 }
 
 function feedapi_eparser_feedapi_parse($feed) {

