123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /**
- * @file
- * Contains FeedsSyndicationParser and related classes.
- */
- /**
- * Class definition for Common Syndication Parser.
- *
- * Parses RSS and Atom feeds.
- */
- class FeedsSyndicationParser extends FeedsParser {
- /**
- * Implements FeedsParser::parse().
- */
- public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
- feeds_include_library('common_syndication_parser.inc', 'common_syndication_parser');
- $feed = common_syndication_parser_parse($fetcher_result->getRaw());
- $result = new FeedsParserResult();
- $result->title = $feed['title'];
- $result->description = $feed['description'];
- $result->link = $feed['link'];
- if (is_array($feed['items'])) {
- foreach ($feed['items'] as $item) {
- if (isset($item['geolocations'])) {
- foreach ($item['geolocations'] as $k => $v) {
- $item['geolocations'][$k] = new FeedsGeoTermElement($v);
- }
- }
- $result->items[] = $item;
- }
- }
- return $result;
- }
- /**
- * Return mapping sources.
- *
- * At a future point, we could expose data type information here,
- * storage systems like Data module could use this information to store
- * parsed data automatically in fields with a correct field type.
- */
- public function getMappingSources() {
- return array(
- 'title' => array(
- 'name' => t('Title'),
- 'description' => t('Title of the feed item.'),
- ),
- 'description' => array(
- 'name' => t('Description'),
- 'description' => t('Description of the feed item.'),
- ),
- 'author_name' => array(
- 'name' => t('Author name'),
- 'description' => t('Name of the feed item\'s author.'),
- ),
- 'timestamp' => array(
- 'name' => t('Published date'),
- 'description' => t('Published date as UNIX time GMT of the feed item.'),
- ),
- 'url' => array(
- 'name' => t('Item URL (link)'),
- 'description' => t('URL of the feed item.'),
- ),
- 'guid' => array(
- 'name' => t('Item GUID'),
- 'description' => t('Global Unique Identifier of the feed item.'),
- ),
- 'tags' => array(
- 'name' => t('Categories'),
- 'description' => t('An array of categories that have been assigned to the feed item.'),
- ),
- 'geolocations' => array(
- 'name' => t('Geo Locations'),
- 'description' => t('An array of geographic locations with a name and a position.'),
- ),
- ) + parent::getMappingSources();
- }
- }
|