<?php
/***************************************************************************
 *                                  rdf.php
 *                            -------------------
 *   begin                : Saturday, Mar 2, 2002
 *   copyright            : (C) 2002 Matthijs van de Water
 *                                   Sascha Carlin
 *   email                : matthijs@beryllium.net
 *                          sc@itst.org
 *
 *   $Id: rdf.php,v 1.2 2002/04/15 13:15:01 mvdwater 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.
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   PHPBB 2.0 RDF CONTENT SYNDICATOR
 *   Shows last active topics RDF XML form
 *
 ***************************************************************************
 *
 *   Put this file in your phpBB2 directory.
 *   You can call this script without parameters, what will
 *   result in an RDF with the 10 latest posts from all your forums.
 *   You can specify the number of posts via the url parameter count:
 *
 *   http://www.domain.com/phpBB2/rdf.php?count=50
 *   
 *   This will result in an RDF file with the latest 50 posts from
 *   all your forums.
 *   
 *   You can also specify to look only at a specified forum using the
 *   fid parameter:
 *   
 *   http://www.domain.com/phpBB2/rdf.php?fid=9
 *   
 *   This will result in an RDF file with the latest 10 posts from
 *   your forum with the id 9.
 *   
 *   You can also mix the paramters:
 *   
 *   http://www.domain.com/phpBB2/rdf.php?fid=5&count=3
 *   
 *   will show you the latest 3 posts from forum 5.
 *
 *   THIS SCRIPT WILL ONLY SHOW POSTS FROM PUBLIC FORUMS
 *
 ***************************************************************************/

// XML and nocaching headers
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
header ('Expires: ' gmdate('D, d M Y H:i:s'time()) . ' GMT');
header ('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT');
header ('Content-Type: text/xml');

// Includes of phpBB scripts
define ('IN_PHPBB'true);
$phpbb_root_path './';
include(
$phpbb_root_path 'extension.inc');
include(
$phpbb_root_path 'common.'.$phpEx);

// If not set, set the output count to 10
$count = ( !isset($HTTP_GET_VARS['count']) ) ? 10 intval($HTTP_GET_VARS['count']);
$count = ( $count == ) ? 10 $count;

// Create main board url (some code borrowed from functions_post.php)
$script_name preg_replace('/^\/?(.*?)\/?$/''\1'trim($board_config['script_path']));
$viewtopic = ( $script_name != '' ) ? $script_name '/viewtopic.' $phpEx 'viewtopic.'$phpEx;
$index = ( $script_name != '' ) ? $script_name '/index.' $phpEx 'index.'$phpEx;
$server_name trim($board_config['server_name']);
$server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' 'http://';
$server_port = ( $board_config['server_port'] <> 80 ) ? ':' trim($board_config['server_port']) . '/' '/';

$index_url $server_protocol $server_name $server_port $index;
$viewtopic_url $server_protocol $server_name $server_port $viewtopic;

$rdf "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns=\"http://my.netscape.com/rdf/simple/0.9/\">

<channel>
    <title>" 
$board_config['sitename'] . " Forum</title>
    <link>" 
$index_url "</link>
    <description>" 
$board_config['site_desc'] . "</description>
</channel>
"
;

$fid = ( isset($HTTP_GET_VARS['fid']) ) ? intval($HTTP_GET_VARS['fid']) : '';
$sql_where = ( !empty($fid) ) ? " AND f.forum_id = $fid " " ";

// SQL statement to fetch active topics of public forums
$sql "SELECT DISTINCT t.topic_title, t.topic_last_post_id, p.post_time, f.forum_name
    FROM " 
TOPICS_TABLE " AS t, " POSTS_TABLE " AS p, " FORUMS_TABLE " AS f
    WHERE
        t.forum_id = f.forum_id
            AND f.auth_view = " 
AUTH_ALL "
            AND p.topic_id = t.topic_id
            AND p.post_id = t.topic_last_post_id
            $sql_where
    ORDER BY p.post_time DESC LIMIT $count"
;
$topics_query $db->sql_query($sql);

if ( !
$topics_query )
{
    die(
"Failed obtaining list of active topics");
}
else
{
    
$topics $db->sql_fetchrowset($topics_query);
}

if ( 
count($topics) == )
{
    die(
"No topics found");
}
else
{
    
// $topics contains all interesting data
    
for ($i 0$i count($topics); $i++)
    {
        
$title $topics[$i]['topic_title'];
        
$url $viewtopic_url "?" POST_POST_URL "=" $topics[$i]['topic_last_post_id'] . "#" $topics[$i]['topic_last_post_id'];

        
$rdf .= "
<item>
    <title>" 
$title "</title>
    <link>" 
$url "</link>
</item>
"
;
    }
}

// Create RDF footer
$rdf .= "
</rdf:RDF>"
;

// Output the RDF
echo $rdf;

?>