Index: README.txt
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds/README.txt,v
retrieving revision 1.15
diff -u -r1.15 README.txt
--- README.txt	3 Dec 2009 21:27:40 -0000	1.15
+++ README.txt	6 Jan 2010 16:19:45 -0000
@@ -100,10 +100,18 @@
 Default:     'FeedsSource'
 Description: The class to use for handling feed sources.
 
+Name:        feeds_source_module
+Default:     'feeds'
+Description: The module to which belongs the feed source class.
+
 Name:        feeds_scheduler_class
 Default:     'FeedsScheduler'
 Description: The class to use for scheduling feed refreshing.
 
+Name:        feeds_scheduler_module
+Default:     'feeds'
+Description: The module to which belongs the feed scheduler class.
+
 Name:        feeds_worker_time
 Default:     15
 Description: Execution time for a queue worker, only effective if used with
Index: feeds.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds/feeds.module,v
retrieving revision 1.26
diff -u -r1.26 feeds.module
--- feeds.module	21 Dec 2009 00:32:55 -0000	1.26
+++ feeds.module	6 Jan 2010 16:02:07 -0000
@@ -683,11 +683,13 @@
  * @param $directory
  *   The directory to include the file from. Do not include files from libraries
  *   directory. Use feeds_include_library() instead
+ * @param $module
+ *   The module to which belongs the file to include
  */
-function feeds_include($file, $directory = 'includes') {
+function feeds_include($file, $directory = 'includes', $module = 'feeds') {
   static $included = array();
   if (!isset($included[$file])) {
-    require './'. drupal_get_path('module', 'feeds') ."/$directory/$file.inc";
+    require './'. drupal_get_path('module', $module) ."/$directory/$file.inc";
   }
   $included[$file] = TRUE;
 }
Index: includes/FeedsScheduler.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds/includes/FeedsScheduler.inc,v
retrieving revision 1.9
diff -u -r1.9 FeedsScheduler.inc
--- includes/FeedsScheduler.inc	20 Dec 2009 23:48:38 -0000	1.9
+++ includes/FeedsScheduler.inc	6 Jan 2010 16:56:19 -0000
@@ -71,6 +71,13 @@
     static $instance;
     if (!isset($instance)) {
       $class = variable_get('feeds_scheduler_class', 'FeedsScheduler');
+      if (! class_exists($class)) {
+        $module = variable_get('feeds_scheduler_module', 'feeds');
+        feeds_include($class, 'includes', $module);
+        if (! class_exists($class)) {
+          throw new Exception(t('The class %name does not exists.', array('%name' => $class)));
+        }
+      }
       $instance = new $class();
     }
     return $instance;
Index: includes/FeedsSource.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feeds/includes/FeedsSource.inc,v
retrieving revision 1.6
diff -u -r1.6 FeedsSource.inc
--- includes/FeedsSource.inc	20 Dec 2009 23:48:38 -0000	1.6
+++ includes/FeedsSource.inc	6 Jan 2010 16:56:25 -0000
@@ -82,6 +82,14 @@
    */
   public static function instance($importer_id, $feed_nid = 0) {
     $class = variable_get('feeds_source_class', 'FeedsSource');
+    if (! class_exists($class)) {
+      $module = variable_get('feeds_source_module', 'feeds');
+      feeds_include($class, 'includes', $module);
+      if (! class_exists($class)) {
+        throw new Exception(t('The class %name does not exists.', array('%name' => $class)));
+      }
+    }
+      
     static $instances = array();
     if (!isset($instances[$class][$importer_id][$feed_nid])) {
       $instances[$class][$importer_id][$feed_nid] = new $class($importer_id, $feed_nid);

