Index: eparse_type_atom.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_eparser/plugins/eparse_type_atom.inc,v
retrieving revision 1.3
diff -u -r1.3 eparse_type_atom.inc
--- eparse_type_atom.inc	30 Apr 2009 20:23:27 -0000	1.3
+++ eparse_type_atom.inc	10 Aug 2009 11:36:39 -0000
@@ -2,13 +2,18 @@
 // $Id: eparse_type_atom.inc,v 1.3 2009/04/30 20:23:27 neclimdul Exp $
 /**
  * @file
- * 
+ * Type handler for parsing ATOM 1.0 wrapped content.
+ *
+ * This plugin builds on top of the ATOM 1.0 namespace plugin collecting
+ * data from the parsed_source->atom collection to populate required fields.
  */
 
+/**
+ * Eparse ATOM 1.0 type parsing plugin.
+ */
 class eparse_type_atom extends feedapi_eparser_type_plugin {
 
   function parse_global() {
-    //
     $atom_data = $this->parsed_source->atom;
 
     // Detect the title.
@@ -32,12 +37,39 @@
     $this->parsed_source->options = drupal_clone($atom_data);
   }
 
+  /**
+   * Retrieve the items collection from the xml feed.
+   */
   function get_items() {
     return $this->xml->entry;
   }
 
-  function parse_item() {
-    //
+  /**
+   * Parse feed items.
+   */
+  function parse_item(&$xml_item, &$item) {
+    $data = $item->atom;
+
+    // Populate body with schedule abstract
+    if (isset($data->description)) {
+      $body = $data->description;
+    }
+
+    // Required values.
+    $item->title = eparse_namespace_rss20::get_item_title($data->title, $body);
+    $item->description = $body;
+
+    $item->options = drupal_clone($data);
+    $item->options->original_author = (string) (!empty($this->xml->author->name) ?
+      $this->xml->author->name : '');
+
+    foreach ($data->link as $link) {
+      if ($link->rel == 'self') {
+        $link = isset($link) ? $link : "";
+      }
+    }
+    $item->options->original_url = $link->href;
+    $item->options->guid = $data->id;
   }
 
 }
\ No newline at end of file
Index: eparse_namespace_atom10.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_eparser/plugins/eparse_namespace_atom10.inc,v
retrieving revision 1.1
diff -u -r1.1 eparse_namespace_atom10.inc
--- eparse_namespace_atom10.inc	30 Apr 2009 20:18:13 -0000	1.1
+++ eparse_namespace_atom10.inc	10 Aug 2009 11:36:39 -0000
@@ -72,7 +72,57 @@
       //   'email',
       // ),
   }
-  
+  /**
+   * Parse feed item data.
+   */
+  function parse_item(&$xml_item, &$item) {
+    $data = $this->convert_strings(array(
+      'title',
+      'summary',
+      'content',
+      'link',
+      'id',
+      'published',
+      'updated',
+    ), $xml_item);
+
+    if (!empty($xml_item->content)) {
+      $body = '';
+      foreach ($xml_item->content->children() as $child)  {
+        $body .= $child->asXML();
+      }
+      $body .= "{$xml_item->content}";
+    }
+    else if (!empty($xml_item->summary)) {
+      $body = '';
+      foreach ($xml_item->summary->children() as $child)  {
+        $body .= $child->asXML();
+      }
+      $body .= "{$xml_item->summary}";
+    }
+    $data->description = $body;
+
+    // Find links if they exist.
+    if (isset($xml_item->link)) {
+      $links = count($xml_item->link) ? $xml_item->link : array($xml_item->link);
+      foreach ($links as $link) {
+        //
+        $attributes = $link->attributes();
+        $data->link[] = $this->convert_strings(array(
+          'href',
+          'rel',
+          'type',
+          'hreflang',
+          'title',
+          'length',
+        ), $attributes);
+      }
+    }
+    // Required values.
+    $data->timestamp = isset($data->published) ? $this->parse_date($data->published) : time();
+    $item->atom = $data;
+  }
+
   function convert_attributes_string($map, &$content, &$base = NULL) {
 
     if (!isset($base)) {
@@ -89,7 +139,7 @@
   }
   
   /**
-   * Figure out where the RSS data is stored.
+   * Figure out where the Atom data is stored.
    *
    * @param $context
    * @return
