Hi -
I added RSS 1.0 (RDF) functionality to my install of vB Journal. Basically, you have to change "SELECT journalist" to "SELECT journalist,journalname,journaldesc" in the downloadjournal section of journal.php, make sure your Unregistered usergroup can view journals in the Admin CP, and paste this code in journal.php after the XML download part:
Code:
// RSS 1.0 Begins
else if($type=="rss1")
{
require_once('./includes/functions_bbcodeparse.php');
$rss1_header .= "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n\r\n";
$rss1_header .= "<rdf:RDF\r\n";
$rss1_header .= " xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\r\n";
$rss1_header .= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\r\n";
$rss1_header .= " xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\r\n";
$rss1_header .= " xmlns=\"http://purl.org/rss/1.0/\"\r\n";
$rss1_header .= ">\r\n\r\n";
$rss1_header .= "<channel rdf:about=\"".$vboptions['bburl']."/journal.php?do=downloadjournal&j=".$j."&type=rss1\">\r\n";
if ($journal['journalname'] == "") { $journal['journalname'] = $journal['journalist'] . "'s Blog"; }
$rss1_header .= "<title>".htmlspecialchars($journal['journalname'])."</title>\r\n";
$rss1_header .= "<link>".$vboptions['bburl']."/journal.php?do=showjournal&j=".$j."</link>\r\n";
if (empty($journal['journaldesc'])) { $journal['journaldesc'] = $journal['journalist']."'s Blog at ".$vboptions['bbtitle']; }
$rss1_header .= "<description>".htmlspecialchars($journal['journaldesc'])."</description>\r\n\r\n";
$rss1_header .= "<items>\r\n";
$rss1_header .= "\t<rdf:Seq>\r\n";
$totalentries = 0;
while($entry= $DB_site->fetch_array($getentries))
{
if($entry['private']!=1)
{
$totalentries++;
$entry['entrytext']= parse_bbcode2($entry['entrytext'], 0, $setting['allow_imgcode'], $setting['allow_smilies'], $setting['allow_bbcode']);
$entry['entrytext']= unhtmlspecialchars(stripslashes($entry['entrytext']));
$entry['entrytext']= ereg_replace("{smilies}", $vboptions['bburl']."/images/smilies", $entry['entrytext']);
$entry['entrytitle']= stripslashes($entry['entrytitle']);
$rss1_header .= "\t\t<rdf:li rdf:resource=\"".$vboptions['bburl']."/journal.php?do=showentry&e=".$entry['entry_id']."\" />\r\n";
$rss1_body .= "\t<item rdf:about=\"".$vboptions['bburl']."/journal.php?do=showentry&e=".$entry['entry_id']."\">\r\n";
$rss1_body .= "\t\t<title>".htmlspecialchars($entry['entrytitle'])."</title>\r\n";
$W3CDTFdate = preg_replace("/(\+|\-)([0-9]{2})([0-9]{2})/","$1$2:$3", date("O",$entry['entrydate']));
$rss1_body .= "\t\t<dc:date>".date("Y-m-d",$entry['entrydate'])."T".date("H:i:s",$entry['entrydate']).$W3CDTFdate."</dc:date>\r\n";
$rss1_body .= "\t\t<link>".$vboptions['bburl']."/journal.php?do=showentry&e=".$entry['entry_id']."</link>\r\n";
$rss1_body .= "\t\t<content:encoded><![CDATA[".$entry['entrytext']."]]></content:encoded>\r\n";
$rss1_body .= "\t\t<description>".htmlspecialchars(strip_tags($entry['entrytext']))."</description>\r\n";
$rss1_body .= "\t</item>\r\n\r\n";
}
if($totalentries=="15") { break; }
}
$rss1_header .= "\t</rdf:Seq>\r\n";
$rss1_header .= "</items>\r\n\r\n";
$rss1_header .= "</channel>\r\n\r\n";
$rss1_body .= "</rdf:RDF>";
$filestring = utf8_encode($rss1_header.$rss1_body);
$filename = "$journal[journalist]_blog_".vbdate($vboptions['dateformat'], TIMENOW).'.rdf';
header("Content-Type: application/rdf+xml; charset=utf-8");
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Length: ' . strlen($filestring));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
echo $filestring;
}
// RSS 1.0 Ends
You'll then need to add a link to download it in the drop down menu. More as I figure it out...
Edit (2005-03-30): The template is called journal_journalpage - change type=xml to type=rss1 and XML Format to RSS 1.0 Format. Fixed problem with a missing private check.
Edit (2005-03-31): Added content:encoded CDATA, and removed UBB tags. Changed items to use URL instead of an arbitrary sequence number. I also like to change "ORDER by entrydate ASC" to DESC in downloadjournal, but this is personal preference.
Edit (2005-04-14): I've made quite a few changes to the code, namely adding UTF-8 encoding and using corresponding content-type, adding a check to make sure the journal title isn't empty, limiting the number of items to 15.