discuz viewthread.php,viewthread.php

/*

[Discuz!] (C)2001-2009 Comsenz Inc.

This is NOT a freeware, use is subject to license terms

$Id: viewthread.php 17199 2008-12-09 14:29:41Z liuqiang $

*/

if(!defined('CURSCRIPT')) {

define('CURSCRIPT', 'viewthread');

}

define('SQL_ADD_THREAD', ' t.dateline, t.special, t.lastpost AS lastthreadpost, ');

require_once './include/common.inc.php';

require_once DISCUZ_ROOT.'./include/forum.func.php';

$page = max($page, 1);

if($cachethreadlife && $forum['threadcaches'] && !$discuz_uid && $page == 1 && !$forum['special']) {

viewthread_loadcache();

}

require_once DISCUZ_ROOT.'./include/discuzcode.func.php';

$discuz_action = 3;

$sdb = loadmultiserver('viewthread');

$thread = $sdb->fetch_first("SELECT * FROM {$tablepre}threads t WHERE tid='$tid'".($auditstatuson ? '' : " AND displayorder>='0'"));

if(!$thread) {

showmessage('thread_nonexistence');

}

$oldtopics = isset($_DCOOKIE['oldtopics']) ? $_DCOOKIE['oldtopics'] : 'D';

if(strpos($oldtopics, 'D'.$tid.'D') === FALSE) {

$oldtopics = 'D'.$tid.$oldtopics;

if(strlen($oldtopics) > 3072) {

$oldtopics = preg_replace("((D\d+)+D).*$", "\\1", substr($oldtopics, 0, 3072));

}

dsetcookie('oldtopics', $oldtopics, 3600);

}

if($lastvisit < $thread['lastpost'] && (!isset($_DCOOKIE['fid'.$fid]) || $thread['lastpost'] > $_DCOOKIE['fid'.$fid])) {

dsetcookie('fid'.$fid, $thread['lastpost'], 3600);

}

$thisgid = 0;

$thread['subjectenc'] = rawurlencode($thread['subject']);

$fromuid = $creditspolicy['promotion_visit'] && $discuz_uid ? '&fromuid='.$discuz_uid : '';

$feeduid = $thread['authorid'] ? $thread['authorid'] : 0;

$feedpostnum = $thread['replies'] > $ppp ? $ppp : ($thread['replies'] ? $thread['replies'] : 1);

if($uchomeurl) {

$avatarfeedshow = $uc['homeshow'] & 1 ? 1 : 0;

}

$upnavlink = 'forumdisplay.php?fid='.$fid.($extra ? '&'.preg_replace("/^(&)*/", '', $extra) : '');

$navigation = ' » '.(strip_tags($forum['name']) ? strip_tags($forum['name']) : $forum['name']).' » '.$thread['subject'];

if($thread['digest'] == '-2') {

$campaign = $db->fetch_first("SELECT id, type, status, url, autoupdate, lastupdated FROM {$tablepre}campaigns WHERE tid='$tid'");

if(!$campaign || $campaign['status'] != 2) {

showmessage('thread_nonexistence');

}

$insenz = $db->result_first("SELECT value FROM {$tablepre}settings WHERE variable='insenz'");

$insenz = $insenz ? unserialize($insenz) : array();

if(empty($insenz['authkey'])) {

showmessage('thread_nonexistence');

}

require_once DISCUZ_ROOT.'./include/insenz.func.php';

$member = $db->fetch_first("SELECT regdate FROM {$tablepre}members WHERE uid='$discuz_uid'");

$iframeurl = $campaign[url]."siteid=$insenz[siteid]&cid=$campaign[id]&s=".urlencode(insenz_authcode("sitename=$bbname&siteurl=$boardurl&username=$discuz_userss&uid=$discuz_uid&email=$email&grouptitle=$grouptitle&regdate=$member[regdate]&ppp=$ppp&tid=$tid", 'ENCODE', $insenz['authkey'])).'&'.$_SERVER['QUERY_STRING'];

$update = $campaign['autoupdate'] && ($timestamp - $campaign['lastupdated']) < 600 ? FALSE : TRUE;

include template('viewthread_iframe');

exit;

}

$navtitle = $thread['subject'].' - '.strip_tags($forum['name']);

