Index: modules/aggregator/aggregator.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.api.php,v
retrieving revision 1.6
diff -u -r1.6 aggregator.api.php
--- modules/aggregator/aggregator.api.php	12 Oct 2009 15:54:58 -0000	1.6
+++ modules/aggregator/aggregator.api.php	14 Oct 2009 19:33:20 -0000
@@ -26,7 +26,7 @@
  * @param $feed
  *   The $feed object that describes the resource to be downloaded.
  *   $feed->url contains the link to the feed. Download the data at the URL
- *   and expose it to other modules by attaching it to $feed->source_string.
+ *   and expose it to other modules by attaching it to $feed->data.
  *
  * @see hook_aggregator_fetch_info()
  * @see hook_aggregator_parse()
@@ -35,7 +35,7 @@
  * @ingroup aggregator
  */
 function hook_aggregator_fetch($feed) {
-  $feed->source_string = mymodule_fetch($feed->url);
+  $feed->data = mymodule_fetch($feed->url);
 }
 
 /**
@@ -79,8 +79,8 @@
  *
  * @param $feed
  *   The $feed object that describes the resource to be parsed.
- *   $feed->source_string contains the raw feed data as a string. Parse data
- *   from $feed->source_string and expose it to other modules as an array of
+ *   $feed->data contains the raw feed data as a string. Parse data
+ *   from $feed->data and expose it to other modules as an array of
  *   data items on $feed->items.
  * 
  *   Feed format:
@@ -112,7 +112,7 @@
  * @ingroup aggregator
  */
 function hook_aggregator_parse($feed) {
-  if ($items = mymodule_parse($feed->source_string)) {
+  if ($items = mymodule_parse($feed->data)) {
     $feed->items = $items;
     return TRUE;
   }
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.426
diff -u -r1.426 aggregator.module
--- modules/aggregator/aggregator.module	12 Oct 2009 15:54:59 -0000	1.426
+++ modules/aggregator/aggregator.module	14 Oct 2009 19:33:20 -0000
@@ -6,6 +6,13 @@
  * Used to aggregate syndicated content (RSS, RDF, and Atom).
  */
 
+/*
+ * Load all aggregator hook implementations.
+ */
+require(DRUPAL_ROOT . '/modules/aggregator/aggregator.fetcher.inc');
+require(DRUPAL_ROOT . '/modules/aggregator/aggregator.parser.inc');
+require(DRUPAL_ROOT . '/modules/aggregator/aggregator.processor.inc');
+
 /**
  * Denotes that a feed's items should never expire.
  */
@@ -544,7 +551,6 @@
  *   An object describing the feed to be cleared.
  */
 function aggregator_remove($feed) {
-  _aggregator_get_variables();
   // Call hook_aggregator_remove() on all modules.
   module_invoke_all('aggregator_remove', $feed);
   // Reset feed.
@@ -562,19 +568,10 @@
 }
 
 function _aggregator_get_variables() {
-  // Fetch the feed.
   $fetcher = variable_get('aggregator_fetcher', 'aggregator');
-  if ($fetcher == 'aggregator') {
-    include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.fetcher.inc';
-  }
   $parser = variable_get('aggregator_parser', 'aggregator');
-  if ($parser == 'aggregator') {
-    include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.parser.inc';
-  }
   $processors = variable_get('aggregator_processors', array('aggregator'));
-  if (in_array('aggregator', $processors)) {
-    include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'aggregator') . '/aggregator.processor.inc';
-  }
+
   return array($fetcher, $parser, $processors);
 }
 
@@ -592,7 +589,7 @@
   list($fetcher, $parser, $processors) = _aggregator_get_variables();
   module_invoke($fetcher, 'aggregator_fetch', $feed);
 
-  if ($feed->source_string !== FALSE) {
+  if ($feed->data !== FALSE) {
     // Parse the feed.
     if (module_invoke($parser, 'aggregator_parse', $feed)) {
       // Update feed with parsed data.
@@ -604,7 +601,7 @@
           'link' => empty($feed->link) ? $feed->url : $feed->link,
           'description' => empty($feed->description) ? '' : $feed->description,
           'image' => empty($feed->image) ? '' : $feed->image,
-          'hash' => md5($feed->source_string),
+          'hash' => md5($feed->data),
           'etag' => empty($feed->etag) ? '' : $feed->etag,
           'modified' => empty($feed->modified) ? '' : $feed->modified,
         ))
Index: modules/aggregator/aggregator.parser.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.parser.inc,v
retrieving revision 1.6
diff -u -r1.6 aggregator.parser.inc
--- modules/aggregator/aggregator.parser.inc	12 Oct 2009 15:54:59 -0000	1.6
+++ modules/aggregator/aggregator.parser.inc	14 Oct 2009 19:33:20 -0000
@@ -23,8 +23,8 @@
   global $channel, $image;
 
   // Filter the input data.
-  if (aggregator_parse_feed($feed->source_string, $feed)) {
-    $modified = empty($feed->http_headers['Last-Modified']) ? 0 : strtotime($feed->http_headers['Last-Modified']);
+  if (aggregator_parse_feed($feed->data, $feed)) {
+    $modified = empty($feed->headers['Last-Modified']) ? 0 : strtotime($feed->headers['Last-Modified']);
 
     // Prepare the channel data.
     foreach ($channel as $key => $value) {
@@ -43,7 +43,7 @@
       $image = '';
     }
 
-    $etag = empty($feed->http_headers['ETag']) ? '' : $feed->http_headers['ETag'];
+    $etag = empty($feed->headers['ETag']) ? '' : $feed->headers['ETag'];
 
     // Add parsed data to the feed object.
     $feed->link = !empty($channel['LINK']) ? $channel['LINK'] : '';
Index: modules/aggregator/aggregator.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.admin.inc,v
retrieving revision 1.44
diff -u -r1.44 aggregator.admin.inc
--- modules/aggregator/aggregator.admin.inc	9 Oct 2009 00:59:55 -0000	1.44
+++ modules/aggregator/aggregator.admin.inc	14 Oct 2009 19:33:20 -0000
@@ -395,42 +395,36 @@
   aggregator_sanitize_configuration();
 
   // Get all available fetchers.
-  $fetchers = module_implements('aggregator_fetch');
-  foreach ($fetchers as $k => $module) {
+  $fetchers = array();
+  foreach (module_implements('aggregator_fetch') as $k => $module) {
     if ($info = module_invoke($module, 'aggregator_fetch_info')) {
-      $label = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
+      $fetchers[$module] = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
     }
     else {
-      $label = $module;
+      $fetchers[$module] = $module;
     }
-    unset($fetchers[$k]);
-    $fetchers[$module] = $label;
   }
 
   // Get all available parsers.
-  $parsers = module_implements('aggregator_parse');
-  foreach ($parsers as $k => $module) {
+  $parsers = array();
+  foreach (module_implements('aggregator_parse') as $k => $module) {
     if ($info = module_invoke($module, 'aggregator_parse_info')) {
-      $label = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
+      $parsers[$module] = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
     }
     else {
-      $label = $module;
+      $parsers[$module] = $module;
     }
-    unset($parsers[$k]);
-    $parsers[$module] = $label;
   }
 
   // Get all available processors.
-  $processors = module_implements('aggregator_process');
-  foreach ($processors as $k => $module) {
+  $processors = array();
+  foreach (module_implements('aggregator_process') as $k => $module) {
     if ($info = module_invoke($module, 'aggregator_process_info')) {
-      $label = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
+      $processors[$module] = $info['title'] . ' <span class="description">' . $info['description'] . '</span>';
     }
     else {
-      $label = $module;
+      $processors[$module] = $module;
     }
-    unset($processors[$k]);
-    $processors[$module] = $label;
   }
 
   // Only show basic configuration if there are actually options.
@@ -485,7 +479,9 @@
 }
 
 function aggregator_admin_form_submit($form, &$form_state) {
-  $form_state['values']['aggregator_processors'] = array_filter($form_state['values']['aggregator_processors']);
+  if (isset($form_state['values']['aggregator_processors'])) {
+    $form_state['values']['aggregator_processors'] = array_filter($form_state['values']['aggregator_processors']);
+  }
   system_settings_form_submit($form, $form_state);
 }
 
Index: modules/aggregator/aggregator.fetcher.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.fetcher.inc,v
retrieving revision 1.10
diff -u -r1.10 aggregator.fetcher.inc
--- modules/aggregator/aggregator.fetcher.inc	12 Oct 2009 15:54:59 -0000	1.10
+++ modules/aggregator/aggregator.fetcher.inc	14 Oct 2009 19:33:20 -0000
@@ -20,7 +20,7 @@
  * Implement hook_aggregator_fetch().
  */
 function aggregator_aggregator_fetch($feed) {
-  $feed->source_string = FALSE;
+  $feed->data = FALSE;
 
   // Generate conditional GET headers.
   $headers = array();
@@ -68,8 +68,8 @@
         break;
       }
 
-      $feed->source_string = $result->data;
-      $feed->http_headers = $result->headers;
+      $feed->data = $result->data;
+      $feed->headers = $result->headers;
       break;
     default:
       watchdog('aggregator', 'The feed from %site seems to be broken, due to "%error".', array('%site' => $feed->title, '%error' => $result->code . ' ' . $result->error), WATCHDOG_WARNING);
