View Single Post
  #384  
Old 10-21-2004, 02:52 PM
Cloud-Warrior's Avatar
Cloud-Warrior Cloud-Warrior is offline
 
Join Date: Feb 2002
Location: Galway, Ireland
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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&amp;j=".$j."&amp;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&amp;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&amp;e=".$entry['entry_id']."\" />\r\n";
						$rss1_body .= "\t<item rdf:about=\"".$vboptions['bburl']."/journal.php?do=showentry&amp;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&amp;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.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01327 seconds
  • Memory Usage 1,797KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete