<?php
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [DISCUZ!] Crossday Discuz! Board ::
:: (c) 2001-2005 Comsenz Technology Ltd (www.discuz.com) ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Author: Crossday (tech@discuz.com) Cnteacher (cnteacher@discuz.com) ::
:: Version: 2.5F 2004/10/01 05:15 ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/
//fix: BY pk0909
/*
1 发帖数衡量级别
2 转入最新帖
*/
define('CURRSCRIPT', 'viewthread');
require_once './include/common.php';
require_once DISCUZ_ROOT.'./include/forum.php';
require_once DISCUZ_ROOT.'./include/discuzcode.php';
require("./lib/add_function.php");
$discuz_action = 3;
function attachpost($attachinfo,$pid){
global $attachimgcheck;
if(!isset($attachinfo) || empty($pid) || !is_numeric($pid)){
return '';
}else{
if(strstr($attachinfo,',')){
list($pos,$align) = explode(',',strval($attachinfo));
}else{
$pos = $attachinfo;
}
if(!is_numeric($pos)) return '';
if($GLOBALS['count'] <= $pos || strstr($GLOBALS['attached'][$pid],','.$pos.',')){
return '';
}else{
$GLOBALS['attached'][$pid] .= ','.$pos.',';
$extension = strtolower(fileext($GLOBALS['attachelist'][$pid][$pos]['filename']));
if(in_array($extension, array('jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp'))) {
$surfix = '';
switch($align){
case 'left':
$prefix = "<img style=\"float:left;\" ";
break;
case 'right':
$prefix = "<img style=\"float:right;\" ";
break;
case 'center':
$prefix = "<div align=\"center\" style=\"clear:both;\"><img ";
$surfix = "</div>";
break;
default:
$prefix = "<img style=\"float:left;\" ";
break;
}
if(!$attachimgcheck){
$src = $GLOBALS['attachurl'].'/'.$GLOBALS['attachelist'][$pid][$pos]['attachment'];
$ret = "$prefix src=\"$src\" border=\"0\" onload=\"if(this.width>screen.width*0.5){this.resized = true;this.width=screen.width*0.6;this.alt='点击打开新窗口';}\" onmouseover=\"if(this.resized)this.style.cursor='hand;' \" onclick=\"if(this.resized) window.open(this.src);\" />$surfix";
}else{
$href = "attachment.php?aid=".$GLOBALS['attachelist'][$pid][$pos]['aid']."&checkid=".$GLOBALS['attachelist'][$pid][$pos]['checkid'];
$ret = "<a href=\"$href\" target=\"_blank\">$prefix src=\"$href\" border=\"0\" onload=\"if(this.width>screen.width*0.5){this.resized = true;this.width=screen.width*0.6;this.alt='点击打开新窗口';}\" onmouseover=\"if(this.resized)this.style.cursor='hand;'\" \" onclick=\"if(this.resized) window.open(this.src);\" />$surfix</a>";
}
}else{
$align = in_array($align,array('left','right','center')) ? $align : 'left';
$ret = "<div align=\"$align\">".$GLOBALS['attachelist'][$pid][$pos]['attachicon']."<a href=\"attachment.php?aid=".$GLOBALS['attachelist'][$pid][$pos][aid]."&checkid=".$GLOBALS['attachelist'][$pid][$pos][checkid]."&download=1\" target=\"_blank\">".$GLOBALS['attachelist'][$pid][$pos]['filename']."</a> (".$GLOBALS['attachelist'][$pid][$pos]['dateline'].", ".$GLOBALS['attachelist'][$pid][$pos]['attachsize'];
$ret .= $GLOBALS['attachelist'][$pid][$pos]['creditsrequire'] ? ", 下载此附件需要积分".$GLOBALS['attachelist'][$pid][$pos]['creditsrequire'] : NULL;
$ret .= $GLOBALS['attachelist'][$pid][$pos]['downloads'] ? "下载:".$GLOBALS['attachelist'][$pid][$pos]['downloads']." )" : ')';
$ret .= "</div>";
}
unset($GLOBALS['attachelist'][$pid][$pos]);
return $ret;
}
}
}
if ($tid && $forum){
$thread = $forum;
}elseif($fid && defined('ViewLastPost')) {
$followforum = '';
foreach($_DCACHE['forums'] as $ffid => $fforum) {
if($fforum['fup'] == $fid && $fforum['type'] == 'sub') {
$followforum .= ','.$ffid;
}
}
$followforumadd = $followforum ? "fid in ($fid{$followforum})" : "fid=$fid";
$query = $db->query("SELECT * FROM $table_threads WHERE $followforumadd ORDER BY lastpost DESC LIMIT 1");
if(!$thread = $db->fetch_array($query)) {
showmessage('thread_nonexistence');
}
header("Location: {$boardurl}viewthread.php?tid=$thread[tid]&sid=$sid");
exit();
} else {
showmessage('thread_nonexistence');
}
if (defined('ViewLastPost')) {
$page = @ceil(($thread['replies'] + 1) / $ppp);
}
$tid = $thread['tid'];
$codecount = 0;
$oldtopics = $_COOKIE['oldtopics'] ? $_COOKIE['oldtopics'] : "\t";
if(!strstr($oldtopics, "\t$tid\t")) {
$oldtopics .= "$tid\t";
setcookie('oldtopics', $oldtopics, $timestamp + 900, $cookiepath, $cookiedomain);
}
if($forum['type'] == 'forum') {
$navigation .= "» <a href=\"forumdisplay.php?fid=$fid&page=$fpage\"> $forum[name]</a> » $thread[subject]";
$navtitle .= ' - '.strip_tags($forum['name']).' - '.$thread['subject'];
} else {
$query = $db->query("SELECT fid, name, moderator FROM $table_forums WHERE fid='$forum[fup]'");
$fup = $db->fetch_array($query);
$navigation .= "» <a href=\"forumdisplay.php?fid=$fup[fid]\">$fup[name]</a> » <a href=\"forumdisplay.php?fid=$fid&page=$fpage\"> $forum[name]</a> » $thread[subject]";
$navtitle .= ' - '.strip_tags($fup['name']).' - '.strip_tags($forum['name']).' - '.$thread['subject'];
}
$ismoderator = modcheck($discuz_user);
if(!$forum['allowview']) {
if(!$forum['viewperm'] && !$allowview) {
showmessage('group_nopermission', NULL, 'HALTED');
} elseif($forum['viewperm'] && !strstr($forum['viewperm'], "\t$groupid\t")) {
showmessage('forum_nopermission', NULL, 'HALTED');
}
}
if($thread['creditsrequire'] && $thread['creditsrequire'] > $credit && !$ismoderator && ($thread['authorid'] !=$discuz_uid)) {
showmessage('thread_nopermission', NULL, 'HALTED');
}
if($forum['password'] && $forum['password'] != $_COOKIE["fidpw$fid"]) {
header("Location: {$boardurl}forumdisplay.php?fid=$fid&sid=$sid");
exit();
}
if(!$action && $tid) {
if($discuz_uid && $newpm) {
require DISCUZ_ROOT.'./include/pmprompt.php';
}
$highlightstatus = str_replace('+', '', $highlight) ? 1 : 0;
$karmaoptions = '';
if($allowkarma && $maxkarmarate) {
$offset = ceil($maxkarmarate / 6);
for($vote = - $maxkarmarate + $offset; $vote <= $maxkarmarate; $vote += $offset) {
$votenum = $vote > 0 ? '+'.$vote : $vote;
$karmaoptions .= $vote ? "<option value=\"$vote\">$votenum</option>\n" : NULL;
}
}
unset($vote, $votenum, $offset);
$pageMax = ceil(($thread['replies']+1) / $ppp);
$page = intval($page) ? intval($page) : 1;
$page = $page > $pageMax ? $pageMax : $page;
$start_limit = ($page - 1) * $ppp;
$fpage = intval($fpage);
$multipage = multi($thread['replies'] + 1, $ppp, $page, "viewthread.php?tid=$tid&fpage=$fpage&highlight=".rawurlencode($highlight));
$thread[subject] = cutstr($thread[subject],77);
$polloptions = array();
if($thread['poll']) {
$query = $db->query("SELECT pollopts FROM $table_polls WHERE tid='$tid'");
$pollopts = unserialize($db->result($query, 0));
if (is_array($pollopts) && count($pollopts)){
foreach($pollopts['options'] as $option) {
$polloptions[] = array(
'option' => dhtmlspecialchars(stripslashes($option[0])),
'votes' => $option[1],
'width' => @round($option[1] * 300 / $pollopts['max']) + 2,
'percent' => @sprintf ("%01.2f", $option[1] * 100 / $pollopts['total'])
);
}
$allowvote = $allowvote && $discuz_uid && (empty($thread['closed']) || $alloweditpoll) && !in_array($discuz_user, $pollopts['voters']);
$optiontype = $pollopts['multiple'] ? 'checkbox' : 'radio';
}else{
unset ($pollopts);
}
}
$altbg1 = ALTBG1;
$altbg2 = ALTBG2;
$postlist = $attachelist = array();
$newpostanchor = $topiccount = $have_attachment = 0;
$postcount = $start_limit;
$post_phpcodecount = -1;
$post_user_info_sql = 'm.username, m.gender, m.groupid, m.regdate, m.lastactivity, m.postnum, m.credit, m.email, m.site, m.icq, m.oicq, m.yahoo, m.msn, m.location, m.avatar, m.avatarwidth, m.avatarheight, m.signature, m.customstatus, m.showemail, m.medals';
$query = $db->query("
SELECT p.*, $post_user_info_sql
FROM $table_posts p
LEFT JOIN $table_members m ON m.uid=p.authorid
WHERE p.tid='$tid' ORDER BY dateline LIMIT $start_limit, $ppp");
$ii=0;
while($post = $db->fetch_array($query)) {
if(!$newpostanchor && $post['dateline'] > $lastvisit) {
$post['newpostanchor'] = '<a name="newpost"></a>';
$newpostanchor = 1;
} else {
$post['newpostanchor'] = '';
}
$topiccount ++;
$post['postcount'] = $postcount+1;
$post['thisbg'] = ${'altbg'.($postcount++ % 2 + 1)};
$post['dateline'] = gmdate("$dateformat $timeformat", $post['dateline'] + $timeoffset * 3600);
//mp_hp_exp hack begin
$daysreg = ($timestamp - $post['regdate']) / (24*3600);
$ppd = $post['postnum'] / $daysreg;//平均每日發貼
$post['exp_mp_hp'] = exp_mp_hp($post['postnum'],$ppd,$daysreg);
//end here
$post['uid'] = sprintf("%07d", $post['uid']);
if($post['username']) {
if($userstatusby > 0 ){
if($userstatusby == 2 && $post['adminid'] == 0) {
foreach($_DCACHE['ranks'] as $rank) {
if($post['postnum'] > $rank['postshigher']) {
$post['authortitle'] = $rank['ranktitle'];
$post['stars'] = $rank['stars'];
break;
}
}
}else{
$post['authortitle'] = $_DCACHE['usergroups'][$post['groupid']]['grouptitle'];
$post['stars'] = $_DCACHE['usergroups'][$post['groupid']]['stars'];
}
}
$post['regdate'] = gmdate($dateformat, $post['regdate'] + $timeoffset * 3600);
if($_DCACHE['usergroups'][$post['groupid']]['groupavatar']) {
$post['avatar'] = '<img src="'.$_DCACHE['usergroups'][$post['groupid']]['groupavatar'].'" border="0">';
} elseif($_DCACHE['usergroups'][$post['groupid']]['allowavatar'] && $post['avatar']) {
$post['avatar'] = '<img src="'.$post['avatar'].'" width="'.$post['avatarwidth'].'" height="'.$post['avatarheight'].'" border="0">';
} else {
$post['avatar'] = '';
}
} else {
if(!$post['authorid']) {
$post['useip'] = substr($post['useip'], 0, strrpos($post['useip'], '.')).'.x';
}
$post['postnum'] = $post['credit'] = $post['regdate'] = 'N/A';
}
$post['karma'] = '';
if($post['rate'] && $post['ratetimes']) {
$rateimg = $post['rate'] > 0 ? 'agree.gif' : 'disagree.gif';
for($i = 0; $i < round(abs($post['rate']) / $post['ratetimes']); $i++) {
$post['karma'] .= '<img src="'.IMGDIR.'/'.$rateimg.'" align="right">';
}
}
$post['subject'] = $post['subject'] ? $post['subject'] : NULL;
$post['message'] = postify($post['message'], $post['smileyoff'], $post['bbcodeoff'], $forum['allowsmilies'], $forum['allowhtml'], $forum['allowbbcode'], $forum['allowimgcode']);
$post['signature'] = $post['usesig'] && $post['signature'] ? postify($post['signature'], 1, 0, 0, 0, $_DCACHE['usergroups'][$post['groupid']]['allowsigbbcode'], $_DCACHE['usergroups'][$post['groupid']]['allowsigimgcode']) : NULL;
if(!$have_attachment && $post['aid']) $have_attachment = 1 ;
/////////勋章s///////
if($post['medals']){
require_once("./forumdata/medals.php");
$medalid = strtok($post['medals'],",");
while($medalid){
$tempmedal .= "<img src={$medalurls[$medalid]} alt={$medals[$medalid]}> ";
$medalid = strtok(",");}
$post['medals'] = $tempmedal.'<br>';
unset($tempmedal);
}
/////////勋章e///////
$postlist[] = $post;
$postpids[$post['pid']] = $ii;
$ii++;
}
if (empty($postlist)) {
showmessage('undefined_action', NULL, 'HALTED');
}
if ($have_attachment) {
require_once DISCUZ_ROOT.'./include/attachment.php';
$query = $db->query("select * from $table_attachments where tid='$tid' ORDER BY aid");
while($attach = $db->fetch_array($query)) {
$attach[checkid] = substr(md5($attach['filesize']),0,5);
$extension = strtolower(fileext($attach['filename']));
$attach['attachicon'] = attachtype($extension."\t".$attach['filetype']);
if($attachimgpost && in_array($extension, array('jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp'))) {
$attach['attachimg'] = 1;
} else {
$attach['attachimg'] = 0;
}
$attach['attachsize'] = sizecount($attach['filesize']);
$attach['dateline'] = $attach['dateline']?gmdate("$dateformat $timeformat", $attach['dateline'] + $timeoffset * 3600): '';
$attachelist["$attach[pid]"][] = $attach;
}
}
foreach($attachelist as $key => $val){
$attached[$key] = $attached[$key] ? $attached[$key] : ',';
$processed .= ','.$key.',';
//上行为处理无附件的贴子中的attach标签用
$count = count($attachelist[$key]);
if(strstr($postlist[$postpids[$key]]['message'],'[attach=')){
$postlist[$postpids[$key]]['message'] = preg_replace("/\[attach=(\d{1,2}(,\w{4,6}|))\]/ies","attachpost('\\1',$key)",$postlist[$postpids[$key]]['message']);
}
}
//以下为处理无附件的贴子中的attach标签用
foreach($postpids as $key => $val){
if(!strstr($processed,','.$val.',')){
if(strstr($postlist[$val]['message'],'[attach=')){
$postlist[$val]['message'] = preg_replace("/\[attach=(\d{1,2}(,\w{4,6}|))\]/is",'',$postlist[$val]['message']);
}
}
}
$forumselect = $forumjump ? forumselect() : NULL;
$usesigcheck = $signature ? 'checked' : NULL;
$allowpost = (!$forum['postperm'] && $allowpost) || ($forum['postperm'] && strstr($forum['postperm'], "\t$groupid\t")) || $forum['allowpost'];
$allowpostreply = (!$thread['closed'] || $ismoderator) && (!$delayreply || ($delayreply && (($timestamp - $thread[dateline] ) < $delayreply * 86400)) || $ismoderator) && ((!$forum['replyperm'] && $allowpost) || ($forum['replyperm'] && strstr($forum['replyperm'], "\t$groupid\t")) || $forum['allowreply']);
if($delayviewcount) {
$logfile = DISCUZ_ROOT.'./forumdata/viewcount.log';
if(substr($timestamp, -2) == '00') {
require DISCUZ_ROOT.'./include/misc.php';
updateviews();
}
if(@$fp = fopen($logfile, 'a')) {
fwrite($fp, "$tid\n");
fclose($fp);
}elseif($adminid == 1) {
showmessage('view_log_invalid');
}
} else {
$db->query("UPDATE LOW_PRIORITY $table_threads SET views=views+1 WHERE tid='$tid'", 'UNBUFFERED');
}
include template('viewthread');//==============每页的一.二楼的之间的公告 start by lu5266========
$announcements = '';
if($_DCACHE['announcements']) {
$space = '';
foreach($_DCACHE['announcements'] as $announcement) {
if($timestamp >= $announcement['starttime'] && ($timestamp <= $announcement['endtime'] || !$announcement['endtime'])) {
if ($announcement['posturl']){
$announcements .= $space.'<img src="images/dog.gif"><a href="'.$announcement['posturl'].'" target="_blank"><span class="bold">'.$announcement['subject'].'</span> '.
'('.gmdate($dateformat, $announcement['starttime'] + $timeoffset * 3600).')</a>';
}else{
$announcements .=$space.'<img src="images/dog.gif"><a href="announcement.php?id='.$announcement['id'].'#'.$announcement['id'].'" target="_blank"><span class="bold">'.$announcement['subject'].'</span> '.
'('.gmdate($dateformat, $announcement['starttime'] + $timeoffset * 3600).')</a>';
}
$space = ' ';
}
}
}
unset($_DCACHE['announcements']);
//===========每页的一.二楼的之间的公告 end by www.5466.ik8.com====
} elseif($action == 'printable' && $tid) {
require DISCUZ_ROOT.'./include/printable.php';
}
?> |