first import
This commit is contained in:
62
sites/all/modules/feeds/plugins/FeedsSitemapParser.inc
Normal file
62
sites/all/modules/feeds/plugins/FeedsSitemapParser.inc
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains FeedsSitemapParser and related classes.
|
||||
*/
|
||||
|
||||
/**
|
||||
* A parser for the Sitemap specification http://www.sitemaps.org/protocol.php
|
||||
*/
|
||||
class FeedsSitemapParser extends FeedsParser {
|
||||
/**
|
||||
* Implements FeedsParser::parse().
|
||||
*/
|
||||
public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
|
||||
// Set time zone to GMT for parsing dates with strtotime().
|
||||
$tz = date_default_timezone_get();
|
||||
date_default_timezone_set('GMT');
|
||||
// Yes, using a DOM parser is a bit inefficient, but will do for now
|
||||
$xml = new SimpleXMLElement($fetcher_result->getRaw());
|
||||
$result = new FeedsParserResult();
|
||||
foreach ($xml->url as $url) {
|
||||
$item = array('url' => (string) $url->loc);
|
||||
if ($url->lastmod) {
|
||||
$item['lastmod'] = strtotime($url->lastmod);
|
||||
}
|
||||
if ($url->changefreq) {
|
||||
$item['changefreq'] = (string) $url->changefreq;
|
||||
}
|
||||
if ($url->priority) {
|
||||
$item['priority'] = (string) $url->priority;
|
||||
}
|
||||
$result->items[] = $item;
|
||||
}
|
||||
date_default_timezone_set($tz);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements FeedsParser::getMappingSources().
|
||||
*/
|
||||
public function getMappingSources() {
|
||||
return array(
|
||||
'url' => array(
|
||||
'name' => t('Item URL (link)'),
|
||||
'description' => t('URL of the feed item.'),
|
||||
),
|
||||
'lastmod' => array(
|
||||
'name' => t('Last modification date'),
|
||||
'description' => t('Last modified date as UNIX time GMT of the feed item.'),
|
||||
),
|
||||
'changefreq' => array(
|
||||
'name' => t('Change frequency'),
|
||||
'description' => t('How frequently the page is likely to change.'),
|
||||
),
|
||||
'priority' => array(
|
||||
'name' => t('Priority'),
|
||||
'description' => t('The priority of this URL relative to other URLs on the site.'),
|
||||
),
|
||||
) + parent::getMappingSources();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user