You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
266 lines
9.0 KiB
266 lines
9.0 KiB
4 months ago
|
<?php
|
||
|
/***************************************************************************
|
||
|
* rss.php
|
||
|
* -------------------
|
||
|
* begin : Monday, July 7, 2003
|
||
|
* notes : This code is based on the work of the original
|
||
|
* developer below. Portions of this code
|
||
|
* 'borrowed' from phpbb_fetch_posts, an
|
||
|
* untitled rdf content syndicator posted at
|
||
|
* phpbb.com, and phpbb itself.
|
||
|
* email : rss@wickedwisdom.com
|
||
|
*
|
||
|
*
|
||
|
* $Id: rss.php,v 1.9 2005/01/04 15:04:12 saraj Exp $
|
||
|
*
|
||
|
*
|
||
|
***************************************************************************/
|
||
|
|
||
|
/***************************************************************************
|
||
|
* rdf.php
|
||
|
* -------------------
|
||
|
* begin : Saturday, Mar 2, 2002
|
||
|
* copyright : (C) 2002 Matthijs van de Water
|
||
|
* Sascha Carlin
|
||
|
* email : phpbb@matthijs.net
|
||
|
* sc@itst.org
|
||
|
*
|
||
|
* $Id: rss.php,v 1.9 2005/01/04 15:04:12 saraj 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.
|
||
|
*
|
||
|
***************************************************************************/
|
||
|
|
||
|
//
|
||
|
// BEGIN Configuration
|
||
|
//
|
||
|
// Set the relative path from this file to your phpBB root folder
|
||
|
$phpbb_root_path = './';
|
||
|
// How many posts do you want to returnd (count)? Specified in the URL with "c=". Defaults to 15, upper limit of 50.
|
||
|
$count = ( isset($HTTP_GET_VARS['c']) ) ? intval($HTTP_GET_VARS['c']) : 15;
|
||
|
$count = ( $count == 0 ) ? 15 : $count;
|
||
|
$count = ( $count > 50 ) ? 50 : $count;
|
||
|
// Which forum do you want posts from (forum_id)? specified in the url with "f=". Defaults to all (public) forums.
|
||
|
$forum_id = ( isset($HTTP_GET_VARS['f']) ) ? intval($HTTP_GET_VARS['f']) : '';
|
||
|
$sql_forum_where = ( !empty($forum_id) ) ? ' AND f.forum_id = ' . $forum_id : ' ';
|
||
|
// Return topics only, or all posts? Specified in the URL with "t=". Defaults to all posts (0).
|
||
|
$topics_only = (isset($HTTP_GET_VARS['t']) ) ? intval($HTTP_GET_VARS['t']) : 0;
|
||
|
$sql_topics_only_where = '';
|
||
|
if ( $topics_only == 1 )
|
||
|
{
|
||
|
$sql_topics_only_where = 'AND p.post_id = t.topic_first_post_id';
|
||
|
}
|
||
|
//
|
||
|
// END Configuration
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Includes of phpBB scripts
|
||
|
//
|
||
|
define ('IN_PHPBB', true);
|
||
|
include($phpbb_root_path . 'extension.inc');
|
||
|
include($phpbb_root_path . 'common.'.$phpEx);
|
||
|
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
|
||
|
//
|
||
|
// END Includes of phpBB scripts
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Session management
|
||
|
//
|
||
|
$userdata = session_pagestart($user_ip, PAGE_INDEX);
|
||
|
init_userprefs($userdata);
|
||
|
//
|
||
|
// End session management
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Create main board information (some code borrowed from functions_post.php)
|
||
|
//
|
||
|
// Build URL components
|
||
|
$script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path']));
|
||
|
$viewpost = ( $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']) . '/' : '/';
|
||
|
// Assemble URL components
|
||
|
$index_url = $server_protocol . $server_name . $server_port . $script_name . '/';
|
||
|
$viewpost_url = $server_protocol . $server_name . $server_port . $viewpost;
|
||
|
// Reformat site name and description
|
||
|
$site_name = strip_tags($board_config['sitename']);
|
||
|
$site_description = strip_tags($board_config['site_desc']);
|
||
|
// Set the fully qualified url to your smilies folder
|
||
|
$smilies_path = $board_config['smilies_path'];
|
||
|
$smilies_url = $index_url . $smilies_path;
|
||
|
$smilies_path = preg_replace("/\//", "\/", $smilies_path);
|
||
|
//
|
||
|
// END Create main board information
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Initialise template
|
||
|
//
|
||
|
$template->set_filenames(array(
|
||
|
"body" => "rss_body.tpl")
|
||
|
);
|
||
|
//
|
||
|
// END Initialise template
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Assign static variables to template
|
||
|
//
|
||
|
// Variable reassignment for Topic Replies
|
||
|
$l_topic_replies = $lang['Topic'] . ' ' . $lang['Replies'];
|
||
|
$template->assign_vars(array(
|
||
|
'S_CONTENT_ENCODING' => $lang['ENCODING'],
|
||
|
'BOARD_URL' => $index_url,
|
||
|
'BOARD_TITLE' => $site_name,
|
||
|
'BOARD_DESCRIPTION' => $site_description,
|
||
|
'BOARD_MANAGING_EDITOR' => $board_config['board_email'],
|
||
|
'BOARD_WEBMASTER' => $board_config['board_email'],
|
||
|
'BUILD_DATE' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
|
||
|
'L_AUTHOR' => $lang['Author'],
|
||
|
'L_POSTED' => $lang['Posted'],
|
||
|
'L_TOPIC_REPLIES' => $l_topic_replies,
|
||
|
'L_POST' => $lang['Post'])
|
||
|
);
|
||
|
//
|
||
|
// END Assign static variabless to template
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN SQL statement to fetch active posts of public forums
|
||
|
//
|
||
|
$sql = "SELECT f.forum_name, t.topic_title, u.user_id, u.username, u.user_sig, u.user_sig_bbcode_uid, p.post_id, pt.post_text, pt.post_subject, pt.bbcode_uid, p.post_time, t.topic_replies, t.topic_first_post_id
|
||
|
FROM " . FORUMS_TABLE . " AS f, " . TOPICS_TABLE . " AS t, " . USERS_TABLE . " AS u, " . POSTS_TABLE . " AS p, " . POSTS_TEXT_TABLE . " as pt
|
||
|
WHERE
|
||
|
t.forum_id = f.forum_id
|
||
|
AND f.auth_view = " . AUTH_ALL . "
|
||
|
AND p.poster_id = u.user_id
|
||
|
AND pt.post_id = p.post_id
|
||
|
AND p.topic_id = t.topic_id
|
||
|
$sql_topics_only_where
|
||
|
$sql_forum_where
|
||
|
ORDER BY p.post_time DESC LIMIT $count";
|
||
|
$posts_query = $db->sql_query($sql);
|
||
|
//
|
||
|
// END SQL statement to fetch active posts of public forums
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Query failure check
|
||
|
//
|
||
|
if ( !$posts_query )
|
||
|
{
|
||
|
message_die(GENERAL_ERROR, "Could not query list of active posts", "", __LINE__, __FILE__, $sql);
|
||
|
}
|
||
|
else if ( !$db->sql_numrows($posts_query) )
|
||
|
{
|
||
|
message_die(GENERAL_MESSAGE, $lang['No_match']);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//
|
||
|
// END Query failure check
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN "item" loop
|
||
|
//
|
||
|
while ($post = $db->sql_fetchrow($posts_query))
|
||
|
{
|
||
|
|
||
|
// Variable reassignment and reformatting for post text
|
||
|
$post_text = $post['post_text'];
|
||
|
$post_text = str_replace("\n", "\n<br />\n", $post_text);
|
||
|
$post_text = bbencode_second_pass($post_text, $post['bbcode_uid']);
|
||
|
$post_text = smilies_pass($post_text);
|
||
|
$post_text = preg_replace("/$smilies_path/", $smilies_url, $post_text);
|
||
|
$post_text = make_clickable($post_text);
|
||
|
// Variable reassignment and reformatting for user sig
|
||
|
$user_sig = $post['user_sig'];
|
||
|
$user_sig = bbencode_second_pass($user_sig, $post['user_sig_bbcode_uid']);
|
||
|
$user_sig = smilies_pass($user_sig);
|
||
|
$user_sig = preg_replace("/$smilies_path/", $smilies_url, $user_sig);
|
||
|
$user_sig = make_clickable($user_sig);
|
||
|
if ( $user_sig != '' )
|
||
|
{
|
||
|
$user_sig = '<br />_________________<br />' . str_replace("\n", "\n<br />\n", $user_sig);
|
||
|
}
|
||
|
// Variable reassignment and reformatting for post subject
|
||
|
$post_subject = $post['post_subject'];
|
||
|
if ( $post_subject != '' )
|
||
|
{
|
||
|
$post_subject = $lang['Subject'] . ': ' . htmlspecialchars($post_subject) . '<br />';
|
||
|
}
|
||
|
// Variable reassignment for topic title, and show whether it is the start of topic, or a reply
|
||
|
$topic_title = $post['topic_title'];
|
||
|
if ( $post['post_id'] != $post['topic_first_post_id'] )
|
||
|
{
|
||
|
$topic_title = 'RE: ' . $topic_title;
|
||
|
}
|
||
|
// Variable reassignment and reformatting for author
|
||
|
$author = $post['username'];
|
||
|
if ( $post['user_id'] != -1 )
|
||
|
{
|
||
|
$author = '<a href="' . $index_url . 'profile.' . $phpEx . '?mode=viewprofile&u=' . $post['user_id'] . '" target="_blank">'
|
||
|
. $author . '</a>';
|
||
|
}
|
||
|
$author = make_clickable($author);
|
||
|
// Assign "item" variables to template
|
||
|
$template->assign_block_vars('post_item', array(
|
||
|
'POST_URL' => $viewpost_url . '?' . POST_POST_URL . '=' . $post['post_id'] . '#' . $post['post_id'],
|
||
|
'TOPIC_TITLE' => htmlspecialchars($topic_title),
|
||
|
'AUTHOR' => htmlspecialchars($author),
|
||
|
'POST_TIME' => create_date($board_config['default_dateformat'], $post['post_time'], $board_config['board_timezone']).' (GMT ' . $board_config['board_timezone'] . ')',
|
||
|
'post_subjecT' => htmlspecialchars($post_subject),
|
||
|
'FORUM_NAME' => htmlspecialchars($post['forum_name']),
|
||
|
'POST_TEXT' => htmlspecialchars($post_text),
|
||
|
'USER_SIG' => htmlspecialchars($user_sig),
|
||
|
'TOPIC_REPLIES' => $post['topic_replies']
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
//
|
||
|
// END "item" loop
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN XML and nocaching headers (copied from page_header.php)
|
||
|
//
|
||
|
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
|
||
|
{
|
||
|
header ('Cache-Control: no-cache, pre-check=0, post-check=0, max-age=0');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
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');
|
||
|
//
|
||
|
// End XML and nocaching headers
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BEGIN Output XML page
|
||
|
//
|
||
|
$template->pparse('body');
|
||
|
//
|
||
|
// END Output XML page
|
||
|
//
|
||
|
|
||
|
?>
|