/**
  * Render feed
  * 
  * Render RSS 2.0 feed (spec: http://blogs.law.harvard.edu/tech/rss)
  *
  * @param Angie_Feed $feed
  * @return string
  */
 function render(Angie_Feed $feed)
 {
     $result = "<rss version=\"2.0\">\n";
     //$result  = "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
     $result .= "<channel>\n";
     $feed_url = externalUrl(clean($feed->getLink()));
     //$result .= "<atom:link href=\"$feed_url\" rel=\"self\" type=\"application/rss+xml\" />\n";
     $result .= '<title>' . clean($feed->getTitle()) . "</title>\n";
     $result .= '<link>' . $feed_url . "</link>\n";
     if ($description = trim($feed->getDescription())) {
         $description = "empty";
     }
     // if
     $result .= '<description>' . clean($description) . "</description>\n";
     if ($language = trim($feed->getLanguage())) {
         $result .= '<language>' . clean($language) . "</language>\n";
     }
     // if
     foreach ($feed->getItems() as $feed_item) {
         $result .= $this->renderItem($feed_item) . "\n";
     }
     // foreach
     $result .= "</channel>\n</rss>";
     return $result;
 }
 /**
 * Render feed
 * 
 * Render RSS 2.0 feed (spec: http://blogs.law.harvard.edu/tech/rss)
 *
 * @param Angie_Feed $feed
 * @return string
 */
 function render(Angie_Feed $feed) {
   $result  = "<rss version=\"2.0\">\n<channel>\n";
   $result .= '<title>' . clean($feed->getTitle()) . "</title>\n";
   $result .= '<link>' . clean($feed->getLink()) . "</link>\n";
   if($description = trim($feed->getDescription())) {
     $result .= '<description>' . clean($description) . "</description>\n";
   } // if
   if($language = trim($feed->getLanguage())) {
     $result .= '<language>' . clean($language) . "</language>\n";
   } // if
   
   foreach($feed->getItems() as $feed_item) {
     $result .= $this->renderItem($feed_item) . "\n";
   } // foreach
   
   $result .= "</channel>\n</rss>";
   return $result;
 } // render
 /**
  * Populate feed object with activity log entries
  *
  * @param Angie_Feed
  * @param array $activity_log
  * @return Angie_Feed
  */
 private function populateFeedFromLog(Angie_Feed $feed, $activity_log)
 {
     if (is_array($activity_log)) {
         foreach ($activity_log as $activity_log_entry) {
             $item = $feed->addItem(new Angie_Feed_Item($activity_log_entry->getText(), undo_htmlspecialchars($activity_log_entry->getObjectUrl()), '', $activity_log_entry->getCreatedOn()));
             $taken_by = $activity_log_entry->getTakenBy();
             if ($taken_by instanceof User) {
                 $item->setAuthor(new Angie_Feed_Author($taken_by->getDisplayName(), $taken_by->getEmail()));
             }
             // if
         }
         // foreach
     }
     // if
     return $feed;
 }
 /**
  * Populate feed object with activity log entries
  *
  * @param Angie_Feed
  * @param array $activity_log
  * @return Angie_Feed
  */
 private function populateFeedFromLog(Angie_Feed $feed, $activity_log)
 {
     $this->addHelper('textile');
     if (is_array($activity_log)) {
         foreach ($activity_log as $activity_log_entry) {
             tpl_assign('object', $activity_log_entry->getObject());
             $description = 'no object attached';
             if ($activity_log_entry->getObject()) {
                 $object_type = str_replace(" ", "_", strtolower($activity_log_entry->getObject()->getObjectTypeName()));
                 if (file_exists(get_template_path('render_' . $object_type, 'feed'))) {
                     $description = tpl_fetch(get_template_path('render_' . $object_type, 'feed'));
                 } else {
                     $description = tpl_fetch(get_template_path('render_object', 'feed'));
                 }
             }
             $item = $feed->addItem(new Angie_Feed_Item($activity_log_entry->getText(), undo_htmlspecialchars($activity_log_entry->getObjectUrl()), $description, $activity_log_entry->getCreatedOn()));
             $taken_by = $activity_log_entry->getTakenBy();
             if ($taken_by instanceof User) {
                 $item->setAuthor(new Angie_Feed_Author($taken_by->getDisplayName(), $taken_by->getEmail()));
             }
             // if
         }
         // foreach
     }
     // if
     return $feed;
 }