Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.422
diff -u -r1.422 aggregator.module
--- modules/aggregator/aggregator.module	29 Aug 2009 05:46:01 -0000	1.422
+++ modules/aggregator/aggregator.module	1 Sep 2009 21:54:25 -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.
  */
@@ -532,7 +539,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.
@@ -550,19 +556,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);
 }
 
@@ -576,7 +573,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.
     module_invoke($parser, 'aggregator_parse', $feed);
 
Index: modules/aggregator/aggregator.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.api.php,v
retrieving revision 1.5
diff -u -r1.5 aggregator.api.php
--- modules/aggregator/aggregator.api.php	24 Aug 2009 17:11:41 -0000	1.5
+++ modules/aggregator/aggregator.api.php	1 Sep 2009 21:54:22 -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.
  *
  *   By convention, the common format for a single feed item is:
@@ -101,7 +101,7 @@
  * @ingroup aggregator
  */
 function hook_aggregator_parse($feed) {
-  $feed->items = mymodule_parse($feed->source_string);
+  $feed->items = mymodule_parse($feed->data);
 }
 
 /**
Index: modules/aggregator/aggregator.parser.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.parser.inc,v
retrieving revision 1.4
diff -u -r1.4 aggregator.parser.inc
--- modules/aggregator/aggregator.parser.inc	15 Jul 2009 21:32:43 -0000	1.4
+++ modules/aggregator/aggregator.parser.inc	1 Sep 2009 21:54:26 -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'];
     // Update the feed data.
     db_merge('aggregator_feed')
       ->key(array('fid' => $feed->fid))
@@ -53,7 +53,7 @@
         'link' => !empty($channel['link']) ? $channel['link'] : '',
         'description' => !empty($channel['description']) ? $channel['description'] : '',
         'image' => $image,
-        'hash' => md5($feed->source_string),
+        'hash' => md5($feed->data),
         'etag' => $etag,
         'modified' => $modified,
       ))
Index: modules/aggregator/aggregator.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.admin.inc,v
retrieving revision 1.42
diff -u -r1.42 aggregator.admin.inc
--- modules/aggregator/aggregator.admin.inc	24 Aug 2009 17:11:41 -0000	1.42
+++ modules/aggregator/aggregator.admin.inc	1 Sep 2009 21:54:22 -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.8
diff -u -r1.8 aggregator.fetcher.inc
--- modules/aggregator/aggregator.fetcher.inc	24 Aug 2009 00:14:19 -0000	1.8
+++ modules/aggregator/aggregator.fetcher.inc	1 Sep 2009 21:54:22 -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();
@@ -69,8 +69,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);