if($forum['type'] == 'sub') {

$fup = $sdb->fetch_first("SELECT fid, name FROM {$tablepre}forums WHERE fid='$forum[fup]'");

$navigation = '» '.(strip_tags($fup['name']) ? strip_tags($fup['name']) : $fup['name']).' '.$navigation;

$navtitle = $navtitle.' - '.strip_tags($fup['name']);

}

$navtitle .= ' - ';

$forum['typemodels'] = $forum['typemodels'] ? unserialize($forum['typemodels']) : array();

$threadsort = isset($forum['threadsorts']['types'][$thread['sortid']]) ? 1 : 0;

$typetemplate = $tagscript = '';

$optiondata = $optionlist = array();

if($thread['sortid'] && $threadsort) {

if($forum['threadsorts']['types'][$thread['sortid']]) {

if(@include_once DISCUZ_ROOT.'./forumdata/cache/threadsort_'.$thread['sortid'].'.php') {

$query = $sdb->query("SELECT optionid, value FROM {$tablepre}typeoptionvars WHERE tid='$tid'");

while($option = $sdb->fetch_array($query)) {

$optiondata[$option['optionid']] = $option['value'];

}

$searchtitle = $searchvalue = array();

foreach($_DTYPE as $optionid => $option) {

$optionlist[$option['identifier']]['title'] = $_DTYPE[$optionid]['title'];

if($_DTYPE[$optionid]['type'] == 'checkbox') {

$optionlist[$option['identifier']]['value'] = '';

foreach(explode("\t", $optiondata[$optionid]) as $choiceid) {

$optionlist[$option['identifier']]['value'] .= $_DTYPE[$optionid]['choices'][$choiceid].' ';

}

} elseif(in_array($_DTYPE[$optionid]['type'], array('radio', 'select'))) {

$optionlist[$option['identifier']]['value'] = $_DTYPE[$optionid]['choices'][$optiondata[$optionid]];

} elseif($_DTYPE[$optionid]['type'] == 'image') {

$maxwidth = $_DTYPE[$optionid]['maxwidth'] ? 'width="'.$_DTYPE[$optionid]['maxwidth'].'"' : '';

$maxheight = $_DTYPE[$optionid]['maxheight'] ? 'height="'.$_DTYPE[$optionid]['maxheight'].'"' : '';

$optionlist[$option['identifier']]['value'] = $optiondata[$optionid] ? "%5C%22%24optiondata%5B%24optionid%5D%5C%22" : '';

} elseif($_DTYPE[$optionid]['type'] == 'url') {

$optionlist[$option['identifier']]['value'] = $optiondata[$optionid] ? "$optiondata[$optionid]" : '';

} elseif($_DTYPE[$optionid]['type'] == 'textarea') {

$optionlist[$option['identifier']]['value'] = $optiondata[$optionid] ? nl2br($optiondata[$optionid]) : '';

} else {

$optionlist[$option['identifier']]['value'] = $optiondata[$optionid];

}

$searchtitle[] = '/{('.$option['identifier'].')}/e';

$searchvalue[] = '/\[('.$option['identifier'].')value\]/e';

}

if($_DTYPETEMPLATE) {

$typetemplate = preg_replace($searchtitle, "showoption('\\1', 'title')", $_DTYPETEMPLATE);

$typetemplate = preg_replace($searchvalue, "showoption('\\1', 'value')", $typetemplate);

}

}

}

$thread['subject'] = ($forum['threadsorts']['types'][$thread['sortid']] ? ($forum['threadsorts']['listable'] ? '['.$forum['threadsorts']['types'][$thread['sortid']].']' : '['.$forum['threadsorts']['types'][$thread['sortid']].']').' ' : '').

($forum['threadtypes']['types'][$thread['typeid']] ? ($forum['threadtypes']['listable'] ? '['.$forum['threadtypes']['types'][$thread['typeid']].']' : '['.$forum['threadtypes']['types'][$thread['typeid']].']').' ' : '').

$thread['subject'];

}

if(empty($forum['allowview'])) {

if(!$forum['viewperm'] && !$readaccess) {

showmessage('group_nopermission', NULL, 'NOPERM');

} elseif($forum['viewperm'] && !forumperm($forum['viewperm'])) {

$navtitle = '';

showmessage('forum_nopermission', NULL, 'NOPERM');

}

} elseif($forum['allowview'] == -1) {

$navtitle = '';

showmessage('forum_access_view_disallow');

}

if($forum['formulaperm']) {

formulaperm($forum['formulaperm']);

}

