148 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
| =====================================================
 | |
|  DLE Forum - by DLE Files Group
 | |
| -----------------------------------------------------
 | |
|  http://dle-files.ru/
 | |
| -----------------------------------------------------
 | |
|  File: poll.php
 | |
| =====================================================
 | |
|  Copyright (c) 2008,2010 DLE Files Group
 | |
| =====================================================
 | |
| */
 | |
| 
 | |
| include 'init.php';
 | |
| 
 | |
| function votes ($all, $ansid) {
 | |
| 
 | |
| 	$data = array();
 | |
| 	$alldata = array();
 | |
| 
 | |
|   if ($all !="") {
 | |
|      $all = explode("|", $all);
 | |
|  
 | |
|      foreach ($all as $vote) {
 | |
|         list($answerid, $answervalue) = explode(":", $vote);
 | |
| 		$data[$answerid] = intval($answervalue);
 | |
|       }
 | |
|   }
 | |
| 
 | |
|     foreach ($ansid as $id) {
 | |
| 		$data[$id] ++;
 | |
| 	}
 | |
| 
 | |
|     foreach ($data as $key => $value) {
 | |
| 		$alldata[] = intval($key).":".intval($value);
 | |
| 	}
 | |
| 
 | |
| 	$alldata = implode("|", $alldata);
 | |
|  
 | |
|    return $alldata;
 | |
| }
 | |
| 
 | |
| function get_votes ($all) {
 | |
| 
 | |
| 	$data = array();
 | |
| 
 | |
|   if ($all != "") {
 | |
|      $all = explode("|", $all);
 | |
|  
 | |
|      foreach ($all as $vote) {
 | |
|         list($answerid, $answervalue) = explode(":", $vote);
 | |
| 		$data[$answerid] = intval($answervalue);
 | |
|       }
 | |
|   }
 | |
| 
 | |
|    return $data;
 | |
| }
 | |
| 
 | |
|     $topic_id = intval($_REQUEST['topic_id']);
 | |
|     $answers = explode(" ", trim($_REQUEST['answer']));
 | |
| 
 | |
| 	$buffer = "";
 | |
| 	$vote_skin = strip_tags($_REQUEST['vote_skin']);
 | |
| 	$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
 | |
| 
 | |
| 	if ($is_logged)
 | |
| 		$log_id = intval($member_id['user_id']);
 | |
| 	else
 | |
| 		$log_id = $_IP;
 | |
| 
 | |
|     $poll = $db->super_query("SELECT * FROM " . PREFIX . "_forum_topics WHERE tid = '{$topic_id}'");
 | |
|     $log  = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_forum_poll_log WHERE topic_id = '{$topic_id}' AND member ='{$log_id}'");
 | |
| 
 | |
| 	if ($log['count'] AND $_REQUEST['action'] != "list") $_REQUEST['action'] = "results";
 | |
| 	$votes = "";
 | |
| 
 | |
|   if ($_REQUEST['action'] == "vote") {
 | |
| 
 | |
| 	$votes = votes ($poll['answer'], $answers);
 | |
| 	$db->query("UPDATE  ".PREFIX."_forum_topics set answer='$votes', poll_count=poll_count+".count($answers)." WHERE tid = '{$topic_id}'");
 | |
| 	$db->query("INSERT INTO ".PREFIX."_forum_poll_log (topic_id, member) VALUES('{$topic_id}', '$log_id')");
 | |
| 
 | |
| 	$_REQUEST['action'] = "results";
 | |
|   } 
 | |
| 
 | |
|   if ($_REQUEST['action'] == "results")	{
 | |
| 
 | |
|    if ($votes == "") {$votes = $poll['answer']; $allcount = $poll['poll_count'];} else { $allcount = count($answers) + $poll['poll_count']; }
 | |
| 
 | |
|    $answer = get_votes ($votes);
 | |
|    $body  = explode("<br />", stripslashes($poll['poll_body']));
 | |
|    $pn = 0;
 | |
| 
 | |
| 	for ($i = 0; $i < sizeof($body); $i++) {
 | |
| 
 | |
|      $num = $answer[$i];
 | |
| 
 | |
|      if (!$num) $num = 0;
 | |
| 
 | |
| 	 ++$pn; if ($pn > 5) $pn = 1;
 | |
| 
 | |
| 	 if ($allcount != 0) $proc = (100 * $num) / $allcount;
 | |
| 	 else $proc = 0;
 | |
| 
 | |
|      $proc = round($proc, 0);
 | |
| 
 | |
| $buffer .= <<<HTML
 | |
| {$body[$i]} - {$num} ({$proc}%)<br />
 | |
| <img src="{$config['http_home_url']}templates/{$vote_skin}/images/poll{$pn}.gif" height="10" width="{$proc}%" style="border:1px solid black"><br />
 | |
| HTML;
 | |
| 
 | |
| 
 | |
| 	}
 | |
| 
 | |
|   } 
 | |
|   elseif ($_REQUEST['action'] == "list") {
 | |
| 
 | |
|    $body  = explode("<br />", stripslashes($poll['poll_body']));
 | |
| 
 | |
| 	if (!$poll['multiple']){
 | |
| 
 | |
| 		for ($v = 0; $v < sizeof($body); $v++) {
 | |
| 			if (!$v) $sel = "checked"; else $sel = "";
 | |
| 
 | |
| $buffer .= <<<HTML
 | |
| <div><input name="dle_poll_votes" id="dle_poll_votes" type="radio" $sel value="{$v}"><label for="dle_poll_votes">{$body[$v]}</label></div>
 | |
| HTML;
 | |
| 
 | |
| 		}
 | |
| 	} else {
 | |
| 
 | |
| 		for ($v = 0; $v < sizeof($body); $v++) {
 | |
| 
 | |
| $buffer .= <<<HTML
 | |
| <div><input name="dle_poll_votes[]" id="dle_poll_votes" type="checkbox" value="{$v}"><label for="dle_poll_votes">{$body[$v]}</label></div>
 | |
| HTML;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 
 | |
|  } else die("error");
 | |
| 
 | |
| 
 | |
| @header("Content-type: text/css; charset=".$config['charset']);
 | |
| echo $buffer;
 | |
| ?>
 |