www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/answers.php

    <?
include_once './include/general.inc.php';
include_once M_ROOT.'./include/common.fun.php';
include_once M_ROOT.'./include/archive.fun.php';
include_once M_ROOT.'./include/archive.cls.php';
$querystr = $_SERVER['QUERY_STRING'];
un_virtual($querystr);
parse_str($querystr);
if(empty($action)){
	$aid = empty($aid) ? 0 : max(0,intval($aid));
	!$aid && cumessage(lang('confirmchoose archive'));
	if(!submitcheck('submit')){
		$page = empty($page) ? 1 : max(1,intval($page));
		$arc = new cls_archive();
		$arc->arcid($aid);
		!$arc->aid && message(lang('confirmchoose archive'));
		!$arc->archive['checked'] && message(lang('pointed archive nocheck')); 
		!arc_allow($arc->archive,'aread') && message(lang('none archive browse permission'));
		!($commu = read_cache('commu',$channels[$arc->archive['chid']]['cuid'])) && cumessage(lang('noavailable item operate'));
		(!$commu['available'] || $commu['cclass'] != 'answer') && cumessage(lang('noavailable item operate'));

		//根据当前文档所在的子站重新处理缓存
		switch_cache($arc->archive['sid']);
		$sid = $arc->archive['sid'];
		if_siteclosed($sid);
		cache_merge($commu,'commu',$sid);
		if(@!$tplname = $commu['cutpl']) message(lang('please define answer record template'));//未定义答疑模板
		if(!($arc->template = load_tpl($tplname))) message(lang('please add template content !'));//未定义模板内容

		$arc->parsedata();
		$arc->mpcheck();
		$temparr = $arc->transarr();
		$arc->mpinfos['durlpre'] = $cms_abs."answers.php?aid=".$arc->aid."&page=";
		$arc->mpinfos['nowpage'] = max(1,min($page,$arc->mpinfos['pcount']));
		$arc->mpinfos['static'] = 0;
		$s_item = array();
		$arc->nreplace($arc->template,'p',$s_item);
		nreplace($arc->template,'c',$temparr);
		$arc->nreplace($arc->template,'u',$s_item);
		$arc->nreplace($arc->template,'b',$s_item);
		code_parse($arc->template);
		mexit($arc->template);
	}else{
		include_once M_ROOT.'./include/arcedit.cls.php';
		!$memberid && cumessage(lang('nouser nohave operate permission'));
		if(!regcode_pass('answer',empty($regcode) ? '' : trim($regcode))) cumessage(lang('regcode error'));
		!$curuser->checkforbid('answer') && mcmessage(lang('userisforbid'));//屏蔽组
		$aedit = new cls_arcedit();
		$aedit->set_aid($aid);
		$aedit->basic_data();
		!$aedit->aid && cumessage(lang('confirmchoose archive'));
		!($commu = read_cache('commu',$channels[$aedit->archive['chid']]['cuid'])) && cumessage(lang('noavailable item operate'));
		(!$commu['available'] || $commu['cclass'] != 'answer') && cumessage(lang('noavailable item operate'));
		!$curuser->pmsbyugids(explode(',',$commu['setting']['ugids'])) && cumessage(lang('you nohave this item permission'));
		!$aedit->archive['checked'] && cumessage(lang('pointed archive nocheck')); 
		($aedit->archive['closed'] || $aedit->archive['finishdate'] < $timestamp) && cumessage(lang('question closed'));
		$answer = empty($answer) ? '' : trim($answer);
		empty($answer) && cumessage(lang('please input answer content'));
		(!empty($commu['setting']['minlength']) && strlen($answer) < $commu['setting']['minlength']) && cumessage(lang('answer0 over minlength'));
		!empty($commu['setting']['maxlength']) && $answer = cutstr($answer,$commu['setting']['maxlength']);
		$db->query("INSERT INTO {$tblprefix}answers SET
					 aid='$aid', 
					 subject='".$aedit->archive['subject']."', 
					 answer='$answer', 
					 chid='".$aedit->archive['chid']."', 
					 caid='".$aedit->archive['caid']."', 
					 crid='".$aedit->archive['crid']."', 
					 mid='".$curuser->infos['mid']."', 
					 mname='".$curuser->infos['mname']."', 
					 createdate='$timestamp'
					 ");
		if($cid = $db->insert_id()){
			$aedit->arc_nums('answers',1,1);
			$curuser->basedeal('answer',1,1,1);
			if(!empty($commu['setting']['nota'])){
				$db->query("INSERT INTO {$tblprefix}notaanswer (aid,cid,content,createdate) VALUES ('$aid','$cid','$answer','$timestamp')"); 
			}
		}
		cumessage(lang('answer0 add finish'));
	}
}elseif($action == 'vote'){
	$cid = empty($cid) ? 0 : max(0,intval($cid));
	empty($cid) && cumessage(lang('confirmchoose answer0'));
	!$memberid && cumessage(lang('nouser none operate permission'));
	$chid = $db->result_one("SELECT chid FROM {$tblprefix}answers WHERE cid='$cid'");
	!($commu = read_cache('commu',$channels[$chid]['cuid'])) && cumessage(lang('noavailable item operate'));
	(!$commu['available'] || $commu['cclass'] != 'answer') && cumessage(lang('noavailable item operate'));
	if(!empty($commu['setting']['norepeatvote'])){
		if(empty($m_cookie['cms_cuid'.$commu['cuid'].'_'.$cid.'_support'])){
			msetcookie('cms_cuid'.$commu['cuid'].'_'.$cid.'_support','1',365 * 24 * 3600);
		}else{
			cumessage(lang('please dont repeat vote support'));
		}
	}
	$db->query("UPDATE {$tblprefix}answers SET votes=votes+1 WHERE cid='$cid'",'SILENT');
	cumessage(lang('answer0 support finish'));
}elseif($action == 'appeal'){
	include_once M_ROOT.'./include/arcedit.cls.php';
	empty($cid) && cumessage(lang('confirmchoose answer0'));
	!$memberid && cumessage(lang('nouser none operate permission'));
	if(!$item = $db->fetch_one("SELECT * FROM {$tblprefix}answers WHERE cid='$cid'")) cumessage(lang('confirmchoose answer0'));
	$item['mid'] != $memberid && cumessage(lang('please choose yourself answer0'));
	$item['end'] && cumessage(lang('operate overdate'));
	$item['appeal'] && cumessage(lang('please dont repeat appeal'));
	!($commu = read_cache('commu',$channels[$item['chid']]['cuid'])) && cumessage(lang('noavailable item operate'));
	(!$commu['available'] || $commu['cclass'] != 'answer' || empty($commu['setting']['nota'])) && cumessage(lang('noavailable item operate'));
	$aedit = new cls_arcedit();
	$aedit->set_aid($item['aid']);
	$aedit->basic_data();
	!$aedit->aid && cumessage(lang('confirmchoose archive'));
	(!$aedit->archive['closed'] && $aedit->archive['finishdate'] > $timestamp) && cumessage(lang('this question notyet start allow appeal'));
	$db->query("UPDATE {$tblprefix}answers SET appeal=1 WHERE cid='$cid'",'SILENT');
	$db->query("UPDATE {$tblprefix}archives_sub SET appeals=appeals+1 WHERE aid='".$aedit->aid."'",'SILENT');
	cumessage(lang('answer appeal succeed'));
}elseif($action == 'del'){
	include_once M_ROOT.'./include/arcedit.cls.php';
	empty($cid) && cumessage(lang('confirmchoose answer0'));
	(!$memberid || !$curuser->isadmin()) && cumessage(lang('nohave operate permission'));
	if(!$item = $db->fetch_one("SELECT * FROM {$tblprefix}answers WHERE cid='$cid'")) cumessage(lang('confirmchoose answer0'));
	$aedit = new cls_arcedit();
	$aedit->set_aid($item['aid']);
	$aedit->basic_data();
	if($aedit->aid){
		$item['checked'] && $aedit->arc_nums('adopts',-1,0);
		$aedit->arc_nums('answers',-1,1);
		$aedit->auser->basedeal('answer',0,1,1);
	}
	$db->query("DELETE FROM {$tblprefix}answers WHERE cid=$cid");
	$db->query("DELETE FROM {$tblprefix}notaanswer WHERE cid=$cid");
	cumessage(lang('answer0 delete succeed'));
}
?>