Example #1
0
 /**
  * {@inheritdoc}
  */
 public function parse(FeedInterface $feed)
 {
     // Set our bridge extension manager to Zend Feed.
     Reader::setExtensionManager(\Drupal::service('feed.bridge.reader'));
     try {
         $channel = Reader::importString($feed->source_string);
     } catch (ExceptionInterface $e) {
         watchdog_exception('aggregator', $e);
         drupal_set_message(t('The feed from %site seems to be broken because of error "%error".', array('%site' => $feed->label(), '%error' => $e->getMessage())), 'error');
         return FALSE;
     }
     $feed->setWebsiteUrl($channel->getLink());
     $feed->setDescription($channel->getDescription());
     if ($image = $channel->getImage()) {
         $feed->setImage($image['uri']);
     }
     // Initialize items array.
     $feed->items = array();
     foreach ($channel as $item) {
         // Reset the parsed item.
         $parsed_item = array();
         // Move the values to an array as expected by processors.
         $parsed_item['title'] = $item->getTitle();
         $parsed_item['guid'] = $item->getId();
         $parsed_item['link'] = $item->getLink();
         $parsed_item['description'] = $item->getDescription();
         $parsed_item['author'] = '';
         if ($author = $item->getAuthor()) {
             $parsed_item['author'] = $author['name'];
         }
         $parsed_item['timestamp'] = '';
         if ($date = $item->getDateModified()) {
             $parsed_item['timestamp'] = $date->getTimestamp();
         }
         // Store on $feed object. This is where processors will look for parsed items.
         $feed->items[] = $parsed_item;
     }
     return TRUE;
 }