if($forum['password'] && $forum['password'] != $_DCOOKIE['fidpw'.$fid]) {

dheader("Location: {$boardurl}forumdisplay.php?fid=$fid&sid=$sid");

}

if($thread['readperm'] && $thread['readperm'] > $readaccess && !$forum['ismoderator'] && $thread['authorid'] != $discuz_uid) {

showmessage('thread_nopermission', NULL, 'NOPERM');

}

$threadpay = FALSE;

if($thread['price'] > 0 && $thread['special'] == 0) {

if($maxchargespan && $timestamp - $thread['dateline'] >= $maxchargespan * 3600) {

$db->query("UPDATE {$tablepre}threads SET price='0' WHERE tid='$tid'");

$thread['price'] = 0;

} else {

$exemptvalue = $forum['ismoderator'] ? 128 : 16;

if(!($exempt & $exemptvalue) && $thread['authorid'] != $discuz_uid) {

$query = $sdb->query("SELECT tid FROM {$tablepre}paymentlog WHERE tid='$tid' AND uid='$discuz_uid'");

if(!$sdb->num_rows($query)) {

require_once DISCUZ_ROOT.'./include/threadpay.inc.php';

$threadpay = TRUE;

}

}

}

}

$forum['modrecommend'] = $forum['modrecommend'] ? unserialize($forum['modrecommend']) : array();

$raterange = $modratelimit && $adminid == 3 && !$forum['ismoderator'] ? array() : $raterange;

$extra = rawurlencode($extra);

$allowgetattach = !empty($forum['allowgetattach']) || ($allowgetattach && !$forum['getattachperm']) || forumperm($forum['getattachperm']);

$seccodecheck = ($seccodestatus & 4) && (!$seccodedata['minposts'] || $posts < $seccodedata['minposts']);

$secqaacheck = $secqaa['status'][2] && (!$secqaa['minposts'] || $posts < $secqaa['minposts']);

$postlist = $attachtags = $attachlist = array();

$aimgcount = 0;

$attachpids = -1;

