libvote.php

来自「linux/unix环境下的建站系统」· PHP 代码 · 共 809 行 · 第 1/2 页

PHP
809
字号
<?php/*** @id:windinsn dec 21, 2003** System Vote*/////////////////////////////////////////////// System Vote Configure Startif(function_exists("bbs_sysconf_str")){$sysVoteConfig["DBHOST"]=bbs_sysconf_str("MYSQLHOST");$sysVoteConfig["DBUSER"]=bbs_sysconf_str("MYSQLUSER");$sysVoteConfig["DBPASS"]=bbs_sysconf_str("MYSQLPASSWORD");$sysVoteConfig["DBNAME"]=bbs_sysconf_str("MYSQLSMSDATABASE");$sysVoteConfig["BOARD"]="SYSOP";$sysVoteConfig["PAGESIZE"]=20;// System Vote Configure End///////////////////////////////////////////$sysVoteConfig["BRDARR"] = array();$sysVoteConfig["BRDNUM"] = bbs_getboard($sysVoteConfig["BOARD"], $sysVoteConfig["BRDARR"]);}function sysvote_db_connect(){	GLOBAL $sysVoteConfig;	@$link = mysql_connect($sysVoteConfig["DBHOST"],$sysVoteConfig["DBUSER"],$sysVoteConfig["DBPASS"]) or die("无法连接到服务器!");	@mysql_select_db($sysVoteConfig["DBNAME"],$link);	return $link;}function sysvote_db_close($link){	@mysql_close($link);}function sysvote_is_admin($currentuser){	global $sysVoteConfig;	if(bbs_is_bm($sysVoteConfig["BRDNUM"], $currentuser["index"]))		return TRUE;	else		return FALSE;}function html_format($str,$wrap=FALSE,$stripSlashes=TRUE){	if($stripSlashes) $str = stripslashes($str);	$str = str_replace(" ","&nbsp;",htmlspecialchars($str));		if($wrap) $str = nl2br($str);	return $str;}function time_format($t){	$t= $t[0].$t[1].$t[2].$t[3]."-".$t[4].$t[5]."-".$t[6].$t[7]." ".$t[8].$t[9].":".$t[10].$t[11].":".$t[12].$t[13];	return $t;}function svGetManagers($managers){	if($managers=="") return NULL;	$manager = explode(" ",$managers);	$manArr = array();	$manStr = "";	$manHtmlStr = "";	for($i = 0 ;$i < count($manager);$i++)	{		$manager[$i] = trim(ltrim($manager[$i]));		if(!$manager[$i]) continue;		$manStr[] = $manager[$i];		if($manStr!="")			$manStr .= "|".$manager[$i];		else			$manStr = $manager[$i];		$manHtmlStr .= "<a href=\"/bbsqry.php?userid=".htmlspecialchars($manager[$i])."\">".htmlspecialchars($manager[$i])."</a>";		}	return array("MANARR" => $manArr , "MANSTR" => $manStr , "HTMLSTR" => $manHtmlStr);}function svGetProbEtems($etems,$proType){	if($proType!=4)	{		$etem = explode("|",$etems);		$etemArr = array();		for($i = 0 ;$i < count($etem) ; $i ++)		{			$etem[$i] = ltrim(trim($etem[$i]));			if($etem[$i]=="") continue;			$etemArr[] = $etem[$i];			}	}	else		$etemArr[0] = trim(ltrim($etems));	return $etemArr;}	function svPostAnnouce($board,$svInfor){		$brdArr=array();		$boardID= bbs_getboard($board,$brdArr);		if( $boardID == 0) die("指定的版面不存在!");				$title = "[通知] 举办系统投票:".$svInfor[subject];		$content = "【此篇文章是由自动发信系统所张贴】\n\n".			   "⊙ 投票开启于:".date("D M d H:i:s Y")."  类别:系统投票\n".			   "⊙ 主题:".$svInfor[subject]."\n".			   "⊙ 投票说明:\n\n".$svInfor[desc];						$ret = bbs_postarticle($board, $title, $content, 0 , 0 , 0, 0 );		return $ret;}		class sysVoteAdmin{	var $user ;		function svDelVote($link,$svid)	{		$svid = (int)($svid);		$query = "DELETE FROM sysvote_users WHERE svid = '".$svid."';";		mysql_query($query,$link);		$query = "DELETE FROM sysvote_votes WHERE svid = '".$svid."';";		mysql_query($query,$link);	}		function svEndVote($link,$svid,$annType,$annBoard)	{		global $currentuser,$sysVoteConfig;		$this->user = $currentuser;		$vote = sysvote_load_vote_infor($link,$svid);				//初始化各个变量		$ann = "⊙ 投票开启于:".$vote[created]."  类别:系统投票\n".			"⊙ 主题:".$vote[ori][subject]."\n".			"⊙ 投票说明:\n\n".$vote[ori][description]."\n\n\n".		$voteres = array();		for($i=0 ; $i< count($vote[probs]) ;$i++)		{			$etemNum[$i] = count($vote[probs][$i][etems]);			for($j = 0 ; $j < $etemNum[$i] ;$j++)				$voteres[$i][$j+1]=0;			if($vote[probs][$i][type]==4)				$voteres[$i][0]="本题通过投票征集的意见如下:";			if($vote[probs][$i][type]==2 || $vote[probs][$i][type]==3)			{				$voteres[$i][$etemNum[$i]+1]="本题通过投票征集的意见如下:";			}		}		//进行结果统计		$query = "SELECT * FROM sysvote_users WHERE svid = '".$vote[svid]."' ORDER BY suid";		$result = mysql_query($query,$link);		$voteUserNum = mysql_num_rows($result);		for($k = 0 ; $k < $voteUserNum ; $k ++)		{			$rows = mysql_fetch_array($result);			$userres = explode("|",$rows[voteinfo]);			for($i = 0 ; $i < count($vote[probs]) ; $i ++)			{				if($vote[probs][$i][type]==4)//问答				{					$voteres[$i][0] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($userres[$i]);					}				elseif($vote[probs][$i][type]==1 || $vote[probs][$i][type]==3)//多选				{					$etemres = explode("&",$userres[$i]);					for($l = 0 ; $l < $etemNum[$i] ; $l ++)						$voteres[$i][(int)($etemres[$l])] ++ ;					if($vote[probs][$i][type]==3 && $etemres[count($etemres)-1])						$voteres[$i][$etemNum[$i]+1] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($etemres[count($etemres)-1]);					}				elseif($vote[probs][$i][type]==2) // 单选+问答				{					$etemres = explode("&",$userres[$i]);					$voteres[$i][(int)($etemres[0])] ++ ;					if($etemres[1])						$voteres[$i][$etemNum[$i]+1] .= "\n☆─────────────────────────────────────☆\n ".$rows[userid]." 于 ".time_format($rows[votetime])." 说道: \n".base64_decode($etemres[1]);							}				else // 单选				{					$voteres[$i][(int)($userres[$i])] ++ ;					}							}// i 循环 题目		}// k 循环 , 用户			//生成投票结果		$ann = "⊙ 参与投票的用户数:".$voteUserNum."\n".			"⊙ 投票结果:\n\n\n";		// $res的结构 : 参与投票的用户数量|题目1|...|题目n|文本输出		$res = $voteUserNum;		if($voteUserNum == 0) $voteUserNum = 1;		$probType = array("单项选择","多项选择","单项选择(可发表意见)","多项选择(可发表意见)","问答");		for($i = 0 ; $i < count($vote[probs]) ; $i ++)		{			$ann .= "\n\n\n————————————————┤问题 ".($i+1)."├————————————————\n".				"问题 ".($i+1).":".$vote[probs][$i][prob]."\n".				"类型:".$probType[$vote[probs][$i][type]]."\n";			if($vote[probs][$i][type]==4)			{				$ann .= "\n".$voteres[$i][0]; //问答				$res .= "|".base64_encode($voteres[$i][0]);			}			else			{								$res .= "|";				for($j = 0 ; $j < $etemNum[$i] ;$j++)				{					if($j != 0) $res .= ",";					$res .= $voteres[$i][$j+1];					$ann .= "\n选项 ".($j + 1).":".$vote[probs][$i][etems][$j].						"    票数:".$voteres[$i][$j+1]."  约占".(((int)($voteres[$i][$j+1]*1000 / $voteUserNum) ) / 10)."%";				}// j 循环  选项				if($vote[probs][$i][type]==2 || $vote[probs][$i][type]==3)				{					$ann .= "\n\n".$voteres[$i][$etemNum[$i]+1];					$res .= ",".base64_encode($voteres[$i][$etemNum[$i]+1]);				}			}		}// i 循环   题目		$res .= "|".base64_encode($ann);		$voteLog = $vote[logs]."\n管理员 ".$this->user["userid"]." 于 ".date("Y-m-d H:i:s")." 自 ".$_SERVER["REMOTE_ADDR"]." 结束本次投票;";		$query = "UPDATE sysvote_votes SET active = 0 , results = '".$res."' , logs = '".$voteLog."' WHERE svid = '".$vote[svid]."';";		mysql_query($query,$link);		$query = "DELETE FROM sysvote_users WHERE svid = ".$vote[svid];		mysql_query($query,$link);				if($annType==1)			$annBoard = "vote";		elseif($annType==2)			$annBoard = $sysVoteConfig["BOARD"];		elseif($annType==3)		{			$brdArr=array();			$boardID= bbs_getboard($annBoard,$brdArr);			if( $boardID == 0) 				html_error_quit("指定的版面不存在!");			}		if($annType!=0)		{			$title = "[公告] 系统投票结果";			$content = "【此篇文章是由自动发信系统所张贴】\n\n".$ann;			$ret = bbs_postarticle($annBoard, $title, $content, 0 , 0 , 0, 0 );		}	}		function svCreateVoteStepOne()	{		global $currentuser,$sysVoteConfig;		$this->user = $currentuser;?><center><p align=center><strong>创建系统投票</strong></p><form action="<?php echo $_SERVER["PHP_SELF"]."?act=create&step=2"; ?>" method="post"><table cellspacing=0 cellpadding=5 border=0 class=t1 width=90%>	<tr>		<td class=t2 colspan=2>第一步:设定基本信息</td>	<tr>		<td class=t3>管理员ID</td>		<td class=t5><?php echo $this->user[userid]; ?></td>	</tr>	<tr>		<td class=t3>当前时间</td>		<td class=t5><?php echo date("Y-m-d H:i:s"); ?></td>	</tr>	<tr>		<td class=t3>投票主题</td>		<td class=t5>			<input type="text" name="svsubject" size=50 class=b9 maxlength=255 value="<?php echo rawurldecode($_POST["svsubject"]); ?>">(显示在首页投票主题栏内)		</td>	</tr>	<tr>		<td class=t3>投票说明</td>		<td class=t5>			<textarea cols=50 rows=8 class=b9 name="svdesc"><?php echo rawurldecode($_POST["svdesc"]); ?></textarea>		</td>	</tr>	<tr>		<td class=t3>是否发表投票公告</td>		<td class=t5>			<input type=radio name="svannouce" class=b9 value=1 <?php echo ($_POST["svannouce"]==1)?"checked":""; ?>>在vote版发布公告			<input type=radio name="svannouce" class=b9 value=2 <?php echo ($_POST["svannouce"]==2)?"checked":""; ?>>在<?php echo $sysVoteConfig["BOARD"]; ?>版发布公告			<input type=radio name="svannouce" class=b9 value=0 <?php echo ($_POST["svannouce"]==0)?"checked":""; ?>>不在任何版面发布公告		</td>	</tr>	<tr>		<td class=t3>投票时间</td>		<td class=t5>			<input type="text" name="svtimelong" size=2 class=b9 maxlength=2 value="<?php echo $_POST["svtimelong"]?$_POST["svtimelong"]:7; ?>">天		</td>	</tr>	<tr>		<td class=t3>是否允许匿名用户投票</td>		<td class=t5>			<input type=radio name="svanonymous" class=b9 value=0  <?php echo ($_POST["svanonymous"]==0)?"checked":""; ?>>不允许			<input type=radio name="svanonymous" class=b9 value=1  <?php echo ($_POST["svanonymous"]==1)?"checked":""; ?>>允许		</td>	</tr>	<tr>		<td class=t3>每个IP最多能投票数</td>		<td class=t5>			<input type="text" name="svvotesperip" size=2 class=b9 maxlength=2 value="<?php echo $_POST["svvotesperip"]?$_POST["svvotesperip"]:1; ?>">次(留空表示不限制IP投票数)		</td>	</tr>	<tr>		<td class=t2 colspan=2>			<input type=submit value="下一步>>" class=b9>		</td>	</tr>	<input type="hidden" name="svprobnum"" value="<?php echo (int)($_POST["svprobnum"]); ?>"><?php	for($i = 0 ; $i< (int)($_POST["svprobnum"]) ; $i ++)	{?>		<input type="hidden" name="svprob<?php echo $i + 1; ?>" value="<?php echo $_POST["svprob".($i + 1)]; ?>">	<input type="hidden" name="svprobtype<?php echo $i + 1 ;?>" value="<?php echo (int)($_POST["svprobtype".($i+1)]); ?>">	<input type="hidden" name="svprobetem<?php echo $i + 1 ;?>" value="<?php echo $_POST["svprobetem".($i+1)]; ?>"><?php		}?>	</table></form></center><?php		}		function svCreateVoteStepTwo()	{		global $currentuser,$sysVoteConfig;		$this->user = $currentuser;?><center><p align=center><strong>创建系统投票</strong></p><form name="svs2" id="svs2" action="<?php echo $_SERVER["PHP_SELF"]."?act=create&step=3"; ?>" method="post"><table cellspacing=0 cellpadding=5 class=t1 border=0 width=90%>	<tr><td colspan=2 class=t2>第二步:确认基本信息</td></tr>	<input type="hidden" name="svsubject" value="<?php echo $_POST["svsubject"]; ?>">	<tr>		<td class=t3>投票主题</td>		<td class=t5><?php echo html_format($_POST["svsubject"],FALSE,FALSE); ?>&nbsp;</td>	</tr>	<input type="hidden" name="svdesc" value="<?php echo $_POST["svdesc"]; ?>">	<tr>		<td class=t3>投票说明</td>		<td class=t5><?php echo html_format($_POST["svdesc"],TRUE,FALSE); ?>&nbsp;</td>	</tr>	<input type="hidden" name="svannouce" value="<?php echo (int)($_POST["svannouce"]); ?>">	<tr>		<td class=t3>投票公告</td>		<td class=t5>		<?php			switch($_POST["svannouce"])			{				case 1:					echo "在Vote版发布公告";					break;				case 2:					echo "在".$sysVoteConfig["BOARD"]."版发布公告";					break;				default:					echo "不发布投票公告";			}		?>		</td>	</tr>	<input type="hidden" name="svtimelong" value="<?php echo (int)($_POST["svtimelong"]); ?>">	<tr>		<td class=t3>投票时间</td>		<td class=t5><?php echo (int)($_POST["svtimelong"]); ?>&nbsp;</td>	</tr>	<input type="hidden" name="svanonymous" value="<?php echo (int)($_POST["svanonymous"]); ?>">	<tr>		<td class=t3>是否允许匿名投票</td>		<td class=t5><?php echo ((int)($_POST["svanonymous"])==0)?"不允许":"允许"; ?></td>	</tr>	<input type="hidden" name="svvotesperip" value="<?php echo (int)($_POST["svvotesperip"]); ?>">	<tr>		<td class=t3>每个IP限制投票次数</td>		<td class=t5><?php echo ((int)($_POST["svvotesperip"])==0)?"不限制":$_POST["svvotesperip"]."次"; ?></td>	</tr>	<tr>		<td class=t2 colspan=2>请核对上面投票信息,确认无误后请输入本次投票问题个数,单击"下一步";否则返回"上一步进行修改.</td>	</tr>	<tr>		<td class=t3>问题个数</td>		<td class=t5><input type="text" class="b9" name="svprobnum" value="<?php echo max(1,(int)($_POST["svprobnum"])); ?>" size="3" maxlength="3">个</td>	</tr>	<tr>		<td class=t2 colspan=2>		<input type="button" value="<<上一步" class="b9" onclick="document.svs2.action='<?php echo $_SERVER["PHP_SELF"]; ?>?act=create&step=1';document.svs2.submit();">		<input type="submit" value="下一步>>" class="b9">		</td>	</tr></table><?php	for($i = 0 ; $i< (int)($_POST["svprobnum"]) ; $i ++)	{?>		<input type="hidden" name="svprob<?php echo $i + 1; ?>" value="<?php echo $_POST["svprob".($i + 1)]; ?>">	<input type="hidden" name="svprobtype<?php echo $i + 1 ;?>" value="<?php echo (int)($_POST["svprobtype".($i+1)]); ?>">	<input type="hidden" name="svprobetem<?php echo $i + 1 ;?>" value="<?php echo $_POST["svprobetem".($i+1)]; ?>"><?php		}?>	</form>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?