Gazelle/classes/class_feed.php
What.CD edaabc385b Use SSL for links in RSS feed if appropriate
Add support for multiple forums with public voters

Use geoip function

Add support for neutral leech in Sphinx
2011-05-13 08:00:07 +00:00

71 lines
2.4 KiB
PHP

<?
class FEED {
var $UseSSL = false; // If we're using SSL for blog and news links
function open_feed() {
header("Content-type: application/xml; charset=UTF-8");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n","<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n\t<channel>\n";
}
function close_feed() {
echo "\t</channel>\n</rss>";
}
function channel($Title, $Description, $Section='') {
$Site = $this->UseSSL ? 'https://'.SSL_SITE_URL : 'http://'.NONSSL_SITE_URL;
echo "\t\t<title>$Title :: ". SITE_NAME. "</title>\n";
echo "\t\t<link>$Site/$Section</link>\n";
echo "\t\t<description>$Description</description>\n";
echo "\t\t<language>en-us</language>\n";
echo "\t\t<lastBuildDate>". date('r'). "</lastBuildDate>\n";
echo "\t\t<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
echo "\t\t<generator>Gazelle Feed Class</generator>\n\n";
}
function item($Title, $Description, $Page, $Creator, $Comments='', $Category='', $Date='') { //Escape with CDATA, otherwise the feed breaks.
if ($Date == '') {
$Date = date("r");
} else {
$Date = date("r",strtotime($Date));
}
$Site = $this->UseSSL ? 'https://'.SSL_SITE_URL : 'http://'.NONSSL_SITE_URL;
$Item = "\t\t<item>\n";
$Item .= "\t\t\t<title><![CDATA[$Title]]></title>\n";
$Item .= "\t\t\t<description><![CDATA[$Description]]></description>\n";
$Item .= "\t\t\t<pubDate>$Date</pubDate>\n";
$Item .= "\t\t\t<link>$Site/$Page</link>\n";
$Item .= "\t\t\t<guid>$Site/$Page</guid>\n";
if ($Comments != '') {
$Item .= "\t\t\t<comments>$Site/$Comments</comments>\n";
}
if ($Category != '') {
$Item .= "\t\t\t<category><![CDATA[$Category]]></category>\n";
}
$Item .= "\t\t\t<dc:creator>$Creator</dc:creator>\n\t\t</item>\n";
return $Item;
}
function retrieve($CacheKey,$AuthKey,$PassKey) {
global $Cache;
$Entries = $Cache->get_value($CacheKey);
if(!$Entries){
$Entries = array();
} else {
foreach($Entries as $Item){
echo str_replace(array('[[PASSKEY]]','[[AUTHKEY]]'),array(display_str($PassKey),display_str($AuthKey)),$Item);
}
}
}
function populate($CacheKey,$Item) {
global $Cache;
$Entries = $Cache->get_value($CacheKey,true);
if(!$Entries){
$Entries = array();
} else {
if(count($Entries)>=50) {
array_pop($Entries);
}
}
array_unshift($Entries, $Item);
$Cache->cache_value($CacheKey, $Entries, 0); //inf cache
}
}