www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > bbs/hack/debate/require/viewdebate.php

    <?php
!function_exists('readover') && exit('Forbidden');

require_once(R_P.'require/bbscode.php');
$did = (int)GetGP('did');
$step = (int)GetGP('step');
if ($step!=2) {
	if (CkInArray($windid,$manager) || ($windid && strpos(",$debate_admin,",",$windid,")!==false)) {
		$admincheck = 1;
	} else {
		$admincheck = 0;
	}
	$thread_S = $pages = '';
	$debatetype = (int)GetGP('debatetype','G');
	if ($action != 'reply') {
		$keynum = 3;
		$debatetype = 0;
		$thread_S = ',typecache';
	} else {
		$keynum = $debatetype;
		$page = (int)GetGP('page','G');
		$page<1 && $page = 1;
		$limit = ($page-1)*$db_perpage.",$db_perpage";
		$replycount = 0;
		if (!is_array(($rcache = drsarray($did,'',$debatetype,$limit)))) {
			$rcache = array();
		}
		if ($replycount > $db_perpage) {
			require_once(R_P.'require/forum.php');
			$numofpage = ceil($replycount/$db_perpage);
			$pages = numofpage($replycount,$page,$numofpage,"$basename&job=viewdebate&action=reply&did=$did&debatetype=$debatetype&");
		}
	}
	$thread = $db->get_one("SELECT sortid,authorid,author,title,judg,judgment,judgcontent,digest,views,content,ifconvert,dateline,endtime,obvote,revote,obrvote,rervote,obtitle,retitle,isvisible$thread_S FROM pw_debatethreads WHERE did='$did'");
	if (empty($thread)) Showmsg('data_error');
	if (!$thread['isvisible'] && $thread['authorid']!=$winduid) Showmsg('debate_isvisible');
	require_once GetLang('other');
	$thread['judg'] = $lang['judg_'.$thread['judg']];
	$thread['sortname'] = $debateclassdb[$thread['sortid']];
	$thread['digest'] = $thread['digest'] ? '' : 'none';
	$limittime = floor(($thread['endtime']-$timestamp));
	$thread['dateline'] = get_date($thread['dateline']);
	$thread['endtimes'] = get_date($thread['endtime']);
	$displayjc = $thread['judgcontent'] ? '' : 'none';
	$thread['obvote'] += $thread['obrvote'] + 0;
	$thread['revote'] += $thread['rervote'] + 0;
	$sumvote = $thread['obvote']+$thread['revote'];
	$obimgwidth = floor(300*$thread['obvote']/($sumvote+1));
	$reimgwidth = floor(300*$thread['revote']/($sumvote+1));
	if ($thread['typecache']) {
		if (is_array(($thread['typecache'] = unserialize($thread['typecache'])))) {
			$thread['typecache'] = implode(',',$thread['typecache']);
			if (!is_array(($rcache = drsarray($did,$thread['typecache'])))) {
				$rcache = array();
			}
		}
		unset($thread['typecache']);
	}
	$thread['content'] = str_replace("\n",'<br>',$thread['content']);
	if ($thread['ifconvert']) {
		$thread['content'] = convert($thread['content'],$db_windpost);
	}
	if (strpos($thread['content'],'[s:')!==false) {
		$thread['content'] = showface($thread['content']);
	}
	if (GetCookie("did_$did")!=$winduid) {
		$db->update("UPDATE pw_debatethreads SET views=views+1 WHERE did='$did'");
		Cookie("did_$did",$winduid,$timestamp+300);
	}
	require_once(PrintHack('viewdebate'));
} else {
	$debatetype = (int)GetGP('debatetype','P');
	if(empty($winduid) && $debate_gcmtopen == '0'){
		Showmsg('debate_guest');
	}
	if (!$debatetype) {
		Showmsg('debate_choice');
	}
	InitGP(array('title','atc_content'),'P',1);
	if (!$title || strlen($title)>$db_titlemax) {
		Showmsg('postfunc_subject_limit');
	}
	if (!$atc_content || strlen($atc_content)<$db_postmin || strlen($atc_content)>$db_postmax) {
		Showmsg('postfunc_content_limit');
	}
	$rt = $db->get_one("SELECT did,endtime,isvisible,typecache FROM pw_debatethreads WHERE did='$did'");
	if ($rt['did']!=$did) {
		Showmsg('data_error');
	} elseif (!$rt['isvisible']) {
		Showmsg('debate_isvisible');
	} elseif ($rt['endtime']<=$timestamp) {
		Showmsg('debate_over');
	}
	$ifconvert = $atc_content!=convert($atc_content,'') ? 1 : 0;
	$db->update("INSERT INTO pw_debatereplys(did,authorid,author,debatetype,title,content,ifconvert,dateline,isvisible) VALUES ('$did','$winduid','$windid','$debatetype','$title','$atc_content','$ifconvert','$timestamp',1)");
	$aid = $db->insert_id();
	$newcache = array();
	if ($rt['typecache']) {
		if (is_array(($rt['typecache'] = unserialize($rt['typecache'])))) {
			foreach ($rt['typecache'] as $key => $value) {
				if ($key==$debatetype) {
					if ($value) {
						$array = explode(',',$value);
						if (count($array)>=5) {
							@array_pop($array);
						}
						$value = "$aid,".implode(',',$array);
					} else {
						$value = $aid;
					}
				}
				$newcache[$key] = $value;
			}
		}
		unset($rt['typecache']);
	}
	for ($key=1;$key<4;$key++) {
		if (!$newcache[$key] && $key==$debatetype) {
			$newcache[$key] = $aid;
		}
	}
	$db->update("UPDATE pw_debatethreads SET typecache='".addslashes(serialize($newcache))."' WHERE did='$did'");
	$db->update("UPDATE pw_debateinfo SET replys=replys+1 WHERE uid='$winduid'");
	require_once(R_P.'require/credit.php');
	UserCredit($winduid,$debate_replytype,'set',$debate_replymoney);
	refreshto("$basename&job=viewdebate&did=$did",'debate_reply_success');
}

