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('[', ']'), $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", ' ', '<', '>', chr(0));$enc_dst = array('<br />', '&', ' ', ' ', '<', '>', '�');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&goto=".$r->id."&th=".$r->thread_id."\" />\n";$basic_rss_data .= '<item rdf:about="'.$WWW_ROOT.'index.php?t=rview&goto='.$r->id.'&th='.$r->thread_id.'"> <title>'.htmlspecialchars($r->subject).'</title> <link>'.$WWW_ROOT.'index.php?t=rview&goto='.$r->id.'&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 + -
显示快捷键?