dsql = $GLOBALS['dsql'];
$this->VoteInfos = $this->dsql->GetOne("SELECT * FROM `#@__vote` WHERE aid='$aid'");
$this->VoteNotes = array();
$this->VoteCount = 0;
$this->VoteID = $aid;
if (!is_array($this->VoteInfos)) {
return;
}
$dtp = new DedeTagParse();
$dtp->SetNameSpace("v", "<", ">");
$dtp->LoadSource($this->VoteInfos['votenote']);
if (is_array($dtp->CTags)) {
foreach ($dtp->CTags as $ctag) {
$this->VoteNotes[$ctag->GetAtt('id')]['count'] = $ctag->GetAtt('count');
$this->VoteNotes[$ctag->GetAtt('id')]['name'] = trim($ctag->GetInnerText());
$this->VoteCount++;
}
}
$dtp->Clear();
}
//兼容php4的构造函数
function DedeVote($aid)
{
$this->__construct($aid);
}
function Close()
{
}
/**
* 获得投票项目总投票次数
*
* @access public
* @return int
*/
function GetTotalCount()
{
if (!empty($this->VoteInfos["totalcount"])) {
return $this->VoteInfos["totalcount"];
} else {
return 0;
}
}
/**
* 增加指定的投票节点的票数
*
* @access public
* @param int $aid 投票ID
* @return string
*/
function AddVoteCount($aid)
{
if (isset($this->VoteNotes[$aid])) {
$this->VoteNotes[$aid]['count']++;
}
}
/**
* 获得项目的投票表单
*
* @access public
* @param int $lineheight 行高
* @param string $tablewidth 表格宽度
* @param string $titlebgcolor 标题颜色
* @param string $titlebackgroup 标题背景
* @param string $tablebg 表格背景
* @param string $itembgcolor 项目背景
* @return string
*/
function GetVoteForm($lineheight = 30, $tablewidth = "100%", $titlebgcolor = "#EDEDE2", $titlebackgroup = "", $tablebg = "#ffffff", $itembgcolor = "#ffffff")
{
//省略参数
if ($lineheight == "") {
$lineheight = 26;
}
if ($tablewidth == "") {
$tablewidth = "100%";
}
if ($titlebgcolor == "") {
$titlebgcolor = "#98C6EF";
}
if ($titlebackgroup != "") {
$titlebackgroup = "background='$titlebackgroup'";
}
if ($tablebg == "") {
$tablebg = "#ffffff";
}
if ($itembgcolor == "") {
$itembgcolor = "#ffffff";
}
$items = "
\r\n";
return $items;
}
/**
* 保存投票数据
* 请不要在输出任何内容之前使用SaveVote()方法!
*
* @access public
* @param string $voteitem 投票项目
* @return string
*/
function SaveVote($voteitem)
{
global $ENV_GOBACK_URL, $file, $memberID, $row, $content;
if (empty($voteitem)) {
return '您没选中任何项目';
}
$items = '';
//检查投票是否已过期
$nowtime = time();
if ($nowtime > $this->VoteInfos['endtime']) {
ShowMsg('投票已经过期', $ENV_GOBACK_URL);
exit();
}
if ($nowtime < $this->VoteInfos['starttime']) {
ShowMsg('投票还没有开始', $ENV_GOBACK_URL);
exit();
}
//检测游客是否已投过票
if (isset($_COOKIE['VOTE_MEMBER_IP'])) {
if ($_COOKIE['VOTE_MEMBER_IP'] == $_SERVER['REMOTE_ADDR']) {
ShowMsg('您已投过票', $ENV_GOBACK_URL);
exit();
} else {
setcookie('VOTE_MEMBER_IP', $_SERVER['REMOTE_ADDR'], time() * $row['spec'] * 3600, '/');
}
} else {
setcookie('VOTE_MEMBER_IP', $_SERVER['REMOTE_ADDR'], time() * $row['spec'] * 3600, '/');
}
//检查用户是否已投过票
$nowtime = time();
$VoteMem = $this->dsql->GetOne("SELECT * FROM #@__vote_member WHERE voteid = '$this->VoteID' and userid='$memberID'");
if (!empty($memberID)) {
if (isset($VoteMem['id'])) {
$voteday = date("Y-m-d", $VoteMem['uptime']);
$day = strtotime("-".$row['spec']." day");
$day = date("Y-m-d", $day);
if ($day < $voteday) {
ShowMsg('在'.$row['spec'].'天内不能重复投票', $ENV_GOBACK_URL);
exit();
} else {
$query = "UPDATE #@__vote_member SET uptime='$nowtime' WHERE voteid='$this->VoteID' AND userid='$memberID'";
if ($this->dsql->ExecuteNoneQuery($query) == false) {
ShowMsg('插入数据过程中出现错误', $ENV_GOBACK_URL);
exit();
}
}
} else {
$query = "INSERT INTO #@__vote_member(id,voteid,userid,uptime) VALUES('','$this->VoteID','$memberID','$nowtime')";
if ($this->dsql->ExecuteNoneQuery($query) == false) {
ShowMsg('插入数据过程中出现错误', $ENV_GOBACK_URL);
exit();
}
}
}
//必须存在投票项目
if ($this->VoteCount > 0) {
foreach ($this->VoteNotes as $k => $v) {
if ($this->VoteInfos['ismore'] == 0) {
//单选项
if ($voteitem == $k) {
$this->VoteNotes[$k]['count']++;
break;
}
} else {
//多选项
if (is_array($voteitem) && in_array($k, $voteitem)) {
$this->VoteNotes[$k]['count']++;
}
}
}
foreach ($this->VoteNotes as $k => $arr) {
$items .= "".$arr['name']."\r\n";
}
}
$this->dsql->ExecuteNoneQuery("UPDATE `#@__vote` SET totalcount='".($this->VoteInfos['totalcount'] + 1)."',votenote='".addslashes($items)."' WHERE aid='".$this->VoteID."'");
return "投票成功";
}
/**
* 获得项目的投票结果
*
* @access public
* @param string $tablewidth 表格宽度
* @param string $lineheight 行高
* @param string $tablesplit 表格分隔
* @return string
*/
function GetVoteResult($tablewidth = "600", $lineheight = "24", $tablesplit = "40%")
{
$totalcount = $this->VoteInfos['totalcount'];
if ($totalcount == 0) {
$totalcount = 1;
}
$res = "\r\n";
$res .= " | |
\r\n";
$i = 1;
foreach ($this->VoteNotes as $k => $arr) {
$res .= "".$i."、".$arr['name']." | ";
$c = $arr['count'];
$res .= " |
\r\n";
$i++;
}
$res .= " | |
\r\n";
$res .= "
\r\n";
return $res;
}
}//End Class