View Single Post
  #743  
Old 11-28-2005, 08:37 AM
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,journalist_id" to "SELECT journalist,journalist_id,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/class_bbcode.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=\"".$vbulletin->options['bburl']."/journal.php?do=downloadjournal&amp;j=".$j."&amp;type=rss1\">\r\n";
                                if ($journalinfo['journalname'] == "") { $journalinfo['journalname'] = $journalinfo['journalist'] . "'s Blog"; }
                                $rss1_header .= "<title>".htmlspecialchars($journalinfo['journalname'])."</title>\r\n";
                                $rss1_header .= "<link>".$vbulletin->options['bburl']."/journal.php?do=showjournal&amp;j=".$j."</link>\r\n";
                                if (empty($journalinfo['journaldesc'])) { $journalinfo['journaldesc'] = $journalinfo['journalist']."'s Blog at ".$vbulletin->options['bbtitle']; }
                                $rss1_header .= "<description>".htmlspecialchars($journalinfo['journaldesc'])."</description>\r\n\r\n";
                                $rss1_header .= "<items>\r\n";
                                $rss1_header .= "\t<rdf:Seq>\r\n";

                                $totalentries = 0;

                                while($entry= $db->fetch_array($getentries))
                                {
                                        if($entry['private']!=1)
                                        {
                                                $totalentries++;

					        $parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
					        $entry['entrytext'] = $parser->do_parse($entry['entrytext']);
                                                $entry['entrytext']= unhtmlspecialchars(stripslashes($entry['entrytext']));
                                                $entry['entrytext']= ereg_replace("{smilies}", $vbulletin->options['bburl']."/images/smilies", $entry['entrytext']);

                                                $entry['entrytitle']= stripslashes($entry['entrytitle']);


                                                $rss1_header .= "\t\t<rdf:li rdf:resource=\"".$vbulletin->options['bburl']."/journal.php?do=showentry&amp;e=".$entry['entry_id']."\" />\r\n";
                                                $rss1_body .= "\t<item rdf:about=\"".$vbulletin->options['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>".$vbulletin->options['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 = "$journalinfo[journalist]_blog_".vbdate($vbulletin->options['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.

Edit (2005-11-28): Updated for vB 3.5.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01336 seconds
  • Memory Usage 1,801KB
  • 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