rdf.php.t

来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 489 行 · 第 1/2 页

T
489
字号
<?php/**************************************************************************** copyright            : (C) 2001-2003 Advanced Internet Designs Inc.* email                : forum@prohost.org* $Id: rdf.php.t,v 1.5 2004/05/24 17:23:55 iliaa 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.***************************************************************************/	require('./GLOBALS.php');	fud_egw('', 1);	fud_use('err.inc');	/* before we go on, we need to do some very basic activation checks */	if (!($FUD_OPT_1 & 1)) {		fud_use('errmsg.inc');		exit($DISABLED_REASON . __fud_ecore_adm_login_msg);	}	if (!$FORUM_TITLE && @file_exists($WWW_ROOT_DISK.'install.php')) {		fud_use('errmsg.inc');	        exit(__fud_e_install_script_present_error);	}	$mode = (isset($_GET['mode']) && in_array($_GET['mode'], array('m', 't', 'u'))) ? $_GET['mode'] : 'm';	$basic = isset($_GET['basic']);/*{PRE_HTML_PHP}*/	if (!($FUD_OPT_2 & 16777216) || (!($FUD_OPT_2 & 67108864) && $mode == 'u')) {		fud_use('cookies.inc');		fud_use('users.inc');		std_error('disabled');	}	if ($FUD_OPT_2 & 16384) {		ob_start(array('ob_gzhandler', $PHP_COMPRESSION_LEVEL));	}function sp($data){	return '<![CDATA[' . str_replace(array('[', ']'), array('&#91;', '&#93;'), $data) . ']]>';}function email_format($data){	return str_replace(array('.', '@'), array(' dot ', ' at '), $data);}function multi_id($data){	$list = explode(',', $data);	$out = array();	foreach ($list as $v) {		$out[] = (int) $v;	}	return implode(',', $out);}$enc_src = array('<br>', '&', "\r", '&nbsp;', '<', '>', chr(0));$enc_dst = array('<br />', '&amp;', '&#13;', ' ', '&lt;', '&gt;', '&#0;');function fud_xml_encode($str){	return str_replace($GLOBALS['enc_src'], $GLOBALS['enc_dst'], $str);}	$charset = '{TEMPLATE: rdf_CHARSET}';/*{POST_HTML_PHP}*/	/* supported modes of output	 * m 		- messages	 * t 		- threads	 * u		- users	 */	if (@count($_GET) < 2) {		$_GET['ds'] = __request_timestamp__ - 86400;		$_GET['l'] = 1;		$_GET['n'] = 10;	}	define('__ROOT__', $WWW_ROOT . 'index.php');	$offset = isset($_GET['o']) ? (int)$_GET['o'] : 0;	$limit  = (isset($_GET['n']) && $_GET['n'] <= $RDF_MAX_N_RESULTS) ? (int)$_GET['n'] : $RDF_MAX_N_RESULTS;	$basic_rss_data = $basic_rss_header = $join = '';	switch ($mode) {		case 'm':			$lmt = " t.moved_to=0 AND m.apr=1";			/* check for various supported limits			 * cat		- category			 * frm		- forum			 * th		- thread			 * id		- message id			 * ds		- start date			 * de		- date end			 * o		- offset			 * n		- number of rows to get			 * l		- latest			 * basic	- output basic info parsable by all rdf parsers			 */			if (isset($_GET['cat'])) {			 	$lmt .= ' AND f.cat_id IN('.multi_id($_GET['cat']).')';			}			if (isset($_GET['frm'])) {			 	$lmt .= ' AND t.forum_id IN('.multi_id($_GET['frm']).')';			}			if (isset($_GET['th'])) {				$lmt .= ' AND m.thread_id IN('.multi_id($_GET['th']).')';			}			if (isset($_GET['id'])) {			 	$lmt .= ' AND m.id IN('.multi_id($_GET['id']).')';			}			if (isset($_GET['ds'])) {				$lmt .= ' AND m.post_stamp >='.(int)$_GET['ds'];			}			if (isset($_GET['de'])) {				$lmt .= ' AND m.post_stamp <='.(int)$_GET['de'];			}			/* This is an optimization so that the forum does not need to 			 * go through the entire message db to fetch latest messages.			 * So, instead we set an arbitrary search limit if 5 days.			 */			if (isset($_GET['l']) && $lmt == " t.moved_to=0 AND m.apr=1") {				$lmt .= ' AND t.last_post_date >=' . (__request_timestamp__ - 86400 * 5);			}			if ($FUD_OPT_2 & 33554432) {				if ($RDF_AUTH_ID) {					$join = '	INNER JOIN {SQL_TABLE_PREFIX}group_cache g1 ON g1.user_id=2147483647 AND g1.resource_id=f.id							LEFT JOIN {SQL_TABLE_PREFIX}group_cache g2 ON g2.user_id='.$RDF_AUTH_ID.' AND g2.resource_id=f.id							LEFT JOIN {SQL_TABLE_PREFIX}mod mm ON mm.forum_id=f.id AND mm.user_id='.$RDF_AUTH_ID.' ';					$lmt .= " AND (mm.id IS NOT NULL OR ((CASE WHEN g2.id IS NOT NULL THEN g2.group_cache_opt ELSE g1.group_cache_opt END) & 2) > 0)";				} else {					$join = ' INNER JOIN {SQL_TABLE_PREFIX}group_cache g1 ON g1.user_id=0 AND g1.resource_id=f.id ';					$lmt .= " AND (g1.group_cache_opt & 2) > 0";				}			}			$c = uq('SELECT					m.*,					u.alias,					t.forum_id,					p.name AS poll_name, p.total_votes,					m2.subject AS th_subject,					m3.subject AS reply_subject,					f.name AS frm_name,					c.name AS cat_name				FROM					{SQL_TABLE_PREFIX}msg m					INNER JOIN {SQL_TABLE_PREFIX}thread t ON m.thread_id=t.id					INNER JOIN {SQL_TABLE_PREFIX}forum f ON t.forum_id=f.id					INNER JOIN {SQL_TABLE_PREFIX}cat c ON c.id=f.cat_id					INNER JOIN {SQL_TABLE_PREFIX}msg m2 ON t.root_msg_id=m2.id					LEFT JOIN {SQL_TABLE_PREFIX}msg m3 ON m3.id=m.reply_to					LEFT JOIN {SQL_TABLE_PREFIX}users u ON m.poster_id=u.id					LEFT JOIN {SQL_TABLE_PREFIX}poll p ON m.poll_id=p.id					'.$join.'				WHERE					' . $lmt  . (isset($_GET['l']) ? ' ORDER BY m.post_stamp DESC LIMIT ' : ' LIMIT ') . qry_limit($limit, $offset));			$res = 0;			while ($r = db_rowobj($c)) {				if (!$res) {					header('Content-Type: text/xml');					echo '<?xml version="1.0" encoding="'.$charset.'"?>' . "\n";					if ($basic) {						echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns="http://purl.org/rss/1.0/">';						echo '<channel rdf:about="'.__ROOT__.'">	<title>'.$FORUM_TITLE.' RDF feed</title>	<link>'.__ROOT__.'</link>	<description>'.$FORUM_TITLE.' RDF feed</description>	<items>		<rdf:Seq>';					} else {						echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns="http://purl.org/rss/1.0/">';						echo '<channel rdf:about="'.__ROOT__.'">	<title>'.$FORUM_TITLE.' RDF feed</title>	<link>'.__ROOT__.'</link>	<description>'.$FORUM_TITLE.' RDF feed</description></channel>';					}					$res = 1;				}				if ($basic) {					$body = fud_xml_encode(read_msg_body($r->foff, $r->length, $r->file_id));$basic_rss_header .= "\t\t\t<rdf:li rdf:resource=\"".$WWW_ROOT."index.php?t=rview&amp;goto=".$r->id."&amp;th=".$r->thread_id."\" />\n";$basic_rss_data .= '<item rdf:about="'.$WWW_ROOT.'index.php?t=rview&amp;goto='.$r->id.'&amp;th='.$r->thread_id.'">	<title>'.htmlspecialchars($r->subject).'</title>	<link>'.$WWW_ROOT.'index.php?t=rview&amp;goto='.$r->id.'&amp;th='.$r->thread_id.'</link>	<description>'.$body.'</description>	<dc:subject></dc:subject>	<dc:creator>'.$r->alias.'</dc:creator>	<dc:date>'.gmdate('Y-m-d\TH:i:s', $r->post_stamp).'-00:00</dc:date></item>';				} else {					echo '<item>	<title>'.sp($r->subject).'</title>	<topic_id>'.$r->thread_id.'</topic_id>	<topic_title>'.sp($r->th_subject).'</topic_title>	<message_id>'.$r->id.'</message_id>	<reply_to_id>'.$r->reply_to.'</reply_to_id>	<reply_to_title>'.$r->reply_subject.'</reply_to_title>	<forum_id>'.$r->forum_id.'</forum_id>	<forum_title>'.sp($r->frm_name).'</forum_title>	<category_title>'.sp($r->cat_name).'</category_title>	<author>'.sp($r->alias).'</author>	<author_id>'.$r->poster_id.'</author_id>	<body>'.str_replace("\n", '', sp(read_msg_body($r->foff, $r->length, $r->file_id))).'</body>';					if ($r->attach_cnt && $r->attach_cache) {						$al = @unserialize($r->attach_cache);						if (!empty($al)) {							echo '<content:items><rdf:Bag>';							foreach ($al as $a) {								echo '<rdf:li>									<content:item rdf:about="attachments">										<a_title>'.sp($r[1]).'</a_title>										<a_id>'.$r[0].'</a_id>										<a_size>'.$r[2].'</a_size>										<a_nd>'.$r[3].'</a_nd>									</content:item>								</rdf:li>';							}							echo '</rdf:Bag></content:items>';						}					}					if ($r->poll_name) {						echo '<content:items><rdf:Bag><poll_name>'.sp($r->poll_name).'</poll_name><total_votes>'.$r->total_votes.'</total_votes>';						if ($r->poll_cache) {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?