if(empty($action) && $tid) {

$thisgid = $forum['type'] == 'forum' ? $forum['fup'] : $_DCACHE['forums'][$forum['fup']]['fup'];

$lastmod = $thread['moderated'] ? viewthread_lastmod() : array();

$showsettings = str_pad(decbin($showsettings), 3, '0', STR_PAD_LEFT);

$customshow = $discuz_uid ? str_pad(base_convert($customshow, 10, 3), 4, '0', STR_PAD_LEFT) : '2222';

$disableddateconvert = $customshow{0};

$showsignatures = $customshow{1} == 2 ? $showsettings{0} : $customshow{1};

$showavatars = $customshow{2} == 2 ? $showsettings{1} : $customshow{2};

$showimages = $customshow{3} == 2 ? $showsettings{2} : $customshow{3};

$highlightstatus = isset($highlight) && str_replace('+', '', $highlight) ? 1 : 0;

$usesigcheck = $discuz_uid && $sigstatus ? 1 : 0;

$allowpostreply = ($forum['allowreply'] != -1) && ((!$thread['closed'] && !checkautoclose()) || $forum['ismoderator']) && ((!$forum['replyperm'] && $allowreply) || ($forum['replyperm'] && forumperm($forum['replyperm'])) || $forum['allowreply']);

$allowpost = $forum['allowpost'] != -1 && ((!$forum['postperm'] && $allowpost) || ($forum['postperm'] && forumperm($forum['postperm'])) || $forum['allowpost']);

$addfeedcheck = $customaddfeed & 4 ? 1 : 0;

if($allowpost) {

$allowpostpoll = $allowpostpoll && ($forum['allowpostspecial'] & 1);

$allowposttrade = $allowposttrade && ($forum['allowpostspecial'] & 2);

$allowpostreward = $allowpostreward && ($forum['allowpostspecial'] & 4) && isset($extcredits[$creditstrans]);

$allowpostactivity = $allowpostactivity && ($forum['allowpostspecial'] & 8);

$allowpostdebate = $allowpostdebate && ($forum['allowpostspecial'] & 16);

$allowpostvideo = $allowpostvideo && ($forum['allowpostspecial'] & 32) && $videoopen;

} else {

$allowpostpoll = $allowposttrade = $allowpostreward = $allowpostactivity = $allowpostdebate = $allowpostvideo = FALSE;

}

$visitedforums = $visitedforums ? visitedforums() : '';

$forummenu = '';

if($forumjump) {

$forummenu = forumselect(FALSE, 1);

}

$relatedthreadlist = array();

$relatedthreadupdate = $tagupdate = FALSE;

$relatedkeywords = $tradekeywords = $metakeywords = $firstpid = '';

$randnum = $qihoo['relate']['webnum'] ? rand(1, 1000) : '';

$statsdata = !empty($statsdata) ? dhtmlspecialchars($statsdata) : '';

if($qihoo['relate']['bbsnum'] || $insenz['topicrelatedad'] || ($insenz['traderelatedad'] && $thread['special'] == 2)) {

$site = site();

$query = $db->query("SELECT type, expiration, keywords, relatedthreads FROM {$tablepre}relatedthreads WHERE tid='$tid'");

if($db->num_rows($query)) {

while($related = $db->fetch_array($query)) {

if($related['expiration'] <= $timestamp) {

$relatedthreadupdate = TRUE;

$qihoo_up = 1;

} elseif($qihoo['relate']['bbsnum'] && $related['type'] == 'general') {

$relatedthreadlist = unserialize($related['relatedthreads']);

if($related['keywords']) {

$keywords = str_replace("\t", ' ', $related['keywords']);

$searchkeywords = rawurlencode($keywords);

$statskeywords = urlencode($keywords);

$statsurl = urlencode($boardurl.'viewthread.php?tid='.$tid);

$prefix = '';

foreach(explode("\t", $related['keywords']) as $keyword) {

$relatedkeywords .= $keyword ? $prefix.''.$keyword.'' : '';

$prefix = ', ';

$metakeywords .= $keyword ? $keyword.',' : '';

}

}

} elseif($related['type'] == 'trade') {

$tradekeywords = explode("\t", $related['keywords']);

$tradekeywords = $tradekeywords[array_rand($tradekeywords)];

}

}

} else {

$relatedthreadupdate = TRUE;

$qihoo_up = 0;

}

$relatedthreadupdate && $verifykey = md5($authkey.$tid.$thread['subjectenc'].$charset.$site);

}

$relatedthreads = array();

if(!empty($relatedthreadlist)) {

if(!isset($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'relatedthreads') === FALSE) {

$relatedthreads['img'] = 'collapsed_no.gif';

$relatedthreads['style'] = '';

} else {

$relatedthreads['img'] = 'collapsed_yes.gif';

$relatedthreads['style'] = 'display: none';

}

}

$threadtag = array();

if($tagstatus) {

$query = $sdb->query("SELECT tagname FROM {$tablepre}threadtags WHERE tid='$tid'");

$thread['tags'] = $prefix = '';

while($tags = $sdb->fetch_array($query)) {

$metakeywords .= $tags['tagname'].',';

$thread['tags'] .= $prefix.''.$tags['tagname'].'';

$prefix = ', ';

}

if(($tagstatus == 2 || $forum['allowtag'] == 2) && !$thread['tags'] || $relatedthreadupdate) {

$tagupdate = TRUE;

}

$relatedthreadupdate && $thread['tagsenc'] = rawurlencode(strip_tags($thread['tags']));

}

viewthread_updateviews();

@extract($_DCACHE['custominfo']);

$infosidestatus['posts'] = $infosidestatus[1] && isset($infosidestatus['f'.$fid]['posts']) ? $infosidestatus['f'.$fid]['posts'] : $infosidestatus['posts'];

$infoside = $infosidestatus[1] && $thread['replies'] > $infosidestatus['posts'];

$specialadd1 = $specialadd2 = $specialextra = '';

if($thread['special'] == 2) {

$specialadd1 = "LEFT JOIN {$tablepre}trades tr ON p.pid=tr.pid";

$specialadd2 = "AND tr.tid IS null";

} elseif($thread['special'] == 5) {

if(isset($stand) && $stand >= 0 && $stand < 3) {

$specialadd1 .= "LEFT JOIN {$tablepre}debateposts dp ON p.pid=dp.pid";

if($stand) {

$specialadd2 .= "AND (dp.stand='$stand' OR p.first='1')";

} else {

$specialadd2 .= "AND (dp.stand='0' OR dp.stand IS NULL OR p.first='1')";

}

$specialextra = "&stand=$stand";

} else {

$specialadd1 = "LEFT JOIN {$tablepre}debateposts dp ON p.pid=dp.pid";

}

$fieldsadd .= ", dp.stand, dp.voters";

}

$onlyauthoradd = '';

if(empty($viewpid)) {

$authorid = intval($authorid);

if($authorid) {

$thread['replies'] = $sdb->result_first("SELECT COUNT(*) FROM {$tablepre}posts WHERE tid='$tid' AND invisible='0' AND authorid='$authorid'") - 1;

if($thread['replies'] < 0) {

showmessage('undefined_action');

}

$onlyauthoradd = "AND p.authorid='$authorid'";

} elseif($thread['special'] == 5) {

if(isset($stand) && $stand >= 0 && $stand < 3) {

if($stand) {

$thread['replies'] = $sdb->result_first("SELECT COUNT(*) FROM {$tablepre}debateposts WHERE tid='$tid' AND stand='$stand'");

} else {

$thread['replies'] = $sdb->result_first("SELECT COUNT(*) FROM {$tablepre}posts p LEFT JOIN {$tablepre}debateposts dp ON p.pid=dp.pid WHERE p.tid='$tid' AND (dp.stand='0' OR dp.stand IS NULL)");

}

$thread['replies'] = $sdb->result_first("SELECT COUNT(*) FROM {$tablepre}debateposts WHERE tid='$tid' AND stand='$stand'");

} else {

$thread['replies'] = $sdb->result_first("SELECT COUNT(*) FROM {$tablepre}posts WHERE tid='$tid' AND invisible='0'") - 1;

}

}

$ppp = $forum['threadcaches'] && !$discuz_uid ? $_DCACHE['settings']['postperpage'] : $ppp;

$totalpage = ceil(($thread['replies'] + 1) / $ppp);

$page > $totalpage && $page = $totalpage;

$pagebydesc = $page > 50 && $page > ($totalpage / 2) ? TRUE : FALSE;

if($pagebydesc) {

$firstpagesize = ($thread['replies'] + 1) % $ppp;

$ppp3 = $ppp2 = $page == $totalpage && $firstpagesize ? $firstpagesize : $ppp;

$realpage = $totalpage - $page + 1;

$start_limit = max(0, ($realpage - 2) * $ppp + $firstpagesize);

$numpost = ($page - 1) * $ppp;

$pageadd = "ORDER BY dateline DESC LIMIT $start_limit, $ppp2";

} else {

$start_limit = $numpost = ($page - 1) * $ppp;

if($start_limit > $thread['replies']) {

$start_limit = $numpost = 0;

$page = 1;

}

$pageadd = "ORDER BY dateline LIMIT $start_limit, $ppp";

}

$multipage = multi($thread['replies'] + 1, $ppp, $page, "viewthread.php?tid=$tid&extra=$extra".(isset($highlight) ? "&highlight=".rawurlencode($highlight) : '').(!empty($authorid) ? "&authorid=$authorid" : '').$specialextra);

} else {

$viewpid = intval($viewpid);

$pageadd = "AND p.pid='$viewpid'";

}

$newpostanchor = $postcount = $ratelogpids = 0;

$onlineauthors = array();

$query = $sdb->query("SELECT p.*, m.uid, m.username, m.groupid, m.adminid, m.regdate, m.lastactivity, m.posts, m.digestposts, m.oltime,

m.pageviews, m.credits, m.extcredits1, m.extcredits2, m.extcredits3, m.extcredits4, m.extcredits5, m.extcredits6,

m.extcredits7, m.extcredits8, m.email, m.gender, m.showemail, m.invisible, mf.nickname, mf.site,

mf.icq, mf.qq, mf.yahoo, mf.msn, mf.taobao, mf.alipay, mf.location, mf.medals,

mf.sightml AS signature, mf.customstatus, mf.spacename $fieldsadd

FROM {$tablepre}posts p

LEFT JOIN {$tablepre}members m ON m.uid=p.authorid

LEFT JOIN {$tablepre}memberfields mf ON mf.uid=m.uid

$specialadd1

WHERE p.tid='$tid'".($auditstatuson ? '' : "AND p.invisible='0'")." $specialadd2 $onlyauthoradd $pageadd");

while($post = $sdb->fetch_array($query)) {

if(($onlyauthoradd && $post['anonymous'] == 0) || !$onlyauthoradd) {

$postlist[$post['pid']] = viewthread_procpost($post);

}

}

if($thread['special'] > 0 && (empty($viewpid) || $viewpid == $firstpid)) {

$thread['starttime'] = gmdate("$dateformat $timeformat", $thread['dateline'] + $timeoffset * 3600);

$thread['remaintime'] = '';

switch($thread['special']) {

case 1: include_once DISCUZ_ROOT.'./include/viewthread_poll.inc.php'; break;

case 2: include_once DISCUZ_ROOT.'./include/viewthread_trade.inc.php'; break;

case 3: include_once DISCUZ_ROOT.'./include/viewthread_reward.inc.php'; break;

case 4: include_once DISCUZ_ROOT.'./include/viewthread_activity.inc.php'; break;

case 5: include_once DISCUZ_ROOT.'./include/viewthread_debate.inc.php'; break;

case 6: include_once DISCUZ_ROOT.'./include/viewthread_video.inc.php'; break;

}

}

if($pagebydesc) {

$postlist = array_reverse($postlist, TRUE);

}

if($vtonlinestatus == 2 && $onlineauthors) {

$query = $db->query("SELECT uid FROM {$tablepre}sessions WHERE uid IN(".(implode(',', $onlineauthors)).") AND invisible=0");

$onlineauthors = array();

while($author = $db->fetch_array($query)) {

$onlineauthors[$author['uid']] = 1;

}

} else {

$onlineauthors = array();

}

if($ratelogpids) {

$query = $db->query("SELECT * FROM {$tablepre}ratelog WHERE pid IN ($ratelogpids) ORDER BY dateline DESC");

while($ratelog = $db->fetch_array($query)) {

if(count($postlist[$ratelog['pid']]['ratelog']) < $ratelogrecord) {

$ratelogs[$ratelog['uid']]['username'] = $ratelog['username'];

$ratelogs[$ratelog['uid']]['score'][$ratelog['extcredits']] = $ratelog['score'];

$ratelogs[$ratelog['uid']]['reason'] = dhtmlspecialchars($ratelog['reason']);

$postlist[$ratelog['pid']]['ratelog'][$ratelog['uid']] = $ratelogs[$ratelog['uid']];

}

if(!$postlist[$ratelog['pid']]['totalrate'] || !in_array($ratelog['uid'], $postlist[$ratelog['pid']]['totalrate'])) {

$postlist[$ratelog['pid']]['totalrate'][] = $ratelog['uid'];

}

}

}

if($attachpids != '-1') {

require_once DISCUZ_ROOT.'./include/attachment.func.php';

parseattach($attachpids, $attachtags, $postlist, $showimages);

}

if(empty($postlist)) {

showmessage('undefined_action', NULL, 'HALTED');

} else {

$seodescription = current($postlist);

$seodescription = str_replace(array("\r", "\n"), '', cutstr(htmlspecialchars(strip_tags($seodescription['message'])), 150));

}

viewthread_parsetags();

if(empty($viewpid)) {

include template('viewthread');

} else {

$admode = 0;

$post = $postlist[$viewpid];

$post['number'] = $sdb->result_first("SELECT count(*) FROM {$tablepre}posts WHERE tid='$post[tid]' AND dateline<='$post[dbdateline]'");

include template('header_ajax');

include template('viewthread_node');

include template('footer_ajax');

}

} elseif($action == 'printable' && $tid) {

require_once DISCUZ_ROOT.'./include/printable.inc.php';

}

function viewthread_updateviews() {

global $delayviewcount, $timestamp, $tablepre, $tid, $db, $adminid, $thread, $do;

if($delayviewcount == 1 || $delayviewcount == 3) {

$logfile = './forumdata/cache/cache_threadviews.log';

if(substr($timestamp, -2) == '00') {

require_once DISCUZ_ROOT.'./include/misc.func.php';

updateviews('threads', 'tid', 'views', $logfile);

}

if(@$fp = fopen(DISCUZ_ROOT.$logfile, 'a')) {

fwrite($fp, "$tid\n");

fclose($fp);

} elseif($adminid == 1) {

showmessage('view_log_invalid');

}

} else {

$db->query("UPDATE LOW_PRIORITY {$tablepre}threads SET views=views+1 WHERE tid='$tid'", 'UNBUFFERED');

}

}

function viewthread_procpost($post, $special = 0) {

global $_DCACHE, $newpostanchor, $numpost, $thisbg, $postcount, $ratelogpids, $onlineauthors, $lastvisit, $thread,

$attachpids, $attachtags, $forum, $dateformat, $timeformat, $timeoffset, $userstatusby, $allowgetattach,

$ratelogrecord, $showimages, $forum, $discuz_uid, $showavatars, $pagebydesc, $ppp, $ppp2, $ppp3,

$firstpid, $videoopen, $threadpay, $sigviewcond;

if(!$newpostanchor && $post['dateline'] > $lastvisit) {

$post['newpostanchor'] = '';

$newpostanchor = 1;

} else {

$post['newpostanchor'] = '';

}

$post['lastpostanchor'] = $numpost == $thread['replies'] ? '' : '';

if($pagebydesc) {

$post['number'] = $numpost + $ppp2--;

$post['count'] = $ppp == $ppp3 ? $ppp - $postcount - 1 : $ppp3 - $postcount - 1;

} else {

$post['number'] = ++$numpost;

$post['count'] = $postcount;

}

$postcount++;

$post['dbdateline'] = $post['dateline'];

$post['dateline'] = dgmdate("$dateformat $timeformat", $post['dateline'] + $timeoffset * 3600);

$post['groupid'] = $_DCACHE['usergroups'][$post['groupid']] ? $post['groupid'] : 7;

if($post['username']) {

$onlineauthors[] = $post['authorid'];

$post['usernameenc'] = rawurlencode($post['username']);

!$special && $post['groupid'] = getgroupid($post['authorid'], $_DCACHE['usergroups'][$post['groupid']], $post);

$post['readaccess'] = $_DCACHE['usergroups'][$post['groupid']]['readaccess'];

if($_DCACHE['usergroups'][$post['groupid']]['userstatusby'] == 1) {

$post['authortitle'] = $_DCACHE['usergroups'][$post['groupid']]['grouptitle'];

$post['stars'] = $_DCACHE['usergroups'][$post['groupid']]['stars'];

} elseif($_DCACHE['usergroups'][$post['groupid']]['userstatusby'] == 2) {

foreach($_DCACHE['ranks'] as $rank) {

if($post['posts'] > $rank['postshigher']) {

$post['authortitle'] = $rank['ranktitle'];

$post['stars'] = $rank['stars'];

break;

}

}

}

$post['taobaoas'] = addslashes($post['taobao']);

$post['authoras'] = !$post['anonymous'] ? ' '.addslashes($post['author']) : '';

$post['regdate'] = gmdate($dateformat, $post['regdate'] + $timeoffset * 3600);

$post['lastdate'] = gmdate($dateformat, $post['lastactivity'] + $timeoffset * 3600);

if($post['medals']) {

@include_once DISCUZ_ROOT.'./forumdata/cache/cache_medals.php';

foreach($post['medals'] = explode("\t", $post['medals']) as $key => $medalid) {

list($medalid, $medalexpiration) = explode("|", $medalid);

if(isset($_DCACHE['medals'][$medalid]) && (!$medalexpiration || $medalexpiration > $timestamp)) {

$post['medals'][$key] = $_DCACHE['medals'][$medalid];

} else {

unset($post['medals'][$key]);

}

}

}

if($showavatars) {

$post['avatar'] = discuz_uc_avatar($post['authorid']);

if($_DCACHE['usergroups'][$post['groupid']]['groupavatar']) {

$post['avatar'] .= '';

}

} else {

$post['avatar'] = '';

}

$post['status'] = sprintf('%b', $post['status']);

$post['banned'] = substr($post['status'], -1, 1);

$post['warned'] = substr($post['status'], -2, 1);

$post['msn'] = explode("\t", $post['msn']);

} else {

if(!$post['authorid']) {

$post['useip'] = substr($post['useip'], 0, strrpos($post['useip'], '.')).'.x';

}

}

$post['attachments'] = array();

if($post['attachment']) {

if($allowgetattach && !$threadpay) {

$attachpids .= ",$post[pid]";

$post['attachment'] = 0;

if(preg_match_all("/\[attach\](\d+)\[\/attach\]/i", $post['message'], $matchaids)) {

$attachtags[$post['pid']] = $matchaids[1];

}

} else {

$post['message'] = preg_replace("/\[attach\](\d+)\[\/attach\]/i", '', $post['message']);

}

}

$ratelogpids .= ($ratelogrecord && $post['rate']) ? ','.$post['pid'] : '';

$forum['allowbbcode'] = $forum['allowbbcode'] ? ($_DCACHE['usergroups'][$post['groupid']]['allowcusbbcode'] ? 2 : 1) : 0;

$post['signature'] = $post['usesig'] ? ($sigviewcond ? (strlen($post['message']) > $sigviewcond ? $post['signature'] : '') : $post['signature']) : '';

$post['message'] = discuzcode($post['message'], $post['smileyoff'], $post['bbcodeoff'], $post['htmlon'] & 1, $forum['allowsmilies'], $forum['allowbbcode'], ($forum['allowimgcode'] && $showimages ? 1 : 0), $forum['allowhtml'], ($forum['jammer'] && $post['authorid'] != $discuz_uid ? 1 : 0), 0, $post['authorid'], $forum['allowmediacode'], $post['pid']);

$videoopen && $post['message'] = videocode($post['message'], $post['tid'], $post['pid']);

$post['first'] && $firstpid = $post['pid'];

$firstpid = intval($firstpid);

return $post;

}

function showoption($var, $type) {

global $optionlist;

if($optionlist[$var][$type]) {

return $optionlist[$var][$type];

} else {

return '';

}

}

function viewthread_loadcache() {

global $tid, $forum, $timestamp, $cachethreadlife, $_DCACHE, $gzipcompress, $debug, $styleid;

$forum['livedays'] = ceil(($timestamp - $forum['dateline']) / 86400);

$forum['lastpostdays'] = ceil(($timestamp - $forum['lastthreadpost']) / 86400);

$threadcachemark = 100 - (

$forum['displayorder'] * 15 +

$forum['digest'] * 10 +

min($forum['views'] / max($forum['livedays'], 10) * 2, 50) +

max(-10, (15 - $forum['lastpostdays'])) +

min($forum['replies'] / $_DCACHE['settings']['postperpage'] * 1.5, 15));

if($threadcachemark < $forum['threadcaches']) {

$threadcache = getcacheinfo($tid);

if($timestamp - $threadcache['filemtime'] > $cachethreadlife) {

@unlink($threadcache['filename']);

define('CACHE_FILE', $threadcache['filename']);

$styleid = $_DCACHE['settings']['styleid'];

@include DISCUZ_ROOT.'./forumdata/cache/style_'.$styleid.'.php';

} else {

readfile($threadcache['filename']);

viewthread_updateviews();

$debug && debuginfo();

$debug ? die('') : die();

}

}

}

function viewthread_lastmod() {

global $db, $tablepre, $dateformat, $timeformat, $timeoffset, $tid;

if($lastmod = $db->fetch_first("SELECT uid AS moduid, username AS modusername, dateline AS moddateline, action AS modaction, magicid

FROM {$tablepre}threadsmod

WHERE tid='$tid' ORDER BY dateline DESC LIMIT 1")) {

include language('modactions');

$lastmod['modusername'] = $lastmod['modusername'] ? $lastmod['modusername'] : 'System';

$lastmod['moddateline'] = dgmdate("$dateformat $timeformat", $lastmod['moddateline'] + $timeoffset * 3600);

$lastmod['modaction'] = $modactioncode[$lastmod['modaction']];

if($lastmod['magicid']) {

require_once DISCUZ_ROOT.'./forumdata/cache/cache_magics.php';

$lastmod['magicname'] = $_DCACHE['magics'][$lastmod['magicid']]['name'];

}

} else {

$db->query("UPDATE {$tablepre}threads SET moderated='0' WHERE tid='$tid'", 'UNBUFFERED');

}

return $lastmod;

}

function viewthread_parsetags() {

global $tagstatus, $_DCACHE, $firstpid, $postlist, $forum, $tagscript;

if($firstpid && $tagstatus && $forum['allowtag'] && !($postlist[$firstpid]['htmlon'] & 2) && !empty($_DCACHE['tags'])) {

$tagscript = '';

}

}

function remaintime($time) {

$seconds = $time % 60;

$minutes = $time % 3600 / 60;

$hours = $time % 86400 / 3600;

$days = $time / 86400;

return array((int)$days, (int)$hours, (int)$minutes, (int)$seconds);

}

function arrayslice($array, $offset, $length) {

if(PHP_VERSION >= '5.0.2') {

return array_slice($array, $offset, $length, TRUE);

} else {

$array = array_chunk($array, $length, TRUE);

return $array[$offset / $length];

}

}

?>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值