public function index() { $id = intval($this->params['id']); try { $vote = new Vote($id); } catch (VoteNullException $e) { $this->error("未知的投票"); } $u = User::getInstance(); if ($this->RequestHandler->isPost()) { $this->requestLogin(); if ($vote->isDeleted()) { $this->error("此投票已删除"); } if ($vote->isEnd()) { $this->error("此投票已截止"); } if ($vote->getResult($u->userid) !== false) { $this->error("你已经投过票了"); } if (!isset($this->params['form']['vote'])) { $this->error("未知的参数"); } if ($vote->type == "0") { $viid = intval($this->params['form']['vote']); if (!$vote->hasItem($viid)) { $this->error("未知的选项,投票失败"); } $vote->vote($u->userid, $viid); } else { if ($vote->type == "1") { $items = array_values((array) $this->params['form']['vote']); if (count($items) == 0) { $this->error("请至少选择一个选项"); } if (count($items) > $vote->limit && $vote->limit != 0) { $this->error("投票个数超过限制,投票失败"); } foreach ($items as $v) { if (!$vote->hasItem(intval($v))) { $this->error("未知的选项,投票失败"); } } $vote->vote($u->userid, $items); } else { $this->error("错误的投票"); } } } if ($vote->isDeleted() && !$u->isAdmin()) { $this->error("此投票已删除"); } $wrapper = Wrapper::getInstance(); $data['vote'] = $wrapper->vote($vote, array('items' => true)); $this->set('data', $data); }
} </style> </head> <body> <?php include 'vote.php'; $vote = new Vote(); $action = ''; //get action if (isset($_REQUEST['action'])) { $action = $_REQUEST['action']; } //vote and show results if ('vote' == $action) { //vote $vote->vote($_REQUEST['id']); //show results $total = $vote->getTotal(); echo '<ul>'; foreach ($vote->showResults() as $vote) { $percent = 0; if (isset($vote['number']) && !empty($vote['number'])) { $percent = $vote['number'] / $total * 100; } echo '<li class="result">'; echo '<span class="bar" style="width:' . $percent . '%;"> </span>'; echo '<span class="label">' . $vote['name'] . ' (<strong>' . $percent . '%</strong>)</span>'; echo '</li>'; } echo '</ul>'; //show options
public function ajax_vote() { if (!$this->RequestHandler->isPost()) { $this->error(ECode::$SYS_REQUESTERROR); } $this->requestLogin(); if (!isset($this->params['vid'])) { $this->error("未知的投票"); } $vid = intval($this->params['vid']); try { $vote = new Vote($vid); } catch (VoteNullException $e) { $this->error("未知的投票"); } $u = User::getInstance(); if ($vote->isDeleted() && !$u->isAdmin()) { $this->error("此投票已删除"); } $myres = $vote->getResult($u->userid); if ($myres !== false) { $this->error("你已经投过票了"); } if ($vote->isDeleted()) { $this->error("此投票已删除"); } if ($vote->isEnd()) { $this->error("此投票已截止"); } if ($vote->type == "0") { @($viid = $this->params['form']['v' . $vote->vid]); if (!$vote->hasItem($viid)) { $this->error("未知的选项,投票失败"); } $vote->vote($u->userid, $viid); } else { if ($vote->type == "1") { $items = array_keys($this->params['form']); if (count($items) > $vote->limit && $vote->limit != 0) { $this->error("投票个数超过限制,投票失败"); } $items = preg_replace("/v{$vote->vid}_/", "", $items); foreach ($items as $v) { if (!$vote->hasItem($v)) { $this->error("未知的选项,投票失败"); } } $vote->vote($u->userid, $items); } else { $this->error("错误的投票"); } } }
require_once '../class/nl-auth-class.php'; require_once '../class/nl-vote-class.php'; require_once 'api_headers.php'; try { if (is_get()) { if (0 >= ($newsID = _get("newsID", 0))) { throw new Exception("could not find news by ID", -1); } $voteObj = new Vote($newsID); echo $voteObj->getJson(); } else { if (is_post()) { if (0 >= ($newsID = _get("newsID", 0))) { throw new Exception("could not find news by ID", -1); } $voteType = _post("voteType", null); if ($voteType != "agree" && $voteType != "disagree") { throw new Exception("unknown vote type " . $voteType, -1); } $auth = Auth::getInstance(); if (!$auth->canVote()) { throw new Exception("current user cannot vote", -1); } $voteObj = new Vote($newsID); echo $voteObj->vote($voteType, $auth->getUserID())->getJson(); } } } catch (Exception $e) { $result = array("errCode" => $e->getCode(), "errMessage" => $e->getMessage()); echo json_encode($result); }