www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > bbs/active.php

    <?php
require_once('global.php');

!$winduid && Showmsg('not_login');
InitGP(array('action'));
(!$action || !$tid) && Showmsg('undefined_action');

if($action=='apply'){
	$sql = $sqlsel= '';
	if(!$_POST['step']){
		$pw_tmsgs = GetTtable($tid);
		$sql      = " LEFT JOIN $pw_tmsgs tm ON t.tid=tm.tid";
		$sqlsel   = ",tm.ifconvert,tm.content";
	}
	$act=$db->get_one("SELECT a.*,t.authorid,t.subject as tsubject $sqlsel FROM pw_activity a LEFT JOIN pw_threads t ON t.tid=a.tid $sql WHERE a.tid='$tid'");
	!$act && Showmsg('data_error');
	$act['deadline']<$timestamp && Showmsg('time_out');
	if($act['num']){
		@extract($db->get_one("SELECT COUNT(*) AS count FROM pw_actmember WHERE actid='$tid' AND state='1'"));
		$count>=$act['num'] && Showmsg('num_full');
	}
	if($act['sexneed']){
		$member=$db->get_one("SELECT gender FROM pw_members WHERE uid='$winduid'");
		$member['gender']!=$act['sexneed'] && Showmsg('apply_gender_error');
	}
	$rt = $db->get_one("SELECT state FROM pw_actmember WHERE winduid='$winduid' AND actid='$tid'");
	$rt && Showmsg('have_act');
	if(!$_POST['step']){
		require_once(R_P.'require/header.php');
		require_once(R_P.'require/bbscode.php');
		$read = array();
		$act['starttime'] = get_date($act['starttime'],'Y-m-d');
		$act['endtime']   = get_date($act['endtime'],'Y-m-d');
		$act['deadline']  = get_date($act['deadline'],'Y-m-d');
		$act['content']   = str_replace("\n","<br />",$act['content']);
		$act['ifconvert']==2 && $act['content'] = convert($act['content'],$db_windpost,2);

		$query=$db->query("SELECT COUNT(*) AS count,state FROM pw_actmember WHERE actid='$tid' GROUP BY state");
		$act_total=$act_y=0;
		while($rt=$db->fetch_array($query)){
			$act_total+=$rt['count'];
			$rt['state']==1 && $act_y+=$rt['count'];
		}
		require_once PrintEot('active');footer();
	} elseif($_POST['step']==2){
		InitGP(array('contact','message'),'P',1);
		!$contact && Showmsg('contact_empty');
		$state = $act['admin']==$winduid ? 1 : 0;
		$db->update("INSERT INTO pw_actmember (actid,winduid,state,applydate,contact,message) VALUES ('$tid','$winduid','$state','$timestamp','$contact','$message')");
		refreshto("read.php?tid=$tid&fpage=$fpage",'operate_success');
	}
}elseif($action=='view'){
	require_once(R_P.'require/header.php');
	require_once(R_P.'require/forum.php');
	require_once(R_P.'require/bbscode.php');
	InitGP(array('page'));
	$pw_tmsgs = GetTtable($tid);
	$act=$db->get_one("SELECT a.*,t.authorid,t.subject as tsubject,tm.ifconvert,tm.content FROM pw_activity a LEFT JOIN pw_threads t ON a.tid=t.tid LEFT JOIN $pw_tmsgs tm ON a.tid=tm.tid WHERE a.tid='$tid'");
	!$act && Showmsg('data_error');
	$admincheck = $act['admin']==$winduid ? 1 : 0;

	if(!$admincheck){
		$ifact=$db->get_one("SELECT * FROM pw_actmember WHERE actid='$tid' AND winduid='$winduid' AND state='1'");
		!$ifact && Showmsg("actid_view_error");
	}
	$act['starttime'] = get_date($act['starttime'],'Y-m-d');
	$act['endtime']   = get_date($act['endtime'],'Y-m-d');
	$act['deadline']  = get_date($act['deadline'],'Y-m-d');
	$act['content']   = str_replace("\n","<br />",$act['content']);
	$act['ifconvert']==2 && $act['content'] = convert($act['content'],$db_windpost,2);
	
	if($admincheck){
		$sql = "";
	} else{
		$sql = "AND a.state='1'";
	}
	$query=$db->query("SELECT COUNT(*) AS count,state FROM pw_actmember WHERE actid='$tid' GROUP BY state");
	$act_total=$act_y=0;
	while($rt=$db->fetch_array($query)){
		$act_total+=$rt['count'];
		$rt['state']==1 && $act_y+=$rt['count'];
	}
	$act_show = $admincheck ? $act_total : $act_y;
	$db_showperpage=30;
	(!is_numeric($page) || $page<1) && $page = 1;
	$limit = "LIMIT ".($page-1)*$db_showperpage.",$db_showperpage";
	$pages = numofpage($act_show,$page,ceil($act_show/$db_showperpage),"active.php?action=view&tid=$tid&");

	$actdb = array();
	$query = $db->query("SELECT a.*,m.username,m.gender FROM pw_actmember a LEFT JOIN pw_members m ON a.winduid=m.uid WHERE a.actid='$tid' $sql ORDER BY applydate DESC $limit");
	while($rt=$db->fetch_array($query)){
		$rt['applydate'] = get_date($rt['applydate']);
		$actdb[] = $rt;
	}
	require_once PrintEot('active');footer();
}elseif($action=='pass' || $action=='unpass'){
	InitGP(array('selid'),'P');
	$selids = '';
	foreach($selid as $key=>$val){
		if(is_numeric($val)){
			$selids .= $selids ? ','.$val : $val;
		}
	}
	!$selids && Showmsg('selid_illegal');

	$read=$db->get_one("SELECT admin FROM pw_activity WHERE tid='$tid'");
	!$read && Showmsg('data_error');
	$read['admin']!=$winduid && Showmsg('active_manager_right');

	$state = $action=='pass' ? 1 : 2;
	$db->update("UPDATE pw_actmember SET state='$state' WHERE actid='$tid' AND id IN($selids)");
	refreshto("active.php?action=view&tid=$tid",'operate_success');
}elseif($action=='exit'){
	$db->update("DELETE FROM pw_actmember WHERE actid='$tid' AND winduid='$winduid'");
	refreshto("read.php?tid=$tid",'operate_success');
}elseif($action=='cancle'){
	$read=$db->get_one("SELECT admin FROM pw_activity WHERE tid='$tid'");
	!$read && Showmsg('data_error');
	$read['admin']!=$winduid && Showmsg('active_manager_right');
	$db->update("DELETE FROM pw_activity WHERE tid='$tid'");
	$db->update("DELETE FROM pw_actmember WHERE actid='$tid'");
	$db->update("UPDATE pw_threads SET special='0' WHERE tid='$tid'");
	refreshto("read.php?tid=$tid",'operate_success');
}
?>