1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85:
<?php
class RSS extends Feed
{
private static $default_rss_template = 'framework/content/syndication/rss.tpl';
public function __construct($module_id, $feed_name = Feed::DEFAULT_FEED_NAME, $id_cat = 0)
{
parent::__construct($module_id, $feed_name, $id_cat);
$this->tpl = new FileTemplate(self::$default_rss_template);
}
public function load_file($url)
{
if (($file = @file_get_contents($url)) !== false)
{
$this->data = new FeedData();
if (preg_match('`<item>(.*)</item>`isu', $file))
{
$expParsed = explode('<item>', $file);
$nbItems = (count($expParsed) - 1) > $nbItems ? $nbItems : count($expParsed) - 1;
$this->data->set_date(preg_match('`<!-- RSS generated by PHPBoost on (.*) -->`isu', $expParsed[0], $var) ? $var[1] : '');
$this->data->set_title(preg_match('`<title>(.*)</title>`isu', $expParsed[0], $var) ? $var[1] : '');
$this->data->set_link(preg_match('`<atom:link href="(.*)" rel="self" type="application/rss+xml" />`isu', $expParsed[0], $var) ? $var[1] : '');
$this->data->set_host(preg_match('`<link>(.*)</link>`isu', $expParsed[0], $var) ? $var[1] : '');
$this->data->set_desc(preg_match('`<description>(.*)</description>`isu', $expParsed[0], $var) ? $var[1] : '');
$this->data->set_lang(preg_match('`<language>(.*)</language>`isu', $expParsed[0], $var) ? $var[1] : '');
for ($i = 1; $i <= $nbItems; $i++)
{
$pubDate = strtotime($date[1]);
$item = new FeedItem();
$item->set_title(preg_match('`<title>(.*)</title>`isu', $expParsed[$i], $title) ? $title[1] : '');
$item->set_link(preg_match('`<link>(.*)</link>`isu', $expParsed[$i], $url) ? $url[1] : '');
$item->set_guid(preg_match('`<guid>(.*)</guid>`isu', $expParsed[$i], $guid) ? $guid[1] : '');
$item->set_desc(preg_match('`<desc>(.*)</desc>`isu', $expParsed[$i], $desc) ? $desc[1] : '');
$item->set_date(preg_match('`<pubDate>(.*)</pubDate>`isu', $expParsed[$i], $date) ? new Date(strtotime($date[1]), Timezone::SERVER_TIMEZONE) : null);
$enclosure = preg_match('`<enclosure url="(.*)" length="(.*)" type="(.*)" />`isu', $expParsed[$i]);
if ($enclosure)
{
$enclosure_item = new FeedItemEnclosure();
$enclosure_item->set_lenght($enclosure[2]);
$enclosure_item->set_type($enclosure[3]);
$enclosure_item->set_url($enclosure[1]);
$item->set_enclosure($enclosure_item);
}
$this->data->add_item($item);
}
return true;
}
return false;
}
return false;
}
}
?>