162 lines
4.2 KiB
PHP
162 lines
4.2 KiB
PHP
|
<?php
|
||
|
@session_start();
|
||
|
@error_reporting( E_ALL ^ E_NOTICE );
|
||
|
@ini_set( 'display_errors', true );
|
||
|
@ini_set( 'html_errors', false );
|
||
|
@ini_set( 'error_reporting', E_ALL ^ E_NOTICE );
|
||
|
|
||
|
define( 'DATALIFEENGINE', true );
|
||
|
define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, -12 ) );
|
||
|
define( 'SYSTEM_DIR', ROOT_DIR . '/system' );
|
||
|
|
||
|
include SYSTEM_DIR . '/data/config.php';
|
||
|
require_once SYSTEM_DIR . '/classes/mysql.php';
|
||
|
require_once SYSTEM_DIR . '/data/dbconfig.php';
|
||
|
require_once SYSTEM_DIR . '/modules/functions.php';
|
||
|
|
||
|
$user_group = $cache->get( "usergroup" );
|
||
|
if( ! $user_group ) {$user_group = array ();
|
||
|
$db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" );
|
||
|
while ( $row = $db->get_row() ) {$user_group[$row['id']] = array ();
|
||
|
foreach ( $row as $key => $value ) {$user_group[$row['id']][$key] = stripslashes($value);}
|
||
|
}
|
||
|
$cache->set( "usergroup", $user_group );
|
||
|
$db->free();
|
||
|
}
|
||
|
|
||
|
require_once SYSTEM_DIR . '/modules/sitelogin.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;
|
||
|
}
|
||
|
|
||
|
$news_id = intval( $_REQUEST['news_id'] );
|
||
|
$answers = explode( " ", trim( $_REQUEST['answer'] ) );
|
||
|
|
||
|
$buffer = "";
|
||
|
$vote_skin = trim(totranslit( $_REQUEST['vote_skin'], false, false));
|
||
|
$_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 . "_poll WHERE news_id = '{$news_id}'" );
|
||
|
$log = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_poll_log WHERE news_id = '{$news_id}' AND member ='{$log_id}'" );
|
||
|
|
||
|
if( $log['count'] and $_REQUEST['action'] != "list" ) $_REQUEST['action'] = "results";
|
||
|
if($_REQUEST['action'] != "list" AND !$user_group[$member_id['user_group']]['allow_poll']) $_REQUEST['action'] = "results";
|
||
|
|
||
|
$votes = "";
|
||
|
|
||
|
if( $_REQUEST['action'] == "vote" ) {
|
||
|
$votes = votes( $poll['answer'], $answers );
|
||
|
$db->query( "UPDATE " . PREFIX . "_poll set answer='$votes', votes=votes+" . count( $answers ) . " WHERE news_id = '{$news_id}'" );
|
||
|
$db->query( "INSERT INTO " . PREFIX . "_poll_log (news_id, member) VALUES('{$news_id}', '$log_id')" );
|
||
|
|
||
|
$_REQUEST['action'] = "results";
|
||
|
}
|
||
|
|
||
|
if( $_REQUEST['action'] == "results" ) {
|
||
|
if( $votes == "" ) {
|
||
|
$votes = $poll['answer'];
|
||
|
$allcount = $poll['votes'];
|
||
|
} else {
|
||
|
$allcount = count( $answers ) + $poll['votes'];
|
||
|
}
|
||
|
|
||
|
$answer = get_votes( $votes );
|
||
|
$body = explode( "<br />", stripslashes( $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, 2 );
|
||
|
|
||
|
$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;" alt="" /><br />
|
||
|
HTML;
|
||
|
}
|
||
|
|
||
|
} elseif( $_REQUEST['action'] == "list" ) {
|
||
|
|
||
|
$body = explode( "<br />", stripslashes( $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" type="radio" $sel value="{$v}" /> {$body[$v]}</div>
|
||
|
HTML;
|
||
|
|
||
|
}
|
||
|
} else {
|
||
|
|
||
|
for($v = 0; $v < sizeof( $body ); $v ++) {
|
||
|
|
||
|
$buffer .= <<<HTML
|
||
|
<div><input name="dle_poll_votes[]" type="checkbox" value="{$v}" /> {$body[$v]}</div>
|
||
|
HTML;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
} else
|
||
|
die( "error" );
|
||
|
|
||
|
@header( "Content-type: text/html; charset=" . $config['charset'] );
|
||
|
echo $buffer;
|
||
|
?>
|