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"; } ?>