function drsarray($did,$where=null,$debatetype=null,$limit=null){
	global $timestamp,$db,$replycount,$db_windpost;
	$configdb = array();
	if ($where) {
		$where = "aid IN ('".str_replace(',',"','",$where)."')";
	} else {
		$where = "did='$did' AND debatetype='$debatetype'";
		$rt = $db->get_one("SELECT COUNT(*) FROM pw_debatereplys WHERE $where",MYSQL_NUM);
		$replycount = $rt[0];
	}
	$limit && $limit = "LIMIT $limit";
	$query = $db->query("SELECT aid,debatetype,vote,title,dateline,content,ifconvert,authorid,author FROM pw_debatereplys WHERE $where ORDER BY dateline DESC $limit");
	while ($rt = $db->fetch_array($query)) {
		$lastDate = $timestamp-$rt['dateline'];
		$dateLeft = floor($lastDate/86400);
		$hourLeft = floor($lastDate/3600);
		$minuteLeft = floor($lastDate/60);
		if ($dateLeft>0) {
			$rt['dateline'] = $dateLeft.'day';
		} elseif ($hourLeft>0) {
			$rt['dateline'] = $hourLeft.'hour';
		} elseif ($minuteLeft>0) {
			$rt['dateline'] = $minuteLeft.'min';
		} elseif ($lastDate>0) {
			$rt['dateline'] = $lastDate.'sec';
		}
		$rt['content'] = str_replace("\n",'<br>',$rt['content']);
		if ($rt['ifconvert']) {
			$rt['content'] = convert($rt['content'],$db_windpost);
		}
		if (strpos($thread['content'],'[s:')!==false) {
			$rt['content'] = showface($rt['content']);
		}
		$configdb[$rt['debatetype']][] = $rt;
	}
	$db->free_result($query);
	return $configdb;
}
?>