Topic: Need help to custom RSS feed

Hi !

I just need to custom the RSS feed : in the description, I just want the name of the forum... I think I found the line in extern.php but I'm a newbie in php...

echo "\t\t".'<description><![CDATA['.escape_cdata($lang_extern['Forum'].': <a href="'.$pun_config['o_base_url'].'/viewforum.php?id='.$cur_topic['fid'].'" target="_blank">'.$cur_topic['forum_name'].'</a><br />'."\r\n".$lang_extern['Author'].': '.$cur_topic['poster'].'<br />'."\r\n".$lang_extern['Posted'].': '.date('r', $cur_topic['posted']).'<br />'."\r\n".$lang_extern['Last post'].': '.date('r', $cur_topic['last_post'])).']]></description>'."\r\n";

Plz help me big_smile

thanks in advance

Re: Need help to custom RSS feed

Try this:

echo "\t\t".'<description>'.pun_htmlspecialchars($cur_topic['forum_name']).'</description>'."\r\n";
"Programming is like sex: one mistake and you have to support it for the rest of your life."

Re: Need help to custom RSS feed

That's ok !

thanks you !

Re: Need help to custom RSS feed

...and now, how can I have only the last topic of the forum n°4 ?

I try to syndicate this link

http://www.domain.tld/forum/extern.php?action=new&show=1&fid=4

but it doesn't run sad

Re: Need help to custom RSS feed

It works for me. Try it in these forums. Are you sure there's a forum with id = 4?

"Programming is like sex: one mistake and you have to support it for the rest of your life."

6 (edited by bobdeo 2004-07-09 13:42)

Re: Need help to custom RSS feed

Thanks !

I use a CMS named Spip (spip.net) to import RSS feed... the correct way is

domain.tld/forum/extern.php?action=active&type=RSS&fid=4

7

Re: Need help to custom RSS feed

I am trying to get "Carp" to work.

When I go to my website: (example) mywebsite.com/carpsetup.php to try to access the carpsetup file, I get this notice:

Warning: main(/domains/mydomain.com/public_html/carp): failed to open stream: No such file or directory in /home/my login/domains/mydomain.com/public_html/carpsetup.php on line 13

Warning: main(): Failed opening '/domains/mydomain.com/public_html/carp' for inclusion (include_path='.:/usr/local/lib/php') in /home/mylogin/domains/mydomain.com/public_html/carpsetup.php on line 13

(I had to substitute "mydomain" and "mylogin" to replace my real info, of coarse) other then that the code has not been altered.

I uploaded the carp folder inside my public_html folder, Then,
I uploaded "carpsetup.php" outside of the carp folder but still inside of the public_html folder.
Now a very interesting note: when I copied and pasted the above error url address: /home/mylogin/domains/mywebsite.com/public_html/carpsetup.php it brought me to a NASA website about Apollo 11!
What the heck is that about? My domain has nothing to do with NASA. Is that a rss feed?

I feel that I have not edited the carpsetup.php file correctly, or I have the wrong path to a folder or file.

Any help would be greatly appreciated.
rss newbie
please email me at : perconi@yahoo.com  with any help,  Thanks again.

8

Re: Need help to custom RSS feed

i use rss include on webpage, how to put autors name for topic? there is rss.php code

<?php
/**
  * BLOG:CMS: PHP/MySQL Personal Content Management System 
  * http://blogcms.com/
  * http://forum.blogcms.com/
  *
  * 2003-2004, (c) Radek HULAN 
  * http://hulan.cz/
  *
  * Mod by Bert Garcia for PunBB 1.2.1
  * http://nupusi.com
  *
  * Additional changes Copyright 2005 by Alex King
  * Now creates feeds for categories, forums, topics
  * http://www.alexking.org/software/
  *
  * Please see the enclosed readme.txt file for usage
  *
  * 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.

// **********************************************************************
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
// *****************************************************************

**/


define('PUN_ROOT', './');
@include PUN_ROOT.'config.php';

// If PUN isn't defined, config.php is missing or corrupt
if (!defined('PUN'))
    exit('The file \'config.php\' doesn\'t exist or is corrupt. Please run install.php to install PunBB first.');

// Disable error reporting for uninitialized variables
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Turn off magic_quotes_runtime
set_magic_quotes_runtime(0);


// Load the functions script
require PUN_ROOT.'include/functions.php';
require PUN_ROOT.'include/parser.php';

// Load DB abstraction layer and try to connect
require PUN_ROOT.'include/dblayer/common_db.php';

// Get the forum config
$result = $db->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 = '';
}
$result = $db->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=1
    ) 
    $where 
    ORDER BY postposted DESC 
    LIMIT 0,15
") 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();

// create ETAG (hash of feed)
$eTag = '"'.md5($feed).'"';
header('Etag: '.$eTag);

// compare Etag to what we got
if ($eTag == $_SERVER['HTTP_IF_NONE_MATCH']) {    
    header("HTTP/1.0 304 Not Modified");
    header('Content-Length: 0');
} else {
    // dump feed
    header ("Content-type: text/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(" ","¡","¢","£","¤","¥","¦","§","¨","©","ª","«","¬","­","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ý","þ","ÿ","ƒ","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","•","…","?","?","?","?","?","?","?","™","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?",""","&","<",">","Œ","œ","Š","š","Ÿ","ˆ","˜","?","?","?","?","?","?","?","–","—","‘","’","‚","“","”","„","†","‡","‰","‹","›","€","&apos;");
        $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('<br(.*?)>',"\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 "<rss version=\"2.0\">\n";
    echo "<channel>\n";
    echo "<title>".entity_to_decimal_value(htmlspecialchars($pun_config['o_board_title'].$title))."</title>\n";
    echo "<link>".$pun_config['o_base_url']."</link>\n";
    echo "<description>".entity_to_decimal_value(htmlspecialchars($rss_description.' '.$pun_config['o_board_title']))."</description>\n";
    echo "<language>en</language>\n";
    echo "<docs>http://backend.userland.com/rss</docs>\n";
} 

function putPost($cur) {
    global $pun_config;
    echo "<item>\n";
    echo "<title>".entity_to_decimal_value(htmlspecialchars($cur['subject']))."</title>\n";
    $link = $pun_config['o_base_url'].'/viewtopic.php?pid='.strval($cur['id']).'#'.strval($cur['id']);
    echo "<link>".entity_to_decimal_value(htmlspecialchars($link))."</link>\n";
    echo '<guid isPermaLink="false">'.strval($cur['id']).'@'.$pun_config['o_base_url'].'</guid>'."\n";
    $data = "-(~ ".parse_message($cur['message'],0);
    echo "<description>".encode_xml($data)."</description>\n";
//    echo "<content:encoded><![CDATA[".$data."]]></content:encoded>\n";
    echo "<pubDate>".strval(date("r",$cur['postposted']))."</pubDate>\n";
    echo "</item>\n";
}


function putEnd() {
    echo "</channel>\n";
    echo "</rss>\n";
} 

?>
it's just me...

9

Re: Need help to custom RSS feed

faax wrote:

i use rss include on webpage, how to put autors name for topic? there is rss.php code

faax, I answered your question in the other thread:
http://punbb.org/forums/viewtopic.php?pid=67267#p67267