DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
RSS Mod For PhpBB
// This is a mod from phpBB that creates an RSS feed for your forum. I am hoping the folks at phpbb-seo.com can help me out with making this compatible with the 'advanced mod rewrite' mod.
<?php
/***************************************************************************
* rss.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2005 by Lucas van Dijk
* email : lucas@aoe3capitol.nl
*
* $Id: rss.php,v 1.00 2004/07/11 16:46:15 mrlucky Exp $
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
define('IN_PHPBB', 1);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path.'includes/functions_post.php');
include($phpbb_root_path.'includes/bbcode.php');
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
// -------
// Begin Page specific functions
//
function make_xml_compatible($text, $bbcode_uid = '', $use_bbcode = 0)
{
global $board_config, $base_url;
if($use_bbcode)
{
if($bbcode_uid != '')
{
$text = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($text, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $text);
}
else
{
$text = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $text);
}
$text = make_clickable($text);
if($board_config['allow_smilies'])
{
$text = smilies_pass($text);
$text = str_replace("./".$board_config['smilies_path'], $base_url.$board_config['smilies_path'], $text);
}
}
$text = nl2br($text);
$text = str_replace('£', '£', $text);
$text = str_replace('©', '(c)', $text);
$text = htmlspecialchars($text);
return $text;
}
//
// End page specific functions
// ------
//
// If running with PHP3
//
if(!is_array($_SERVER))
{
$_SERVER = $HTTP_SERVER_VARS;
$_GET = $HTTP_GET_VARS;
}
//
// Get Various vars
//
$base_url = ($board_config['cookie_secure'] ? "https://" : "http://").$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
if(substr($base_url, -1) != "/")
{
$base_url .= "/";
}
//
//
// Start RSS output
//
$rss_result = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
<rss version=\"2.0\">
<channel>
<title>".make_xml_compatible($board_config['sitename'])."</title>
<link>".$base_url."index.php</link>
<description>".make_xml_compatible($board_config['site_desc'])."</description>
<language>".$board_config['default_lang']."</language>
<copyright>(c) Copyright 2007 by ".make_xml_compatible($board_config['sitename'])."</copyright>
<managingEditor>".$board_config['board_email']."</managingEditor>
<webMaster>".$board_config['board_email']."</webMaster>
<pubDate>".create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])."</pubDate>
<lastBuildDate>".create_date($board_config['default_dateformat'], time(), $board_config['board_timezone'])."</lastBuildDate>
<docs>http://backend.userland.com/rss</docs>
<generator>phpBB2 RSS Syndication Mod by Lucas</generator>
<ttl>1</ttl>
<image>
<title>".make_xml_compatible($board_config['sitename'])."</title>
<url>".$board_config['rss_image']."</url>
<link>".$base_url."</link>
<description>".make_xml_compatible($board_config['site_desc'])."</description>
</image>
";
//
// Get latest topics
//
$forum=1;
//
// This SQL query selects the latest topics of a specific forum
//
$sql = "SELECT t.topic_title, t.topic_last_post_id, p.post_time, pt.post_text, pt.bbcode_uid, pt.post_link, u.username, u.user_id
FROM ".TOPICS_TABLE." t, ".POSTS_TABLE." p, ".POSTS_TEXT_TABLE." pt, ".USERS_TABLE." u
WHERE t.forum_id = ".$forum."
AND t.topic_status != 1
AND p.post_id = t.topic_last_post_id
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
ORDER BY t.topic_last_post_id DESC
LIMIT 0, ".intval($board_config['max_rss_topics']);
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Could not get Latest topics", '', __LINE__, __FILE__, $sql);
}
$is_auth = array();
$is_auth = auth(AUTH_ALL, $forum, $userdata);
while($row = $db->sql_fetchrow($result))
{
//Read link MOD
$post_link = ( $row['post_link'] != '' ) ? $row['post_link'] : '';
//end read link
if($is_auth['auth_view'] && $is_auth['auth_read'])
{
$description = "
".$lang['Posted']." ".create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone'])."<br />
<br />
".$row['post_text']
."<br /><br />
<a href=\"$post_link\">Read</a> | <a href=\"".$base_url."viewtopic.php?".POST_POST_URL."=".$row['topic_last_post_id']."\" >Permalink</a>"
."<hr />";
$rss_result .= "
<item>
<title>".make_xml_compatible(strip_tags($row['topic_title']))."</title>
<link>".$base_url."viewtopic.php?".POST_POST_URL."=".$row['topic_last_post_id']."</link>
<description>".make_xml_compatible($description, $row['bbcode_uid'], true)."</description>
<pubDate>".create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone'])."</pubDate>
<guid isPermaLink=\"true\">".$base_url."viewtopic.php?".POST_POST_URL."=".$row['topic_last_post_id']."#".$row['topic_last_post_id']."</guid>
</item>";
}
}
$rss_result .= "</channel></rss>";
header("Content-type: text/xml", true);
echo $rss_result;
?>




