query('SELECT * FROM '.$db->prefix.'config') or error('Unable to fetch forum config', __FILE__, __LINE__, $db->error());
while ($cur_config_item = $db->fetch_row($result))
$pun_config[$cur_config_item[0]] = $cur_config_item[1];
// Make sure we (guests) have permission to read the forums
$result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id=3') or error('Unable to fetch group info', __FILE__, __LINE__, $db->error());
if ($db->result($result) == '0')
exit('No permission');
// Attempt to load the common language file
@include PUN_ROOT.'lang/'.$pun_config['o_default_lang'].'/common.php';
if (!isset($lang_common)) exit('There is no valid language pack \''.$pun_config['o_default_lang'].'\' installed. Please reinstall a language of that name.');
// parse RSS
ob_start();
// make feed
/* original query
$result = $db->query(
"select p.id as id, p.message as message, p.posted as postposted, t.subject as subject ".
"from ".$db->prefix."posts as p, ".$db->prefix."topics as t ".
"where p.topic_id=t.id ".
"order by postposted desc ".
"limit 0,15")
or error('Unable to fetch forum posts', __FILE__, __LINE__, $db->error());;
*/
if (!empty($_GET["cid"])) {
$where = " AND c.id = '".intval($_GET['cid'])."'";
$title = 'cid';
}
else if (!empty($_GET["fid"])) {
$where = " AND f.id = '".intval($_GET['fid'])."'";
$title = 'fid';
}
else if (!empty($_GET["tid"])) {
$where = " AND t.id = '".intval($_GET['tid'])."'";
$title = 'tid';
}
else {
$where = '';
$title = '';
}
$query ="
SELECT p.id AS id, p.message AS message, p.posted AS postposted, t.subject AS subject, f.forum_name, c.cat_name
FROM ".$db->prefix."posts p
LEFT JOIN ".$db->prefix."topics t
ON p.topic_id=t.id
INNER JOIN ".$db->prefix."forums AS f
ON f.id=t.forum_id
LEFT JOIN ".$db->prefix."categories AS c
ON f.cat_id = c.id
LEFT JOIN ".$db->prefix."forum_perms AS fp
ON (
fp.forum_id=f.id
AND fp.group_id=3
)
WHERE (
fp.read_forum IS NULL
OR fp.read_forum=0
OR fp.read_forum=1
)
$where
ORDER BY postposted DESC
LIMIT 0,15";
$result = $db->query($query) or error('Unable to fetch forum posts', __FILE__, __LINE__, $db->error());
$i = 0;
while ($cur = $db->fetch_assoc($result))
{ if($i == 0) { putHeader($cur, $title); $i++; }
putPost($cur);
}
putEnd();
// get feed into $feed
$feed = ob_get_contents();
ob_end_clean();
header ("Content-type: application/rss+xml");
echo $feed;
/* entity to unicode decimal value */
function entity_to_decimal_value($string){
static $entities_dec = false;
if (!is_array($entities_dec)) {
$entities_named = array(" ","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ","ƒ","Α","Β","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π","Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω","α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","ς","σ","τ","υ","φ","χ","ψ","ω","ϑ","ϒ","ϖ","•","…","′","″","‾","⁄","℘","ℑ","ℜ","™","ℵ","←","↑","→","↓","↔","↵","⇐","⇑","⇒","⇓","⇔","∀","∂","∃","∅","∇","∈","∉","∋","∏","∑","−","∗","√","∝","∞","∠","∧","∨","∩","∪","∫","∴","∼","≅","≈","≠","≡","≤","≥","⊂","⊃","⊄","⊆","⊇","⊕","⊗","⊥","⋅","⌈","⌉","⌊","⌋","〈","〉","◊","♠","♣","♥","♦",""","&","<",">","Œ","œ","Š","š","Ÿ","ˆ","˜"," "," "," ","","","","","–","—","‘","’","‚","“","”","„","†","‡","‰","‹","›","€","'");
$entities_decimal = array(" ","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ","ƒ","Α","Β","Γ","Δ","Ε","Ζ","Η","Θ","Ι","Κ","Λ","Μ","Ν","Ξ","Ο","Π","Ρ","Σ","Τ","Υ","Φ","Χ","Ψ","Ω","α","β","γ","δ","ε","ζ","η","θ","ι","κ","λ","μ","ν","ξ","ο","π","ρ","ς","σ","τ","υ","φ","χ","ψ","ω","ϑ","ϒ","ϖ","•","…","′","″","‾","⁄","℘","ℑ","ℜ","™","ℵ","←","↑","→","↓","↔","↵","⇐","⇑","⇒","⇓","⇔","∀","∂","∃","∅","∇","∈","∉","∋","∏","∑","−","∗","√","∝","∞","∠","∧","∨","∩","∪","∫","∴","∼","≅","≈","≠","≡","≤","≥","⊂","⊃","⊄","⊆","⊇","⊕","⊗","⊥","⋅","⌈","⌉","⌊","⌋","〈","〉","◊","♠","♣","♥","♦",""","&","<",">","Œ","œ","Š","š","Ÿ","ˆ","˜"," "," "," ","","","","","–","—","‘","’","‚","“","”","„","†","‡","‰","‹","›","€","'");
if (function_exists('array_combine'))
$entities_dec=array_combine($entities_named,$entities_decimal);
else {
$i=0;
foreach ($entities_named as $_entities_named) $entities_dec[$_entities_named]=$entities_decimal[$i++];
}
}
return preg_replace( "/&[A-Za-z]+;/", " ", strtr($string,$entities_dec) );
}
function encode_xml($data){
// line breaks
$data=str_replace('
',"\n",$data);
// ending html tags into line breaks
$data=preg_replace("/<\/(pre|ul|li|p|table|tr)>/","\n",$data);
// remove other html tags
$data=preg_replace("/<(.*?)>/","",$data);
// remove multiple newlines
$data=preg_replace("/\n\n+/","\n\n",$data);
return entity_to_decimal_value($data);
}
function putHeader($cur, $title) {
switch ($title) {
case "cid":
$title = ' : '.$cur['cat_name'];
break;
case "fid":
$title = ' : '.$cur['cat_name'].' : '.$cur['forum_name'];
break;
case "tid":
$title = ' : '.$cur['cat_name'].' : '.$cur['forum_name'].' : '.$cur['subject'];
break;
default:
$title = '';
break;
}
global $lang_common,$pun_config;
echo '<'.'?xml version="1.0" encoding="'.$lang_common['lang_encoding'].'"?'.'>'."\n";
echo "\n";
echo "\n";
echo "\n";
echo "".entity_to_decimal_value(htmlspecialchars($pun_config['o_board_title'].$title))."\n";
echo "".$pun_config['o_base_url']."\n";
echo "".entity_to_decimal_value(htmlspecialchars($rss_description.' '.$pun_config['o_board_title']))."\n";
echo "".strval(date("r",$cur['postposted']))."\n";
echo "".strval(date("r",$cur['postposted']))."\n";
}
function putPost($cur) {
global $pun_config;
echo "- \n";
echo "".entity_to_decimal_value(htmlspecialchars($cur['subject'].' in '.$cur['cat_name'].' : '.$cur['forum_name']))."\n";
$link = $pun_config['o_base_url'].'/viewtopic.php?pid='.strval($cur['id']).'#'.strval($cur['id']);
echo "".entity_to_decimal_value(htmlspecialchars($link))."\n";
echo ''.strval($cur['id']).'@'.$pun_config['o_base_url'].''."\n";
$data = "Topic: ".parse_message($cur['subject'],0)."\n\nMessage: ".parse_message($cur['message'],0);
echo "".encode_xml($data)."\n";
echo "".strval(date("r",$cur['postposted']))."\n";
echo "
\n";
}
function putEnd() {
echo "\n";
echo "\n";
}
?>